win32gui patches (from Yitzhak)

[...]
One of them deals with the patch you just sent, that changes the name but
does so more extensively, particularly, also in the Save dialog in
mhmain.c.  Another is one of the changes to winhack.rc to make it compile
under Borland.

This also (beyond patches I sent): fixes no Options prompt bug, and fixes
up the menu bar (which I broke in one of my patches).

Tested on msc/bcc tty/win makefiles and vc ide.
This commit is contained in:
nethack.allison
2002-01-27 21:37:31 +00:00
parent 179932310b
commit 6e173ddf5f
6 changed files with 101 additions and 23 deletions
+77 -13
View File
@@ -71,21 +71,71 @@ void register_main_window_class()
wcex.cbClsExtra = 0; wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0; wcex.cbWndExtra = 0;
wcex.hInstance = GetNHApp()->hApp; wcex.hInstance = GetNHApp()->hApp;
wcex.hIcon = LoadIcon(GetNHApp()->hApp, (LPCTSTR)IDI_WINHACK); wcex.hIcon = LoadIcon(GetNHApp()->hApp, (LPCTSTR)IDI_NETHACKW);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = (TCHAR*)IDC_WINHACK; wcex.lpszMenuName = (TCHAR*)IDC_NETHACKW;
wcex.lpszClassName = szMainWindowClass; wcex.lpszClassName = szMainWindowClass;
RegisterClass(&wcex); RegisterClass(&wcex);
} }
/*
* Keypad keys are translated to the normal values below.
* Shifted keypad keys are translated to the
* shift values below.
*/
enum KEY_INDEXES {
KEY_NW, KEY_N, KEY_NE, KEY_MINUS,
KEY_W, KEY_STAY, KEY_E, KEY_PLUS,
KEY_SW, KEY_S, KEY_SE,
KEY_INV, KEY_WAITLOOK,
KEY_LAST};
static const unsigned char
/* normal, shift, control */
keypad[KEY_LAST][3] = {
{'y', 'Y', C('y')}, /* 7 */
{'k', 'K', C('k')}, /* 8 */
{'u', 'U', C('u')}, /* 9 */
{'m', C('p'), C('p')}, /* - */
{'h', 'H', C('h')}, /* 4 */
{'g', 'g', 'g'}, /* 5 */
{'l', 'L', C('l')}, /* 6 */
{'p', 'P', C('p')}, /* + */
{'b', 'B', C('b')}, /* 1 */
{'j', 'J', C('j')}, /* 2 */
{'n', 'N', C('n')}, /* 3 */
{'i', 'I', C('i')}, /* Ins */
{'.', ':', ':'} /* Del */
}, numpad[KEY_LAST][3] = {
{'7', M('7'), '7'}, /* 7 */
{'8', M('8'), '8'}, /* 8 */
{'9', M('9'), '9'}, /* 9 */
{'m', C('p'), C('p')}, /* - */
{'4', M('4'), '4'}, /* 4 */
{'g', 'G', 'g'}, /* 5 */
{'6', M('6'), '6'}, /* 6 */
{'p', 'P', C('p')}, /* + */
{'1', M('1'), '1'}, /* 1 */
{'2', M('2'), '2'}, /* 2 */
{'3', M('3'), '3'}, /* 3 */
{'i', 'I', C('i')}, /* Ins */
{'.', ':', ':'} /* Del */
};
#define STATEON(x) ((GetKeyState(x) & 0xFFFE) != 0)
#define KEYTABLE(x) ((iflags.num_pad ? numpad : keypad)[x] \
[(STATEON(VK_SHIFT) ? 1 : STATEON(VK_CONTROL) ? 2 : 0)])
/* /*
// FUNCTION: WndProc(HWND, unsigned, WORD, LONG) // FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
// //
// PURPOSE: Processes messages for the main window. // PURPOSE: Processes messages for the main window.
*/ */
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{ {
PNHMainWindow data; PNHMainWindow data;
@@ -112,40 +162,54 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
switch (wParam) switch (wParam)
{ {
case VK_LEFT: case VK_LEFT:
NHEVENT_KBD('4') NHEVENT_KBD(KEYTABLE(KEY_W));
return 0; return 0;
case VK_RIGHT: case VK_RIGHT:
NHEVENT_KBD('6') NHEVENT_KBD(KEYTABLE(KEY_E));
return 0; return 0;
case VK_UP: case VK_UP:
NHEVENT_KBD('8') NHEVENT_KBD(KEYTABLE(KEY_N));
return 0; return 0;
case VK_DOWN: case VK_DOWN:
NHEVENT_KBD('2') NHEVENT_KBD(KEYTABLE(KEY_S));
return 0; return 0;
case VK_HOME: case VK_HOME:
NHEVENT_KBD('7') NHEVENT_KBD(KEYTABLE(KEY_NW));
return 0; return 0;
case VK_END: case VK_END:
NHEVENT_KBD('1') NHEVENT_KBD(KEYTABLE(KEY_SW));
return 0; return 0;
case VK_PRIOR: case VK_PRIOR:
NHEVENT_KBD('9') NHEVENT_KBD(KEYTABLE(KEY_NE));
return 0; return 0;
case VK_NEXT: case VK_NEXT:
NHEVENT_KBD('3') NHEVENT_KBD(KEYTABLE(KEY_SE));
return 0; return 0;
case VK_DECIMAL:
case VK_DELETE: case VK_DELETE:
NHEVENT_KBD('.') NHEVENT_KBD(KEYTABLE(KEY_WAITLOOK));
return 0; return 0;
case VK_INSERT:
case VK_NUMPAD0:
NHEVENT_KBD(KEYTABLE(KEY_INV));
return 0;
case VK_SUBTRACT:
return 0;
NHEVENT_KBD(KEYTABLE(KEY_MINUS));
case VK_ADD:
return 0;
NHEVENT_KBD(KEYTABLE(KEY_PLUS));
} }
return 1; return 1;
} break; } break;
@@ -177,7 +241,7 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
case WM_CLOSE: case WM_CLOSE:
{ {
/* exit gracefully */ /* exit gracefully */
switch(MessageBox(hWnd, TEXT("Save?"), TEXT("WinHack"), MB_YESNOCANCEL | MB_ICONQUESTION)) { switch(MessageBox(hWnd, TEXT("Save?"), TEXT("NetHack for Windows"), MB_YESNOCANCEL | MB_ICONQUESTION)) {
case IDYES: NHEVENT_KBD('y'); dosave(); break; case IDYES: NHEVENT_KBD('y'); dosave(); break;
case IDNO: NHEVENT_KBD('q'); done(QUIT); break; case IDNO: NHEVENT_KBD('q'); done(QUIT); break;
case IDCANCEL: break; case IDCANCEL: break;
+2 -1
View File
@@ -7,6 +7,7 @@
#include "mhmain.h" #include "mhmain.h"
#include "mhmsg.h" #include "mhmsg.h"
#include "mhfont.h" #include "mhfont.h"
#include <commctrl.h>
#define MENU_MARGIN 0 #define MENU_MARGIN 0
#define NHMENU_STR_SIZE BUFSZ #define NHMENU_STR_SIZE BUFSZ
@@ -312,7 +313,7 @@ BOOL CALLBACK MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
} break; } break;
case NM_CLICK: { case NM_CLICK: {
LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE) lParam; LPNMLISTVIEW lpnmitem = (LPNMLISTVIEW) lParam;
if( lpnmitem->iItem==-1 ) return 0; if( lpnmitem->iItem==-1 ) return 0;
if( data->how==PICK_ANY ) { if( data->how==PICK_ANY ) {
SelectMenuItem( SelectMenuItem(
+10
View File
@@ -580,7 +580,17 @@ end_menu(window, prompt)
*/ */
void mswin_end_menu(winid wid, const char *prompt) void mswin_end_menu(winid wid, const char *prompt)
{ {
TCHAR wbuf[255];
logDebug("mswin_end_menu(%d, %s)\n", wid, prompt); logDebug("mswin_end_menu(%d, %s)\n", wid, prompt);
if ((wid >= 0) &&
(wid < MAXWINDOWS) &&
(GetNHApp()->windowlist[wid].win != NULL))
{
SetWindowText (
GetNHApp()->windowlist[wid].win,
NH_A2W(prompt, wbuf ,sizeof(wbuf))
);
}
} }
/* /*
+2 -2
View File
@@ -9,8 +9,8 @@
#define IDM_ABOUT 104 #define IDM_ABOUT 104
#define IDM_EXIT 105 #define IDM_EXIT 105
#define IDS_HELLO 106 #define IDS_HELLO 106
#define IDI_WINHACK 107 #define IDI_NETHACKW 107
#define IDC_WINHACK 109 #define IDC_NETHACKW 109
#define IDR_MAINFRAME 128 #define IDR_MAINFRAME 128
#define IDB_TILES 129 #define IDB_TILES 129
#define IDD_TEXT 130 #define IDD_TEXT 130
+1 -1
View File
@@ -49,7 +49,7 @@ int APIENTRY WinMain(HINSTANCE hInstance,
/* init applicatio structure */ /* init applicatio structure */
_nethack_app.hApp = hInstance; _nethack_app.hApp = hInstance;
_nethack_app.hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_WINHACK); _nethack_app.hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_NETHACKW);
_nethack_app.hMainWnd = NULL; _nethack_app.hMainWnd = NULL;
_nethack_app.hPopupWnd = NULL; _nethack_app.hPopupWnd = NULL;
_nethack_app.bmpTiles = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TILES)); _nethack_app.bmpTiles = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TILES));
+9 -6
View File
@@ -35,14 +35,14 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
// Icon with lowest ID value placed first to ensure application icon // Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems. // remains consistent on all systems.
IDI_WINHACK ICON DISCARDABLE "NETHACK.ICO" IDI_NETHACKW ICON DISCARDABLE "NETHACK.ICO"
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Menu // Menu
// //
IDC_WINHACK MENU DISCARDABLE IDC_NETHACKW MENU DISCARDABLE
BEGIN BEGIN
POPUP "&File" POPUP "&File"
BEGIN BEGIN
@@ -85,7 +85,7 @@ END
// Accelerator // Accelerator
// //
IDC_WINHACK ACCELERATORS MOVEABLE PURE IDC_NETHACKW ACCELERATORS MOVEABLE PURE
BEGIN BEGIN
"?", IDM_ABOUT, ASCII, ALT "?", IDM_ABOUT, ASCII, ALT
"/", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT
@@ -118,9 +118,12 @@ BEGIN
END END
IDD_MENU DIALOGEX 0, 0, 187, 153 IDD_MENU DIALOGEX 0, 0, 187, 153
STYLE WS_POPUP | WS_CLIPSIBLINGS | WS_THICKFRAME STYLE WS_POPUP | WS_CLIPSIBLINGS | WS_THICKFRAME | WS_CAPTION
EXSTYLE WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT | WS_EX_STATICEDGE EXSTYLE WS_EX_CLIENTEDGE | WS_EX_CONTROLPARENT | WS_EX_STATICEDGE
FONT 8, "MS Sans Serif", 0, 0, 0x1 FONT 8, "MS Sans Serif"
#ifndef __BORLANDC__
, 0, 0, 0x1
#endif
BEGIN BEGIN
DEFPUSHBUTTON "OK",IDOK,7,132,50,14,BS_FLAT DEFPUSHBUTTON "OK",IDOK,7,132,50,14,BS_FLAT
PUSHBUTTON "Cancel",IDCANCEL,130,132,50,14,BS_FLAT PUSHBUTTON "Cancel",IDCANCEL,130,132,50,14,BS_FLAT
@@ -275,7 +278,7 @@ END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_APP_TITLE "NetHack for Windows - Graphical Port" IDS_APP_TITLE "NetHack for Windows - Graphical Port"
IDC_WINHACK "WINHACK" IDC_NETHACKW "NETHACKW"
END END
#endif // English (U.S.) resources #endif // English (U.S.) resources