Linguagem C - FillRect, ReleaseDC, DeleteObject..

Linguagem C - FillRect, ReleaseDC, DeleteObject..
#include <windows.h> #include <stdlib.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); void DrawRectangle(HWND); int cxClient, cyClient; HMENU hMenu, sub; int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT("RandRect"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = GetSysColorBrush(COLOR_3DDKSHADOW); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; if(!RegisterClass(&wndclass)) { MessageBox(NULL,TEXT("Requer Windows NT!"),szAppName,MB_ICONERROR); return 0; } hwnd = CreateWindow( szAppName, TEXT("Random Rectangles"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, NULL, hInstance, NULL ); ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while(TRUE) { if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if(msg.message == WM_QUIT) break; TranslateMessage(&msg); DispatchMessage(&msg); } else { DrawRectangle(hwnd); } } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { switch(iMsg) { case WM_SIZE: cxClient = LOWORD(lParam); cyClient = LOWORD(lParam); return 0; case WM_CREATE: hMenu = CreateMenu(); sub = CreateMenu(); AppendMenu(hMenu, MF_POPUP, (UINT_PTR) sub, "Arquivo"); AppendMenu(hMenu, MF_STRING, NULL, "Editar"); AppendMenu(sub, MF_STRING, NULL, "Copy"); AppendMenu(sub, MF_STRING, NULL, "Paste"); SetMenu(hwnd, hMenu); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, iMsg, wParam, lParam); } void DrawRectangle(HWND hwnd) { HBRUSH hBrush; HDC hdc; RECT rect; if(cxClient == 0 || cyClient == 0) return; SetRect(&rect, rand()%cxClient, rand()%cyClient, rand()%cxClient, rand()%cyClient); hBrush = (HBRUSH) CreateSolidBrush(RGB(rand() % 256, rand() % 256, rand() % 256)); hdc = GetDC(hwnd); FillRect(hdc, &rect, hBrush); ReleaseDC(hwnd, hdc); (BOOL) DeleteObject(hBrush); }

Comentários