ReactOS 0.4.15-dev-7712-gbbbcd8e
spider.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: Spider Solitaire
3 * LICENSE: See COPYING in top level directory
4 * FILE: base/applications/games/spider/spider.cpp
5 * PURPOSE: Window and message queue for Spider Solitaire
6 * PROGRAMMER: Gregor Schneider
7 */
8
9#include "spider.h"
10
11#include <commctrl.h>
12#include <shellapi.h>
13#include <tchar.h>
14
16
20
27
29
30typedef struct _CardBack
31{
32 HWND hSelf;
34 INT hdcNum;
35 INT imgNum;
38
40
41void MakePath(TCHAR *szDest, UINT nDestLen, const TCHAR *szExt)
42{
43 TCHAR *ptr;
44
45 ptr = szDest + GetModuleFileName(GetModuleHandle(0), szDest, nDestLen) - 1;
46 while(*ptr-- != '.');
47 lstrcpy(ptr + 1, szExt);
48}
49
51{
52 switch (uMsg)
53 {
54 case WM_INITDIALOG:
56 return TRUE;
57
58 case WM_COMMAND:
59 switch(LOWORD(wParam))
60 {
61 case IDOK:
68
69 NewGame();
70 EndDialog(hDlg, TRUE);
71 return TRUE;
72
73 case IDCANCEL:
74 EndDialog(hDlg, FALSE);
75 return TRUE;
76 }
77 break;
78 }
79 return FALSE;
80}
81
82int WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE hPrev, LPTSTR szCmdLine, int iCmdShow)
83{
84 HWND hwnd;
85 MSG msg;
86 WNDCLASS wndclass;
88 HACCEL hAccelTable;
89
91
92 /* Load application title */
94 /* Load MsgBox() texts here to avoid loading them many times later */
95 LoadString(hInst, IDS_SPI_ABOUT, MsgAbout, sizeof(MsgAbout) / sizeof(MsgAbout[0]));
96 LoadString(hInst, IDS_SPI_QUIT, MsgQuit, sizeof(MsgQuit) / sizeof(MsgQuit[0]));
97 LoadString(hInst, IDS_SPI_WIN, MsgWin, sizeof(MsgWin) / sizeof(MsgWin[0]));
98 LoadString(hInst, IDS_SPI_DEAL, MsgDeal, sizeof(MsgDeal) / sizeof(MsgDeal[0]));
99
100 /* Window class for the main application parent window */
101 wndclass.style = 0;
102 wndclass.lpfnWndProc = WndProc;
103 wndclass.cbClsExtra = 0;
104 wndclass.cbWndExtra = 0;
105 wndclass.hInstance = hInst;
107 wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
108 wndclass.hbrBackground = (HBRUSH)NULL;
110 wndclass.lpszClassName = szAppName;
111
112 RegisterClass(&wndclass);
113
114 ice.dwSize = sizeof(ice);
117
118 srand((unsigned)GetTickCount());
119
120 /* InitCardLib(); */
121
122 /* Construct the path to our help file */
123 MakePath(szHelpPath, MAX_PATH, _T(".hlp"));
124
126 szAppName,
130 0, /*The real size will be computed in WndProc through WM_GETMINMAXINFO */
131 0, /* The real size will be computed in WndProc through WM_GETMINMAXINFO */
132 NULL,
133 NULL,
134 hInst,
135 NULL);
136
137 hwndMain = hwnd;
138
139 ShowWindow(hwnd, iCmdShow);
141
143
145
146 while (GetMessage(&msg, NULL,0,0))
147 {
148 if (!TranslateAccelerator(hwnd, hAccelTable, &msg))
149 {
152 }
153 }
154 return msg.wParam;
155}
156
158{
160 static WNDPROC hOldProc = NULL;
161
162 if (!pCardBack)
163 return FALSE;
164
165 if (!hOldProc)
166 hOldProc = pCardBack->hOldProc;
167
168 switch (msg)
169 {
170 case WM_PAINT:
171 {
172 HDC hdc;
173 PAINTSTRUCT ps;
174 HPEN hPen, hOldPen;
175 HBRUSH hBrush, hOldBrush;
176 RECT rc;
177
178 hdc = BeginPaint(hwnd, &ps);
179
180 if (pCardBack->bSelected)
181 {
182 hPen = CreatePen(PS_SOLID, 2, RGB(0,0,0));
183 }
184 else
185 {
187 hPen = CreatePen(PS_SOLID, 2, Face);
188 }
189
190 GetClientRect(hwnd, &rc);
191 hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);
192 hOldPen = (HPEN)SelectObject(hdc, hPen);
193 hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);
194
195 Rectangle(hdc, rc.left+1, rc.top+1, rc.right, rc.bottom);
196
198 2,
199 2,
203 pCardBack->hdcNum * __cardwidth,
204 0,
207 SRCCOPY);
208
209 SelectObject(hdc, hOldPen);
210 SelectObject(hdc, hOldBrush);
211
212 EndPaint(hwnd, &ps);
213
214 break;
215 }
216
217 case WM_LBUTTONDOWN:
218 pCardBack->bSelected = pCardBack->bSelected ? FALSE : TRUE;
219 break;
220 }
221
222 return CallWindowProc(hOldProc, hwnd, msg, wParam, lParam);
223}
224
225
227{
228 static PCARDBACK pCardBacks = NULL;
229
230 switch (uMsg)
231 {
232 case WM_INITDIALOG:
233 {
234 INT i, c;
235 SIZE_T size = sizeof(CARDBACK) * NUM_CARDBACKS;
236
237 pCardBacks = (PCARDBACK)HeapAlloc(GetProcessHeap(), 0, size);
238
239 if (!pCardBacks)
240 return FALSE;
241
242 for (i = 0, c = CARDBACK_START; c <= CARDBACK_END; i++, c++)
243 {
244 pCardBacks[i].hSelf = GetDlgItem(hDlg, c);
245 pCardBacks[i].bSelected = FALSE;
246 pCardBacks[i].hdcNum = CARDBACK_RES_START + i;
247 pCardBacks[i].imgNum = i + 1;
248 pCardBacks[i].hOldProc = (WNDPROC)SetWindowLongPtr(pCardBacks[i].hSelf,
251
252 SetWindowLongPtr(pCardBacks[i].hSelf, GWLP_USERDATA, (LONG_PTR)&pCardBacks[i]);
253 }
254
255 return TRUE;
256 }
257
258 case WM_COMMAND:
259 if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
260 {
261 INT i, num = 0;
262 for (i = 0; i < NUM_CARDBACKS; i++)
263 {
264 if (pCardBacks[i].bSelected)
265 {
266 num = pCardBacks[i].imgNum;
267 }
268 }
269
270 EndDialog(hDlg, LOWORD(wParam) == IDOK ? num : FALSE);
271 HeapFree(GetProcessHeap(), 0, pCardBacks);
272 return TRUE;
273 }
274
275 if (HIWORD(wParam) == STN_CLICKED)
276 {
277 INT i;
278 RECT rc;
279 for (i = 0; i < NUM_CARDBACKS; i++)
280 {
281 pCardBacks[i].bSelected = pCardBacks[i].hSelf == (HWND)lParam;
282
283 GetClientRect(pCardBacks[i].hSelf, &rc);
284 InvalidateRect(pCardBacks[i].hSelf, &rc, TRUE);
285 }
286
287 break;
288 }
289 }
290
291 return FALSE;
292}
293
294
296{
297 INT cardBack;
298
300 {
303 }
304}
305
307{
308 static int nWidth, nHeight;
309
310 switch (iMsg)
311 {
312 case WM_CREATE:
313 {
314 // For now, the Help dialog is disabled because of lacking of HTML Help support
316
317 SpiderWnd.Create(hwnd, 0, WS_CHILD | WS_VISIBLE, 0, 0, 100, 100);
319 CreateSpider();
320
322
324
325 return 0;
326 }
327
328 case WM_DESTROY:
330 return 0;
331
332 case WM_SIZE:
333 nWidth = LOWORD(lParam);
334 nHeight = HIWORD(lParam);
335
336 MoveWindow(SpiderWnd, 0, 0, nWidth, nHeight, TRUE);
337 return 0;
338
339 case WM_GETMINMAXINFO:
340 {
341 MINMAXINFO *mmi;
342
343 mmi = (MINMAXINFO *)lParam;
344 mmi->ptMinTrackSize.x = NUM_STACKS * __cardwidth + (NUM_STACKS + 3) * X_BORDER + 12; // Border left and right of 6px
347 2 * Y_BORDER +
348 3 * __cardheight +
350 return 0;
351 }
352
353 case WM_COMMAND:
354 switch (LOWORD(wParam))
355 {
356 case IDM_GAME_NEW:
357 NewGame();
358 return 0;
359
360 case IDM_GAME_DECK:
362 return 0;
363
365 WinHelp(hwnd, szHelpPath, HELP_CONTENTS, 0);//HELP_KEY, (DWORD)"How to play");
366 return 0;
367
368 case IDM_HELP_ABOUT:
371 return 0;
372
373 case IDM_GAME_EXIT:
374 PostMessage(hwnd, WM_CLOSE, 0, 0);
375 return 0;
376 }
377
378 return 0;
379
380 case WM_CLOSE:
381 if (fGameStarted == false)
382 {
384 return 0;
385 }
386 else
387 {
388 int ret;
389
391 if (ret == IDYES)
392 {
395 }
396 }
397 return 0;
398 }
399 return DefWindowProc (hwnd, iMsg, wParam, lParam);
400}
401
#define msg(x)
Definition: auth_time.c:54
#define IDM_HELP_ABOUT
Definition: resource.h:387
#define IDR_MENU1
Definition: resource.h:6
#define IDD_CARDBACK
Definition: resource.h:28
#define IDM_HELP_CONTENTS
Definition: resource.h:15
#define IDM_GAME_NEW
Definition: resource.h:10
#define IDM_GAME_DECK
Definition: resource.h:12
#define IDM_GAME_EXIT
Definition: resource.h:14
#define IDR_ACCELERATOR1
Definition: resource.h:7
#define IDD_DIFFICULTY
Definition: resource.h:31
#define IDS_SPI_QUIT
Definition: resource.h:39
#define IDS_SPI_NAME
Definition: resource.h:37
#define IDC_DIF_FOURCOLORS
Definition: resource.h:34
#define IDC_DIF_ONECOLOR
Definition: resource.h:32
#define IDC_DIF_TWOCOLORS
Definition: resource.h:33
#define IDS_SPI_WIN
Definition: resource.h:40
#define IDS_SPI_DEAL
Definition: resource.h:41
#define IDS_SPI_ABOUT
Definition: resource.h:38
#define IDI_SPIDER
Definition: resource.h:4
int __cardwidth
Definition: cardlib.cpp:25
int __cardheight
Definition: cardlib.cpp:26
HDC __hdcCardBitmaps
Definition: cardlib.cpp:18
BOOL Create(HWND hwndParent, DWORD dwExStyle, DWORD dwStyle, int x, int y, int width, int height)
Definition: cardwindow.cpp:109
void SetBackCardIdx(UINT uBackIdx)
Definition: cardwindow.cpp:728
void Redraw(void)
Definition: cardwindow.cpp:553
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
Definition: commctrl.c:893
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define GetProcessHeap()
Definition: compat.h:736
HANDLE HWND
Definition: compat.h:19
#define HeapAlloc
Definition: compat.h:733
#define MAX_PATH
Definition: compat.h:34
#define HeapFree(x, y, z)
Definition: compat.h:735
#define CALLBACK
Definition: compat.h:35
DWORD WINAPI GetTickCount(VOID)
Definition: time.c:455
#define RGB(r, g, b)
Definition: precomp.h:62
HINSTANCE hInst
Definition: dxdiag.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizeiptr size
Definition: glext.h:5919
const GLubyte * c
Definition: glext.h:8905
GLuint GLuint num
Definition: glext.h:9618
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
void __cdecl srand(_In_ unsigned int _Seed)
#define _tWinMain
Definition: tchar.h:498
#define c
Definition: ke_i.h:80
static PVOID ptr
Definition: dispmode.c:27
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:92
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
unsigned int UINT
Definition: ndis.h:50
#define LOWORD(l)
Definition: pedump.c:82
#define WS_CHILD
Definition: pedump.c:617
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
#define WS_VISIBLE
Definition: pedump.c:620
#define ICC_BAR_CLASSES
Definition: commctrl.h:60
#define DefWindowProc
Definition: ros2win.h:31
#define ShellAbout
Definition: shellapi.h:689
int yRowStackCardOffset
Definition: solcreate.cpp:10
void NewGame(void)
Definition: solgame.cpp:18
bool fGameStarted
Definition: solgame.cpp:15
#define CARDBACK_OPTIONS_HEIGHT
Definition: solitaire.h:21
#define CARDBACK_END
Definition: solitaire.h:17
#define NUM_CARDBACKS
Definition: solitaire.h:18
#define CARDBACK_OPTIONS_WIDTH
Definition: solitaire.h:20
#define Y_BORDER
Definition: solitaire.h:53
#define X_BORDER
Definition: solitaire.h:49
#define CARDBACK_START
Definition: solitaire.h:16
#define CARDBACK_RES_START
Definition: solitaire.h:19
TCHAR szAppName[128]
Definition: spider.cpp:21
INT_PTR CALLBACK DifficultyDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: spider.cpp:50
TCHAR szHelpPath[MAX_PATH]
Definition: spider.cpp:15
TCHAR MsgDeal[128]
Definition: spider.cpp:25
TCHAR MsgAbout[128]
Definition: spider.cpp:23
TCHAR MsgWin[128]
Definition: spider.cpp:24
VOID ShowDeckOptionsDlg(HWND hwnd)
Definition: spider.cpp:295
DWORD dwDifficulty
Definition: spider.cpp:26
struct _CardBack CARDBACK
void MakePath(TCHAR *szDest, UINT nDestLen, const TCHAR *szExt)
Definition: spider.cpp:41
HINSTANCE hInstance
Definition: spider.cpp:19
HWND hwndMain
Definition: spider.cpp:18
LRESULT CALLBACK CardImageWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: spider.cpp:157
DWORD dwAppStartTime
Definition: spider.cpp:17
struct _CardBack * PCARDBACK
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
Definition: spider.cpp:306
INT_PTR CALLBACK CardBackDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: spider.cpp:226
CardWindow SpiderWnd
Definition: spider.cpp:28
TCHAR MsgQuit[128]
Definition: spider.cpp:22
#define NUM_STACKS
Definition: spider.h:21
void CreateSpider(void)
Definition: spigame.cpp:279
HWND hSelf
Definition: solitaire.cpp:38
BOOL bSelected
Definition: solitaire.cpp:42
INT imgNum
Definition: solitaire.cpp:41
WNDPROC hOldProc
Definition: solitaire.cpp:39
INT hdcNum
Definition: solitaire.cpp:40
HBRUSH hbrBackground
Definition: winuser.h:3169
HICON hIcon
Definition: winuser.h:3167
HINSTANCE hInstance
Definition: winuser.h:3166
HCURSOR hCursor
Definition: winuser.h:3168
int cbWndExtra
Definition: winuser.h:3165
UINT style
Definition: winuser.h:3162
LPCSTR lpszMenuName
Definition: winuser.h:3170
LPCSTR lpszClassName
Definition: winuser.h:3171
WNDPROC lpfnWndProc
Definition: winuser.h:3163
int cbClsExtra
Definition: winuser.h:3164
POINT ptMinTrackSize
Definition: winuser.h:3629
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
#define GWLP_WNDPROC
Definition: treelist.c:66
#define GWLP_USERDATA
Definition: treelist.c:63
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
int32_t INT_PTR
Definition: typedefs.h:64
ULONG_PTR SIZE_T
Definition: typedefs.h:80
int32_t INT
Definition: typedefs.h:58
#define HIWORD(l)
Definition: typedefs.h:247
#define _T(x)
Definition: vfdio.h:22
int ret
#define GetModuleHandle
Definition: winbase.h:3762
#define lstrcpy
Definition: winbase.h:3809
#define GetModuleFileName
Definition: winbase.h:3766
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define WINAPI
Definition: msvc.h:6
HGDIOBJ WINAPI GetStockObject(_In_ int)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1539
BOOL WINAPI StretchBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
#define SRCCOPY
Definition: wingdi.h:333
#define NULL_BRUSH
Definition: wingdi.h:901
BOOL WINAPI Rectangle(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
#define PS_SOLID
Definition: wingdi.h:586
#define WM_PAINT
Definition: winuser.h:1619
DWORD WINAPI GetSysColor(_In_ int)
#define WM_CLOSE
Definition: winuser.h:1620
#define MF_BYCOMMAND
Definition: winuser.h:202
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define WinHelp
Definition: winuser.h:5863
#define HELP_QUIT
Definition: winuser.h:2413
#define CallWindowProc
Definition: winuser.h:5734
#define IDCANCEL
Definition: winuser.h:830
#define WM_CREATE
Definition: winuser.h:1607
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define WM_SIZE
Definition: winuser.h:1610
#define HELP_CONTENTS
Definition: winuser.h:2404
#define SWP_NOMOVE
Definition: winuser.h:1243
#define WM_COMMAND
Definition: winuser.h:1739
#define IDC_ARROW
Definition: winuser.h:687
#define SM_CYMENU
Definition: winuser.h:975
#define WM_INITDIALOG
Definition: winuser.h:1738
#define WM_LBUTTONDOWN
Definition: winuser.h:1775
#define MB_YESNO
Definition: winuser.h:816
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:829
#define CreateWindow
Definition: winuser.h:5753
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)
#define GetMessage
Definition: winuser.h:5789
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define WM_GETMINMAXINFO
Definition: winuser.h:1639
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
#define LoadIcon
Definition: winuser.h:5812
BOOL WINAPI UpdateWindow(_In_ HWND)
#define LoadCursor
Definition: winuser.h:5811
#define PostMessage
Definition: winuser.h:5831
#define CW_USEDEFAULT
Definition: winuser.h:225
#define LoadString
Definition: winuser.h:5818
BOOL WINAPI CheckRadioButton(_In_ HWND, _In_ int, _In_ int, _In_ int)
#define MB_ICONQUESTION
Definition: winuser.h:788
#define MessageBox
Definition: winuser.h:5821
#define RegisterClass
Definition: winuser.h:5835
#define WM_DESTROY
Definition: winuser.h:1608
#define DispatchMessage
Definition: winuser.h:5764
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2905
#define IDYES
Definition: winuser.h:834
#define SWP_NOZORDER
Definition: winuser.h:1246
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
#define TranslateAccelerator
Definition: winuser.h:5859
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define SM_CYCAPTION
Definition: winuser.h:962
int WINAPI GetSystemMetrics(_In_ int)
#define STN_CLICKED
Definition: winuser.h:2093
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
#define LoadAccelerators
Definition: winuser.h:5809
#define BST_CHECKED
Definition: winuser.h:197
HMENU WINAPI GetMenu(_In_ HWND)
#define DialogBox
Definition: winuser.h:5760
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
#define MF_GRAYED
Definition: winuser.h:129
#define COLOR_3DFACE
Definition: winuser.h:928
char TCHAR
Definition: xmlstorage.h:189
CHAR * LPTSTR
Definition: xmlstorage.h:192