1 //#define WIN32_LEAN_AND_MEAN
4 static LPSTR STATIC_CLASS = "STATIC";
5 static LPSTR TEST_WND_CLASS = "TESTWND";
8 #define DPRINT(s) (void)0
10 #define DPRINT(s) OutputDebugStringA("STATICTEST: " s "\n")
13 HINSTANCE AppInstance = NULL;
19 DPRINT("WM_CREATE (enter).");
20 // Test 1 - black rectangle.
22 CreateWindowEx(0, STATIC_CLASS, NULL, WS_CHILD | WS_VISIBLE | SS_BLACKRECT,
23 10, 10, 100, 20, Wnd, NULL, AppInstance, NULL);
24 // Test 2 - black frame.
26 CreateWindowEx(0, STATIC_CLASS, NULL, WS_CHILD | WS_VISIBLE | SS_BLACKFRAME,
27 10, 40, 100, 20, Wnd, NULL, AppInstance, NULL);
28 // Test 3 - gray rectangle.
30 CreateWindowEx(0, STATIC_CLASS, NULL, WS_CHILD | WS_VISIBLE | SS_GRAYRECT,
31 10, 70, 100, 20, Wnd, NULL, AppInstance, NULL);
32 // Test 4 - gray frame.
34 CreateWindowEx(0, STATIC_CLASS, NULL, WS_CHILD | WS_VISIBLE | SS_GRAYFRAME,
35 10, 100, 100, 20, Wnd, NULL, AppInstance, NULL);
36 // Test 5 - left-aligned text.
38 CreateWindowEx(0, STATIC_CLASS,
39 "&Left-aligned text &static control window",
40 WS_CHILD | WS_VISIBLE | SS_LEFT,
41 10, 130, 100, 50, Wnd, NULL, AppInstance, NULL);
42 // Test 6 - right-aligned text.
44 CreateWindowEx(0, STATIC_CLASS,
45 "&Right-aligned text &static control window",
46 WS_CHILD | WS_VISIBLE | SS_RIGHT,
47 10, 185, 100, 50, Wnd, NULL, AppInstance, NULL);
48 // Test 7 - centered text.
50 CreateWindowEx(0, STATIC_CLASS,
51 "&Centered text &static control window",
52 WS_CHILD | WS_VISIBLE | SS_CENTER,
53 10, 240, 100, 50, Wnd, NULL, AppInstance, NULL);
54 // Test 8 - left-aligned text with no word wrap and no prefixes.
56 CreateWindowEx(0, STATIC_CLASS,
57 "&No prefix and no word wrapping",
58 WS_CHILD | WS_VISIBLE | SS_LEFTNOWORDWRAP | SS_NOPREFIX,
59 10, 295, 100, 20, Wnd, NULL, AppInstance, NULL);
60 // Test 9 - white rectangle.
62 CreateWindowEx(0, STATIC_CLASS, NULL, WS_CHILD | WS_VISIBLE | SS_WHITERECT,
63 120, 10, 100, 20, Wnd, NULL, AppInstance, NULL);
64 // Test 10 - white frame.
66 CreateWindowEx(0, STATIC_CLASS, NULL, WS_CHILD | WS_VISIBLE | SS_WHITEFRAME,
67 120, 40, 100, 20, Wnd, NULL, AppInstance, NULL);
68 // Test 11 - etched frame.
70 CreateWindowEx(0, STATIC_CLASS, NULL, WS_CHILD | WS_VISIBLE
71 | SS_ETCHEDFRAME, 120, 70, 100, 20, Wnd, NULL, AppInstance, NULL);
72 // Test 12 - etched horizontal lines.
74 for (i = 0; i < 5; ++i)
75 CreateWindowEx(0, STATIC_CLASS, NULL, WS_CHILD | WS_VISIBLE
76 | SS_ETCHEDHORZ, 120, 100 + (4L * i), 100, 4, Wnd,
77 NULL, AppInstance, NULL);
78 // Test 13 - etched vertical lines.
80 for (i = 0; i < 25; ++i)
81 CreateWindowEx(0, STATIC_CLASS, NULL, WS_CHILD | WS_VISIBLE
82 | SS_ETCHEDVERT, 120 + (4L * i), 130, 4, 20, Wnd,
83 NULL, AppInstance, NULL);
84 // Test 14 - sunken border.
86 CreateWindowEx(0, STATIC_CLASS,
87 "Sunken frame and word ellipsis",
88 WS_CHILD | WS_VISIBLE | SS_SUNKEN | SS_WORDELLIPSIS,
89 120, 160, 100, 20, Wnd, NULL, AppInstance, NULL);
90 DPRINT("WM_CREATE (leave).");
94 LRESULT CALLBACK TestWndProc(
102 return WmCreate(Wnd);
107 return DefWindowProc(Wnd, Msg, wParam, lParam);
113 HINSTANCE hPrevInstance,
120 WNDCLASSEX TestWndClass = {0};
121 DPRINT("Application starting up.");
122 // Remember instance handle.
123 AppInstance = GetModuleHandle(NULL);
124 // Register test window class.
125 TestWndClass.cbSize = sizeof(WNDCLASSEX);
126 TestWndClass.lpfnWndProc = &TestWndProc;
127 TestWndClass.hInstance = AppInstance;
128 TestWndClass.hCursor = LoadCursor(0, IDC_ARROW);
129 TestWndClass.hbrBackground = CreateSolidBrush(RGB(255,255,230));
130 TestWndClass.lpszClassName = TEST_WND_CLASS;
131 Result = RegisterClassEx(&TestWndClass);
133 DPRINT("Error registering class.");
134 MessageBox(0, "Error registering test window class.",
135 "Static control test", MB_ICONSTOP | MB_OK);
138 // Create main window.
139 DPRINT("Creating main window.");
140 MainWindow = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_CLIENTEDGE,
141 TEST_WND_CLASS, "Static control test",
142 WS_OVERLAPPEDWINDOW, 50, 50, 245, 365,
143 NULL, NULL, AppInstance, NULL);
144 if (MainWindow == 0) {
145 DPRINT("Error creating main window.");
146 UnregisterClass(TEST_WND_CLASS, AppInstance);
147 MessageBox(0, "Error creating test window.",
148 "Static control test", MB_ICONSTOP | MB_OK);
151 DPRINT("Showing main window.");
152 ShowWindow(MainWindow, SW_SHOWNORMAL);
153 UpdateWindow(MainWindow);
155 DPRINT("Entering message loop.");
156 while (GetMessage(&Msg, NULL, 0, 0) > 0) {
157 TranslateMessage(&Msg);
158 DispatchMessage(&Msg);
160 // Unregister window class.
161 UnregisterClass(TEST_WND_CLASS, AppInstance);