Új hozzászólás Aktív témák
-
Tomi_78
aktív tag
válasz
dabadab
#4305
üzenetére
Pedig tényleg nem használok semmi extrát a programozáshoz. De inkább be is szúrom kis programomat (175 sor talán még belefér a fórumba; ha nem, hát szóljatok érte, hogy az ilyet mellőzzem legközelebb), hogy lássátok. Persze így azt is látni, hogy sokminden még nem világos benne nekem sem; ezeket megjegyzésbe írtam.
#if defined(UNICODE) && !defined(_UNICODE)#define _UNICODE#elif defined(_UNICODE) && !defined(UNICODE)#define UNICODE#endif#include <tchar.h>#include <windows.h>/* Declare Windows procedure */LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);/* Make the class name into a global variable */TCHAR szClassName[ ] = _T("CodeBlocksWindowsApp");int xhely=50,yhely=5,xseb=8,yseb=8;UINT idozito;RECT ablak;const unsigned int idozito1=1;int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nCmdShow){HWND hwnd; /* This is the handle for our window */MSG messages; /* Here messages to the application are saved */WNDCLASSEX wincl; /* Data structure for the windowclass *//* The Window structure */wincl.hInstance = hThisInstance;wincl.lpszClassName = szClassName;wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */wincl.style = CS_DBLCLKS; /* Catch double-clicks */wincl.cbSize = sizeof (WNDCLASSEX);/* Use default icon and mouse-pointer */wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);wincl.hCursor = LoadCursor (NULL, IDC_ARROW);wincl.lpszMenuName = NULL; /* No menu */wincl.cbClsExtra = 0; /* No extra bytes after the window class */wincl.cbWndExtra = 0; /* structure or the window instance *//* Use Windows's default colour as the background of the window */wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;/* Register the window class, and if it fails quit the program */if (!RegisterClassEx (&wincl))return 0;/* The class is registered, let's create the program*/hwnd = CreateWindowEx (0, /* Extended possibilites for variation */szClassName, /* Classname */_T("Jatekom"), /* Title Text */WS_OVERLAPPEDWINDOW, /* default window */CW_USEDEFAULT, /* Windows decides the position */CW_USEDEFAULT, /* where the window ends up on the screen */544, /* The programs width */375, /* and height in pixels */HWND_DESKTOP, /* The window is a child-window to desktop */NULL, /* No menu */hThisInstance, /* Program Instance handler */NULL /* No Window Creation data */);/* Make the window visible on the screen */ShowWindow (hwnd, nCmdShow);/* Run the message loop. It will run until GetMessage() returns 0 */while (GetMessage (&messages, NULL, 0, 0)){/* Translate virtual-key messages into character messages */TranslateMessage(&messages);/* Send message to WindowProcedure */DispatchMessage(&messages);}/* The program return-value is 0 - The value that PostQuitMessage() gave */return messages.wParam;}/* This function is called by the Windows function DispatchMessage() */LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){HDC hdc; //handle to device context a jelentése, de mire is jó?hdc = GetDC(hwnd);static HBITMAP kep;BITMAP bitmapkep;HDC hdcMem;HGDIOBJ oldBitmap;PAINTSTRUCT ps; //előző helyről törléshezswitch (message) /* handle the messages */{case WM_CREATE:kep = (HBITMAP) LoadImageW(NULL, L".\\kek_labda.bmp",IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);if (kep == NULL) {MessageBoxW(hwnd, L"Nem tudtam betolteni a kepet!", L"Error", MB_OK);}/*else {System::Drawing::Bitmap::kep.MakeTransparent();};*/idozito = SetTimer(hwnd,idozito1,100,(TIMERPROC)NULL);break;case WM_KEYDOWN:switch (wParam) {case VK_LEFT: xhely-=4; InvalidateRect(hwnd, NULL, true); break;case VK_RIGHT: xhely+=4; InvalidateRect(hwnd, NULL, true); break;case VK_UP: yhely-=4; InvalidateRect(hwnd, NULL, true); break;case VK_DOWN: yhely+=4; InvalidateRect(hwnd, NULL, true); break;}break;case WM_PAINT:hdcMem = CreateCompatibleDC(hdc); //ez mire jó?oldBitmap = SelectObject(hdcMem, kep); //és ez?GetObject(kep, sizeof(bitmapkep), &bitmapkep); //beolvassa a kep változóba a bitmap adatait(?)BeginPaint(hwnd, &ps); //előző helyről törléshezBitBlt(hdc, xhely, yhely, bitmapkep.bmWidth, bitmapkep.bmHeight,hdcMem, 0, 0, SRCCOPY); //ez rendben van: kirajzolás/*BLENDFUNCTION pixelblend = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };AlphaBlend(hdc, 0, 0, bitmapkep.bmWidth, bitmapkep.bmHeight, hdcMem, 0, 0, bitmapkep.bmWidth, bitmapkep.bmHeight, pixelblend);*/EndPaint(hwnd, &ps); //előző helyről törléshezSelectObject(hdcMem, oldBitmap); //ez is mit csinál?DeleteDC(hdcMem); //???TextOut(hdc, 10, 10, TEXT("Szia!"),5); //ez is oké: kiírok egy szöveget.GetWindowRect(hwnd, &ablak);char szoveg[30];itoa(ablak.right,szoveg,10);TextOut(hdc, 50, 10, szoveg,5);itoa(xhely+8+bitmapkep.bmWidth,szoveg,10);TextOut(hdc, 100, 10, szoveg,5);Rectangle(hdc, 50, 50, 200, 100); //meg ez is: téglalap rajzolásaReleaseDC(hwnd, hdc); //ez minek kell?break;case WM_TIMER:switch (wParam){case idozito1:GetWindowRect(hwnd, &ablak);xhely = xhely + xseb;yhely = yhely + yseb;if (xhely+xseb+bitmapkep.bmWidth>ablak.right-ablak.left-bitmapkep.bmWidth) {xseb = -1*abs(xseb);}elseif (xhely<0) {xseb = abs(xseb);};if (yhely+yseb+bitmapkep.bmHeight>ablak.bottom) {yseb = -1*abs(yseb);}elseif (yhely<0) {yseb = abs(yseb);};InvalidateRect(hwnd, NULL, true);break;}break;case WM_DESTROY:KillTimer(hwnd,idozito1);PostQuitMessage (0); /* send a WM_QUIT to the message queue */break;default: /* for messages that we don't deal with */return DefWindowProc (hwnd, message, wParam, lParam);}return 0;}
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Így kezdődik a Vampire: The Masquerade - Bloodlines 2
- Elon Musk járatára váltott jegyet a legújabb magyar műhold
- Samsung Galaxy Note20 Ultra - a tollnak nincs ellenfele
- gban: Ingyen kellene, de tegnapra
- A Chrome egyeduralmára tör a ChatGPT böngészője
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Sweet.tv - internetes TV
- Path of Exile (ARPG)
- Autós topik
- Samsung Galaxy S24 - nos, Exynos
- További aktív témák...
- HIBÁTLAN iPhone 14 256GB Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS3534
- 2db UK billes (146 / 147) - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4090
- Lenovo Thinkpad 13 G2 Intel i5-7200 laptop (hibás)
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- Gamer PC-Számítógép! Csere-Beszámítás! I7 6700 / Rog RX580 8GB / 32GB DDR4 / 500GB SSD
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Laptopműhely Bt.
Város: Budapest

