fe->statusbar = NULL;
fe->bitmap = NULL;
- SetWindowLong(fe->hwnd, GWL_USERDATA, (LONG)fe);
+ SetWindowLongPtr(fe->hwnd, GWLP_USERDATA, (LONG_PTR)fe);
return fe;
}
static int CALLBACK AboutDlgProc(HWND hwnd, UINT msg,
WPARAM wParam, LPARAM lParam)
{
- frontend *fe = (frontend *)GetWindowLong(hwnd, GWL_USERDATA);
+ frontend *fe = (frontend *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
switch (msg) {
case WM_INITDIALOG:
static int CALLBACK ConfigDlgProc(HWND hwnd, UINT msg,
WPARAM wParam, LPARAM lParam)
{
- frontend *fe = (frontend *)GetWindowLong(hwnd, GWL_USERDATA);
+ frontend *fe = (frontend *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
config_item *i;
struct cfg_aux *j;
char *title;
fe = (frontend *) lParam;
- SetWindowLong(hwnd, GWL_USERDATA, lParam);
+ SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam);
fe->cfgbox = hwnd;
fe->cfg = frontend_get_config(fe, fe->cfg_which, &title);
SendMessage(fe->cfgbox, WM_SETFONT, (WPARAM)fe->cfgfont, FALSE);
- SetWindowLong(fe->cfgbox, GWL_USERDATA, (LONG)fe);
- SetWindowLong(fe->cfgbox, DWL_DLGPROC, (LONG)AboutDlgProc);
+ SetWindowLongPtr(fe->cfgbox, GWLP_USERDATA, (LONG_PTR)fe);
+ SetWindowLongPtr(fe->cfgbox, DWLP_DLGPROC, (LONG_PTR)AboutDlgProc);
id = 1000;
y = height/2;
SendMessage(fe->cfgbox, WM_SETFONT, (WPARAM)fe->cfgfont, FALSE);
- SetWindowLong(fe->cfgbox, GWL_USERDATA, (LONG)fe);
- SetWindowLong(fe->cfgbox, DWL_DLGPROC, (LONG)ConfigDlgProc);
+ SetWindowLongPtr(fe->cfgbox, GWLP_USERDATA, (LONG_PTR)fe);
+ SetWindowLongPtr(fe->cfgbox, DWLP_DLGPROC, (LONG_PTR)ConfigDlgProc);
/*
* Count the controls so we can allocate cfgaux.
static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
- frontend *fe = (frontend *)GetWindowLong(hwnd, GWL_USERDATA);
+ frontend *fe = (frontend *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
int cmd;
switch (message) {
cmd = wParam & ~0xF; /* low 4 bits reserved to Windows */
switch (cmd) {
case IDM_NEW:
- if (!midend_process_key(fe->me, 0, 0, 'n'))
+ if (!midend_process_key(fe->me, 0, 0, UI_NEWGAME))
PostQuitMessage(0);
break;
case IDM_RESTART:
midend_restart_game(fe->me);
break;
case IDM_UNDO:
- if (!midend_process_key(fe->me, 0, 0, 'u'))
+ if (!midend_process_key(fe->me, 0, 0, UI_UNDO))
PostQuitMessage(0);
break;
case IDM_REDO:
- if (!midend_process_key(fe->me, 0, 0, '\x12'))
+ if (!midend_process_key(fe->me, 0, 0, UI_REDO))
PostQuitMessage(0);
break;
case IDM_COPY:
}
break;
case IDM_QUIT:
- if (!midend_process_key(fe->me, 0, 0, 'q'))
+ if (!midend_process_key(fe->me, 0, 0, UI_QUIT))
PostQuitMessage(0);
break;
case IDM_CONFIG:
}
break;
case WM_CHAR:
- if (!midend_process_key(fe->me, 0, 0, (unsigned char)wParam))
- PostQuitMessage(0);
+ {
+ int key = (unsigned char)wParam;
+ if (key == '\x1A') {
+ BYTE keystate[256];
+ if (GetKeyboardState(keystate) &&
+ (keystate[VK_SHIFT] & 0x80) &&
+ (keystate[VK_CONTROL] & 0x80))
+ key = UI_REDO;
+ }
+ if (!midend_process_key(fe->me, 0, 0, key))
+ PostQuitMessage(0);
+ }
return 0;
case WM_TIMER:
if (fe->timer) {