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, (LPCTSTR
)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
);