#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
Postar um comentário