#include #include HFONT tf; LRESULT WINAPI MainWndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { WNDCLASS wc; MSG msg; HWND hWnd; wc.lpszClassName = "HelloClass"; wc.lpfnWndProc = MainWndProc; wc.style = CS_VREDRAW | CS_HREDRAW; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); wc.lpszMenuName = NULL; wc.cbClsExtra = 0; wc.cbWndExtra = 0; if (RegisterClass(&wc) == 0) { fprintf(stderr, "RegisterClass failed (last error 0x%X)\n", GetLastError()); return(1); } hWnd = CreateWindow("HelloClass", "Hello World", WS_OVERLAPPEDWINDOW|WS_HSCROLL|WS_VSCROLL, 0, 0, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { fprintf(stderr, "CreateWindow failed (last error 0x%X)\n", GetLastError()); return(1); } tf = CreateFontA(14, 0, 0, TA_BASELINE, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH|FF_DONTCARE, "Timmons"); ShowWindow(hWnd, nCmdShow); while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } DeleteObject(tf); return msg.wParam; } LRESULT CALLBACK MainWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hDC; RECT clr, wir; char spr[100], sir[100]; switch(msg) { case WM_LBUTTONUP: { ULONG x, y; RECT Rect; hDC = GetDC(hWnd); x = LOWORD(lParam); y = HIWORD(lParam); Rect.left = x - 5; Rect.top = y - 5; Rect.right = x + 5; Rect.bottom = y + 5; FillRect(hDC, &Rect, CreateSolidBrush(RGB(0xFF, 0x00, 0x00))); ReleaseDC(hWnd, hDC); break; } case WM_PAINT: hDC = BeginPaint(hWnd, &ps); SelectObject(hDC, tf); TextOut(hDC, 10, 10, "Hello World from ReactOS!", strlen("Hello World from ReactOS!")); GetClientRect(hWnd, &clr); GetWindowRect(hWnd, &wir); sprintf(spr, "%d,%d,%d,%d ", clr.left, clr.top, clr.right, clr.bottom); sprintf(sir, "%d,%d,%d,%d ", wir.left, wir.top, wir.right, wir.bottom); TextOut(hDC, 10, 30, spr, 20); TextOut(hDC, 10, 50, sir, 20); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; }