1 /* Based on Radoslaw Sokol's static control test. */ 2 #include <windows.h> 3 4 static LPSTR BUTTON_CLASS = "BUTTON"; 5 static LPSTR TEST_WND_CLASS = "TESTWND"; 6 7 #ifdef NDEBUG 8 #define DPRINT(s) (void)0 9 #else 10 #define DPRINT(s) OutputDebugStringA("BUTTONTEST: " s "\n") 11 #endif 12 13 HINSTANCE AppInstance = NULL; 14 15 LRESULT WmCreate( 16 HWND Wnd) 17 { 18 DPRINT("WM_CREATE (enter)."); 19 DPRINT("test 1"); 20 CreateWindowEx(0, BUTTON_CLASS, "PushButton", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE, 21 10, 10, 150, 30, Wnd, NULL, AppInstance, NULL); 22 DPRINT("test 2"); 23 CreateWindowEx(0, BUTTON_CLASS, "DefPushButton", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE, 24 10, 40, 150, 30, Wnd, NULL, AppInstance, NULL); 25 DPRINT("test 3"); 26 CreateWindowEx(0, BUTTON_CLASS, "AutoRadioButton", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 27 10, 70, 150, 30, Wnd, NULL, AppInstance, NULL); 28 DPRINT("test 4"); 29 CreateWindowEx(0, BUTTON_CLASS, "AutoCheckBox", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 30 10, 100, 150, 30, Wnd, NULL, AppInstance, NULL); 31 32 DPRINT("WM_CREATE (leave)."); 33 return 0; 34 } 35 36 LRESULT CALLBACK TestWndProc( 37 HWND Wnd, 38 UINT Msg, 39 WPARAM wParam, 40 LPARAM lParam) 41 { 42 switch (Msg) { 43 case WM_CREATE: 44 return WmCreate(Wnd); 45 case WM_DESTROY: 46 PostQuitMessage(0); 47 return 0; 48 default: 49 return DefWindowProc(Wnd, Msg, wParam, lParam); 50 } 51 } 52 53 int WINAPI WinMain( 54 HINSTANCE hInstance, 55 HINSTANCE hPrevInstance, 56 LPSTR lpCmdLine, 57 int nShowCmd) 58 { 59 ATOM Result; 60 MSG Msg; 61 HWND MainWindow; 62 WNDCLASSEX TestWndClass = {0}; 63 DPRINT("Application starting up."); 64 // Remember instance handle. 65 AppInstance = GetModuleHandle(NULL); 66 // Register test window class. 67 TestWndClass.cbSize = sizeof(WNDCLASSEX); 68 TestWndClass.lpfnWndProc = &TestWndProc; 69 TestWndClass.hInstance = AppInstance; 70 TestWndClass.hCursor = LoadCursor(0, (LPCTSTR)IDC_ARROW); 71 TestWndClass.hbrBackground = CreateSolidBrush(RGB(255,255,230)); 72 TestWndClass.lpszClassName = TEST_WND_CLASS; 73 Result = RegisterClassEx(&TestWndClass); 74 if (Result == 0) { 75 DPRINT("Error registering class."); 76 MessageBox(0, "Error registering test window class.", 77 "Button control test", MB_ICONSTOP | MB_OK); 78 ExitProcess(0); 79 } 80 // Create main window. 81 DPRINT("Creating main window."); 82 MainWindow = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_CLIENTEDGE, 83 TEST_WND_CLASS, "Button test", 84 WS_OVERLAPPEDWINDOW, 50, 50, 180, 365, 85 NULL, NULL, AppInstance, NULL); 86 if (MainWindow == 0) { 87 DPRINT("Error creating main window."); 88 UnregisterClass(TEST_WND_CLASS, AppInstance); 89 MessageBox(0, "Error creating test window.", 90 "Static control test", MB_ICONSTOP | MB_OK); 91 ExitProcess(0); 92 } 93 DPRINT("Showing main window."); 94 ShowWindow(MainWindow, SW_SHOWNORMAL); 95 UpdateWindow(MainWindow); 96 // Run message loop. 97 DPRINT("Entering message loop."); 98 while (GetMessage(&Msg, NULL, 0, 0) > 0) { 99 TranslateMessage(&Msg); 100 DispatchMessage(&Msg); 101 } 102 // Unregister window class. 103 UnregisterClass(TEST_WND_CLASS, AppInstance); 104 DPRINT("Exiting."); 105 106 return Msg.wParam; 107 } 108