ReactOS  0.4.14-dev-115-g4576127
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 <tchar.h>
13 
15 
19 
26 
28 
29 typedef struct _CardBack
30 {
31  HWND hSelf;
33  INT hdcNum;
34  INT imgNum;
37 
39 
40 void MakePath(TCHAR *szDest, UINT nDestLen, const TCHAR *szExt)
41 {
42  TCHAR *ptr;
43 
44  ptr = szDest + GetModuleFileName(GetModuleHandle(0), szDest, nDestLen) - 1;
45  while(*ptr-- != '.');
46  lstrcpy(ptr + 1, szExt);
47 }
48 
50 {
51  switch (uMsg)
52  {
53  case WM_INITDIALOG:
55  return TRUE;
56 
57  case WM_COMMAND:
58  switch(LOWORD(wParam))
59  {
60  case IDOK:
67 
68  NewGame();
69  EndDialog(hDlg, TRUE);
70  return TRUE;
71 
72  case IDCANCEL:
73  EndDialog(hDlg, FALSE);
74  return TRUE;
75  }
76  break;
77  }
78  return FALSE;
79 }
80 
81 int WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE hPrev, LPTSTR szCmdLine, int iCmdShow)
82 {
83  HWND hwnd;
84  MSG msg;
85  WNDCLASS wndclass;
87  HACCEL hAccelTable;
88 
89  hInstance = hInst;
90 
91  /* Load application title */
92  LoadString(hInst, IDS_SPI_NAME, szAppName, sizeof(szAppName) / sizeof(szAppName[0]));
93  /* Load MsgBox() texts here to avoid loading them many times later */
94  LoadString(hInst, IDS_SPI_ABOUT, MsgAbout, sizeof(MsgAbout) / sizeof(MsgAbout[0]));
95  LoadString(hInst, IDS_SPI_QUIT, MsgQuit, sizeof(MsgQuit) / sizeof(MsgQuit[0]));
96  LoadString(hInst, IDS_SPI_WIN, MsgWin, sizeof(MsgWin) / sizeof(MsgWin[0]));
97  LoadString(hInst, IDS_SPI_DEAL, MsgDeal, sizeof(MsgDeal) / sizeof(MsgDeal[0]));
98 
99  /* Window class for the main application parent window */
100  wndclass.style = 0;
101  wndclass.lpfnWndProc = WndProc;
102  wndclass.cbClsExtra = 0;
103  wndclass.cbWndExtra = 0;
104  wndclass.hInstance = hInst;
106  wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
107  wndclass.hbrBackground = (HBRUSH)NULL;
109  wndclass.lpszClassName = szAppName;
110 
111  RegisterClass(&wndclass);
112 
113  ice.dwSize = sizeof(ice);
114  ice.dwICC = ICC_BAR_CLASSES;
115  InitCommonControlsEx(&ice);
116 
117  srand((unsigned)GetTickCount());
118 
119  /* InitCardLib(); */
120 
121  /* Construct the path to our help file */
122  MakePath(szHelpPath, MAX_PATH, _T(".hlp"));
123 
125  szAppName,
129  0, /*The real size will be computed in WndProc through WM_GETMINMAXINFO */
130  0, /* The real size will be computed in WndProc through WM_GETMINMAXINFO */
131  NULL,
132  NULL,
133  hInst,
134  NULL);
135 
136  hwndMain = hwnd;
137 
138  ShowWindow(hwnd, iCmdShow);
140 
142 
144 
145  while (GetMessage(&msg, NULL,0,0))
146  {
147  if (!TranslateAccelerator(hwnd, hAccelTable, &msg))
148  {
151  }
152  }
153  return msg.wParam;
154 }
155 
157 {
159  static WNDPROC hOldProc = NULL;
160 
161  if (!pCardBack)
162  return FALSE;
163 
164  if (!hOldProc)
165  hOldProc = pCardBack->hOldProc;
166 
167  switch (msg)
168  {
169  case WM_PAINT:
170  {
171  HDC hdc;
172  PAINTSTRUCT ps;
173  HPEN hPen, hOldPen;
174  HBRUSH hBrush, hOldBrush;
175  RECT rc;
176 
177  hdc = BeginPaint(hwnd, &ps);
178 
179  if (pCardBack->bSelected)
180  {
181  hPen = CreatePen(PS_SOLID, 2, RGB(0,0,0));
182  }
183  else
184  {
186  hPen = CreatePen(PS_SOLID, 2, Face);
187  }
188 
189  GetClientRect(hwnd, &rc);
190  hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);
191  hOldPen = (HPEN)SelectObject(hdc, hPen);
192  hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);
193 
194  Rectangle(hdc, rc.left+1, rc.top+1, rc.right, rc.bottom);
195 
196  StretchBlt(hdc,
197  2,
198  2,
202  pCardBack->hdcNum * __cardwidth,
203  0,
204  __cardwidth,
205  __cardheight,
206  SRCCOPY);
207 
208  SelectObject(hdc, hOldPen);
209  SelectObject(hdc, hOldBrush);
210 
211  EndPaint(hwnd, &ps);
212 
213  break;
214  }
215 
216  case WM_LBUTTONDOWN:
217  pCardBack->bSelected = pCardBack->bSelected ? FALSE : TRUE;
218  break;
219  }
220 
221  return CallWindowProc(hOldProc, hwnd, msg, wParam, lParam);
222 }
223 
224 
226 {
227  static PCARDBACK pCardBacks = NULL;
228 
229  switch (uMsg)
230  {
231  case WM_INITDIALOG:
232  {
233  INT i, c;
234  SIZE_T size = sizeof(CARDBACK) * NUM_CARDBACKS;
235 
236  pCardBacks = (PCARDBACK)HeapAlloc(GetProcessHeap(), 0, size);
237 
238  if (!pCardBacks)
239  return FALSE;
240 
241  for (i = 0, c = CARDBACK_START; c <= CARDBACK_END; i++, c++)
242  {
243  pCardBacks[i].hSelf = GetDlgItem(hDlg, c);
244  pCardBacks[i].bSelected = FALSE;
245  pCardBacks[i].hdcNum = CARDBACK_RES_START + i;
246  pCardBacks[i].imgNum = i + 1;
247  pCardBacks[i].hOldProc = (WNDPROC)SetWindowLongPtr(pCardBacks[i].hSelf,
248  GWLP_WNDPROC,
250 
251  SetWindowLongPtr(pCardBacks[i].hSelf, GWLP_USERDATA, (LONG_PTR)&pCardBacks[i]);
252  }
253 
254  return TRUE;
255  }
256 
257  case WM_COMMAND:
258  if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
259  {
260  INT i, num = 0;
261  for (i = 0; i < NUM_CARDBACKS; i++)
262  {
263  if (pCardBacks[i].bSelected)
264  {
265  num = pCardBacks[i].imgNum;
266  }
267  }
268 
269  EndDialog(hDlg, LOWORD(wParam) == IDOK ? num : FALSE);
270  HeapFree(GetProcessHeap(), 0, pCardBacks);
271  return TRUE;
272  }
273 
274  if (HIWORD(wParam) == STN_CLICKED)
275  {
276  INT i;
277  RECT rc;
278  for (i = 0; i < NUM_CARDBACKS; i++)
279  {
280  pCardBacks[i].bSelected = pCardBacks[i].hSelf == (HWND)lParam;
281 
282  GetClientRect(pCardBacks[i].hSelf, &rc);
283  InvalidateRect(pCardBacks[i].hSelf, &rc, TRUE);
284  }
285 
286  break;
287  }
288  }
289 
290  return FALSE;
291 }
292 
293 
295 {
296  INT cardBack;
297 
299  {
300  SpiderWnd.SetBackCardIdx(CARDBACK_RES_START + (cardBack - 1));
301  SpiderWnd.Redraw();
302  }
303 }
304 
306 {
307  static int nWidth, nHeight;
308 
309  switch (iMsg)
310  {
311  case WM_CREATE:
312  {
313  // For now, the Help dialog is disabled because of lacking of HTML Help support
315 
316  SpiderWnd.Create(hwnd, 0, WS_CHILD | WS_VISIBLE, 0, 0, 100, 100);
318  CreateSpider();
319 
320  SetWindowPos(hwnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOZORDER);
321 
323 
324  return 0;
325  }
326 
327  case WM_DESTROY:
328  PostQuitMessage(0);
329  return 0;
330 
331  case WM_SIZE:
332  nWidth = LOWORD(lParam);
333  nHeight = HIWORD(lParam);
334 
335  MoveWindow(SpiderWnd, 0, 0, nWidth, nHeight, TRUE);
336  return 0;
337 
338  case WM_GETMINMAXINFO:
339  {
340  MINMAXINFO *mmi;
341 
342  mmi = (MINMAXINFO *)lParam;
343  mmi->ptMinTrackSize.x = NUM_STACKS * __cardwidth + (NUM_STACKS + 3) * X_BORDER + 12; // Border left and right of 6px
346  2 * Y_BORDER +
347  3 * __cardheight +
349  return 0;
350  }
351 
352  case WM_COMMAND:
353  switch (LOWORD(wParam))
354  {
355  case IDM_GAME_NEW:
356  NewGame();
357  return 0;
358 
359  case IDM_GAME_DECK:
361  return 0;
362 
363  case IDM_HELP_CONTENTS:
364  WinHelp(hwnd, szHelpPath, HELP_CONTENTS, 0);//HELP_KEY, (DWORD)"How to play");
365  return 0;
366 
367  case IDM_HELP_ABOUT:
369  return 0;
370 
371  case IDM_GAME_EXIT:
372  PostMessage(hwnd, WM_CLOSE, 0, 0);
373  return 0;
374  }
375 
376  return 0;
377 
378  case WM_CLOSE:
379  if (fGameStarted == false)
380  {
382  return 0;
383  }
384  else
385  {
386  int ret;
387 
389  if (ret == IDYES)
390  {
393  }
394  }
395  return 0;
396  }
397  return DefWindowProc (hwnd, iMsg, wParam, lParam);
398 }
399 
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define IDS_SPI_ABOUT
Definition: resource.h:38
POINT ptMinTrackSize
Definition: winuser.h:3604
#define CallWindowProc
Definition: winuser.h:5636
void MakePath(TCHAR *szDest, UINT nDestLen, const TCHAR *szExt)
Definition: spider.cpp:40
HWND hSelf
Definition: solitaire.cpp:36
#define IDD_CARDBACK
Definition: resource.h:27
#define TranslateAccelerator
Definition: winuser.h:5761
#define Y_BORDER
Definition: solitaire.h:53
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define DispatchMessage
Definition: winuser.h:5666
BOOL WINAPI TranslateMessage(_In_ const MSG *)
INT imgNum
Definition: solitaire.cpp:39
#define TRUE
Definition: types.h:120
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
#define IDOK
Definition: winuser.h:824
#define HELP_CONTENTS
Definition: winuser.h:2380
CardWindow SpiderWnd
Definition: spider.cpp:27
#define MF_BYCOMMAND
Definition: winuser.h:202
#define IDR_ACCELERATOR1
Definition: resource.h:7
long y
Definition: polytest.cpp:48
#define WM_LBUTTONDOWN
Definition: winuser.h:1758
#define CreateWindow
Definition: winuser.h:5655
#define IDYES
Definition: winuser.h:829
long x
Definition: polytest.cpp:48
BOOL WINAPI Rectangle(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
#define X_BORDER
Definition: solitaire.h:49
struct _CardBack * PCARDBACK
BOOL Create(HWND hwndParent, DWORD dwExStyle, DWORD dwStyle, int x, int y, int width, int height)
Definition: cardwindow.cpp:109
#define NULL_BRUSH
Definition: wingdi.h:900
#define HELP_QUIT
Definition: winuser.h:2389
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
DWORD dwAppStartTime
Definition: spider.cpp:16
#define IDR_MENU1
Definition: resource.h:6
static HDC
Definition: imagelist.c:92
#define CALLBACK
Definition: compat.h:27
BOOL WINAPI UpdateWindow(_In_ HWND)
DWORD WINAPI GetTickCount(VOID)
Definition: time.c:445
void __cdecl srand(_In_ unsigned int _Seed)
LONG top
Definition: windef.h:292
HANDLE HWND
Definition: compat.h:13
#define IDM_GAME_DECK
Definition: resource.h:11
HINSTANCE hInstance
Definition: spider.cpp:18
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1497
int cbClsExtra
Definition: winuser.h:3139
int yRowStackCardOffset
Definition: solcreate.cpp:12
LPCSTR lpszMenuName
Definition: winuser.h:3145
#define IDM_HELP_ABOUT
Definition: resource.h:385
UINT_PTR WPARAM
Definition: windef.h:207
HBRUSH hbrBackground
Definition: winuser.h:3144
#define WS_CHILD
Definition: pedump.c:617
#define CARDBACK_RES_START
Definition: solitaire.h:19
LONG left
Definition: windef.h:291
#define SWP_NOZORDER
Definition: winuser.h:1232
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
int WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE hPrev, LPTSTR szCmdLine, int iCmdShow)
Definition: spider.cpp:81
int32_t INT_PTR
Definition: typedefs.h:62
LONG right
Definition: windef.h:293
void CreateSpider(void)
Definition: spigame.cpp:279
BOOL WINAPI DestroyWindow(_In_ HWND)
HWND hwndMain
Definition: spider.cpp:17
int32_t INT
Definition: typedefs.h:56
#define SetWindowLongPtr
Definition: treelist.c:70
DWORD WINAPI GetSysColor(_In_ int)
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)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
WPARAM wParam
Definition: combotst.c:138
HDC __hdcCardBitmaps
Definition: cardlib.cpp:18
CHAR * LPTSTR
Definition: xmlstorage.h:192
#define IDD_DIFFICULTY
Definition: resource.h:31
void NewGame(void)
Definition: solgame.cpp:17
void Redraw(void)
Definition: cardwindow.cpp:553
#define DialogBox
Definition: winuser.h:5662
#define PS_SOLID
Definition: wingdi.h:585
int cbWndExtra
Definition: winuser.h:3140
#define LoadAccelerators
Definition: winuser.h:5711
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
#define CARDBACK_OPTIONS_HEIGHT
Definition: solitaire.h:21
#define COLOR_3DFACE
Definition: winuser.h:919
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define MB_YESNO
Definition: winuser.h:811
LRESULT CALLBACK CardImageWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: spider.cpp:156
unsigned int BOOL
Definition: ntddk_ex.h:94
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
static PVOID ptr
Definition: dispmode.c:27
HCURSOR hCursor
Definition: winuser.h:3143
#define CW_USEDEFAULT
Definition: winuser.h:225
#define GWLP_USERDATA
Definition: treelist.c:63
#define IDS_SPI_DEAL
Definition: resource.h:41
INT_PTR CALLBACK CardBackDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: spider.cpp:225
smooth NULL
Definition: ftsmooth.c:416
#define MB_ICONQUESTION
Definition: winuser.h:783
LONG_PTR LPARAM
Definition: windef.h:208
TCHAR MsgDeal[128]
Definition: spider.cpp:24
WNDPROC hOldProc
Definition: solitaire.cpp:37
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)
#define DefWindowProc
Definition: ros2win.h:31
#define WM_DESTROY
Definition: winuser.h:1591
#define PostMessage
Definition: winuser.h:5733
char TCHAR
Definition: xmlstorage.h:189
#define IDS_SPI_QUIT
Definition: resource.h:39
#define ICC_BAR_CLASSES
Definition: commctrl.h:60
#define _T(x)
Definition: vfdio.h:22
#define IDM_HELP_CONTENTS
Definition: resource.h:14
GLsizeiptr size
Definition: glext.h:5919
#define GetProcessHeap()
Definition: compat.h:395
#define SM_CYCAPTION
Definition: winuser.h:953
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define STN_CLICKED
Definition: winuser.h:2076
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define WM_SIZE
Definition: winuser.h:1593
#define WM_CLOSE
Definition: winuser.h:1603
#define RGB(r, g, b)
Definition: wingdi.h:2935
#define MAX_PATH
Definition: compat.h:26
#define WINAPI
Definition: msvc.h:8
const GLubyte * c
Definition: glext.h:8905
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
int WINAPI GetSystemMetrics(_In_ int)
#define CARDBACK_START
Definition: solitaire.h:16
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint num
Definition: glext.h:9618
TCHAR szHelpPath[MAX_PATH]
Definition: spider.cpp:14
#define GetModuleFileName
Definition: winbase.h:3655
BOOL bSelected
Definition: solitaire.cpp:40
#define WM_PAINT
Definition: winuser.h:1602
#define MB_ICONINFORMATION
Definition: winuser.h:796
int ret
HDC hdc
Definition: main.c:9
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
Definition: commctrl.c:893
#define IDI_SPIDER
Definition: resource.h:4
#define MessageBox
Definition: winuser.h:5723
#define NUM_CARDBACKS
Definition: solitaire.h:18
#define WM_COMMAND
Definition: winuser.h:1722
DWORD dwDifficulty
Definition: spider.cpp:25
LPCSTR lpszClassName
Definition: winuser.h:3146
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
#define LoadCursor
Definition: winuser.h:5713
int __cardwidth
Definition: cardlib.cpp:25
#define GWLP_WNDPROC
Definition: treelist.c:66
UINT style
Definition: winuser.h:3137
#define IDC_DIF_ONECOLOR
Definition: resource.h:32
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2880
TCHAR MsgAbout[128]
Definition: spider.cpp:22
void SetBackCardIdx(UINT uBackIdx)
Definition: cardwindow.cpp:728
#define IDM_GAME_EXIT
Definition: resource.h:13
struct _CardBack CARDBACK
ULONG_PTR SIZE_T
Definition: typedefs.h:78
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define CARDBACK_END
Definition: solitaire.h:17
#define IDC_DIF_TWOCOLORS
Definition: resource.h:33
#define IDM_GAME_NEW
Definition: resource.h:10
HINSTANCE hInst
Definition: dxdiag.c:13
#define GetModuleHandle
Definition: winbase.h:3651
bool fGameStarted
Definition: solgame.cpp:14
HINSTANCE hInstance
Definition: winuser.h:3141
#define lstrcpy
Definition: winbase.h:3698
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
unsigned int UINT
Definition: ndis.h:50
INT_PTR CALLBACK DifficultyDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: spider.cpp:49
#define MB_OK
Definition: winuser.h:784
#define GetMessage
Definition: winuser.h:5691
VOID ShowDeckOptionsDlg(HWND hwnd)
Definition: spider.cpp:294
#define BST_CHECKED
Definition: winuser.h:197
WNDPROC lpfnWndProc
Definition: winuser.h:3138
#define msg(x)
Definition: auth_time.c:54
#define IDC_ARROW
Definition: winuser.h:682
int __cardheight
Definition: cardlib.cpp:26
#define WM_CREATE
Definition: winuser.h:1590
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
#define c
Definition: ke_i.h:80
TCHAR MsgQuit[128]
Definition: spider.cpp:21
#define HIWORD(l)
Definition: typedefs.h:246
#define IDC_DIF_FOURCOLORS
Definition: resource.h:34
LONG bottom
Definition: windef.h:294
#define SWP_NOMOVE
Definition: winuser.h:1229
#define NUM_STACKS
Definition: spider.h:21
#define SM_CYMENU
Definition: winuser.h:966
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define IDS_SPI_WIN
Definition: resource.h:40
BOOL WINAPI CheckRadioButton(_In_ HWND, _In_ int, _In_ int, _In_ int)
#define RegisterClass
Definition: winuser.h:5737
#define LoadIcon
Definition: winuser.h:5714
#define GetWindowLongPtr
Definition: treelist.c:73
#define MF_GRAYED
Definition: winuser.h:129
TCHAR MsgWin[128]
Definition: spider.cpp:23
#define IDCANCEL
Definition: winuser.h:825
LONG_PTR LRESULT
Definition: windef.h:209
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
Definition: spider.cpp:305
#define CARDBACK_OPTIONS_WIDTH
Definition: solitaire.h:20
#define WS_VISIBLE
Definition: pedump.c:620
HMENU WINAPI GetMenu(_In_ HWND)
TCHAR szAppName[128]
Definition: spider.cpp:20
#define WM_INITDIALOG
Definition: winuser.h:1721
LPARAM lParam
Definition: combotst.c:139
#define WM_GETMINMAXINFO
Definition: winuser.h:1622
#define LOWORD(l)
Definition: pedump.c:82
#define IDS_SPI_NAME
Definition: resource.h:37
#define HeapFree(x, y, z)
Definition: compat.h:394
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define SRCCOPY
Definition: wingdi.h:332
#define LoadString
Definition: winuser.h:5720
HICON hIcon
Definition: winuser.h:3142
INT hdcNum
Definition: solitaire.cpp:38
#define WinHelp
Definition: winuser.h:5765