ce changes (from <Someone>)

The following files are gone (sys\wince):
- stat.h (moved to ceinc\sys\stat.h)
- fcntl.h (moved to ceinc\fcntl.h)
- errno.h (moved to ceinc\errno.h)
- assert.h (moved to ceinc\assert.h)

The following files were added:
- mhtxtbuf.c
- mhtxtbuf.h
- menubar.uu
- ceinc
- ceinc\sys
- ceinc\fcntl.h
- ceinc\errno.h
- ceinc\assert.h
- ceinc\sys\stat.h

CE notes:

Fixes:
- added new options "wraptext", "fullscreen" and "softkeyboard"
- CE341-1 fix ("wraptext" option)
- hide map scrollbars on Smartphone
- added View->Options menu
- PocketPC: added "Fit to screen" and "Show/Hide keypad" icons
  on the menu bar
- Smartphone: '<', '>' keys were mapped incorrectly
- build: use source files directly from <buildroot>\sys\wince instead of
  copying them to <buildroot>\wince\
This commit is contained in:
nethack.allison
2003-08-01 12:06:43 +00:00
parent 31a2c8cefa
commit b85ff22c1f
29 changed files with 668 additions and 138236 deletions
+18 -11
View File
@@ -175,17 +175,24 @@ vmsmisc.c vmstty.c vmsunix.c
sys/wince: sys/wince:
(files for Windows CE and PocketPC) (files for Windows CE and PocketPC)
Install.ce assert.h bootstrp.mak celib.c cesetup.bat Install.ce bootstrp.mak celib.c cesetup.bat cesound.c
cesound.c defaults.nh errno.h fcntl.h hpc.vcp defaults.nh hpc.vcp menubar.uu keypad.uu mhaskyn.c
keypad.uu mhaskyn.c mhaskyn.h mhcmd.c mhcmd.h mhaskyn.h mhcmd.c mhcmd.h mhcolor.c mhcolor.h
mhcolor.c mhcolor.h mhdlg.c mhdlg.h mhfont.c mhdlg.c mhdlg.h mhfont.c mhfont.h mhinput.c
mhfont.h mhinput.c mhinput.h mhmain.c mhmain.h mhinput.h mhmain.c mhmain.h mhmap.c mhmap.h
mhmap.c mhmap.h mhmenu.c mhmenu.h mhmsg.h mhmenu.c mhmenu.h mhmsg.h mhmsgwnd.c mhmsgwnd.h
mhmsgwnd.c mhmsgwnd.h mhrip.c mhrip.h mhstatus.c mhrip.c mhrip.h mhstatus.c mhstatus.h mhtext.c
mhstatus.h mhtext.c mhtext.h mswproc.c newres.h mhtext.h mhtxtbuf.c mhtxtbuf.h mswproc.c newres.h
palmpc.vcp pocketpc.vcp resource.h smartphn.vcp stat.h palmpc.vcp pocketpc.vcp resource.h smartphn.vcp winMS.h
winMS.h wince.vcw winhack.c winhack.rc winhcksp.rc wince.vcw winhack.c winhack.rc winhcksp.rc winmain.c
winmain.c
sys/wince/ceinc:
(header files for Windows CE and PocketPC)
assert.h errno.h fcntl.h
sys/wince/ceinc/sys:
(sys/stat.h for Windows CE and PocketPC)
stat.h
sys/winnt: sys/winnt:
(files for Windows 9x, NT and Windows2000 version) (files for Windows 9x, NT and Windows2000 version)
+39 -20
View File
@@ -254,8 +254,8 @@ struct tm {
#define _TM_DEFINED #define _TM_DEFINED
#endif #endif
struct tm * __cdecl localtime(const time_t *); extern struct tm * __cdecl localtime(const time_t *);
time_t __cdecl time(time_t *); extern time_t __cdecl time(time_t *);
/* __stdio.h__ */ /* __stdio.h__ */
#ifndef BUFSIZ #ifndef BUFSIZ
@@ -267,16 +267,16 @@ time_t __cdecl time(time_t *);
/* __io.h__ */ /* __io.h__ */
typedef long off_t; typedef long off_t;
int __cdecl close(int); extern int __cdecl close(int);
int __cdecl creat(const char *, int); extern int __cdecl creat(const char *, int);
int __cdecl eof(int); extern int __cdecl eof(int);
long __cdecl lseek(int, long, int); extern long __cdecl lseek(int, long, int);
int __cdecl open(const char *, int, ...); extern int __cdecl open(const char *, int, ...);
int __cdecl read(int, void *, unsigned int); extern int __cdecl read(int, void *, unsigned int);
int __cdecl unlink(const char *); extern int __cdecl unlink(const char *);
int __cdecl write(int, const void *, unsigned int); extern int __cdecl write(int, const void *, unsigned int);
int __cdecl rename(const char *, const char *); extern int __cdecl rename(const char *, const char *);
int __cdecl access(const char *, int); extern int __cdecl access(const char *, int);
#ifdef DeleteFile #ifdef DeleteFile
#undef DeleteFile #undef DeleteFile
@@ -284,7 +284,7 @@ int __cdecl access(const char *, int);
#define DeleteFile(a) unlink(a) #define DeleteFile(a) unlink(a)
int chdir( const char *dirname ); int chdir( const char *dirname );
char *getcwd( char *buffer, int maxlen ); extern char *getcwd( char *buffer, int maxlen );
/* __stdlib.h__ */ /* __stdlib.h__ */
#define abort() (void)TerminateProcess(GetCurrentProcess(), 0) #define abort() (void)TerminateProcess(GetCurrentProcess(), 0)
@@ -301,14 +301,33 @@ char *getcwd( char *buffer, int maxlen );
#if defined(WIN_CE_PS2xx) || defined(WIN32_PLATFORM_HPCPRO) #if defined(WIN_CE_PS2xx) || defined(WIN32_PLATFORM_HPCPRO)
#define ZeroMemory(p, s) memset((p), 0, (s)) #define ZeroMemory(p, s) memset((p), 0, (s))
int __cdecl isupper(int c); extern int __cdecl isupper(int c);
int __cdecl isdigit(int c); extern int __cdecl isdigit(int c);
int __cdecl isspace(int c); extern int __cdecl isspace(int c);
int __cdecl isprint(int c); extern int __cdecl isprint(int c);
extern char* __cdecl _strdup(const char* s);
extern char* __cdecl strrchr( const char *string, int c );
extern int __cdecl _stricmp(const char* a, const char* b);
extern FILE * __cdecl fopen(const char* filename, const char *mode);
extern int __cdecl fscanf(FILE *f , const char *format, ...);
extern int __cdecl fprintf(FILE *f , const char *format, ...);
extern int __cdecl vfprintf(FILE* f, const char *format, va_list args);
extern int __cdecl fgetc(FILE * f);
extern char * __cdecl fgets(char *s, int size, FILE *f);
extern int __cdecl printf(const char *format, ...);
extern int __cdecl vprintf(const char *format, va_list args);
extern int __cdecl puts(const char * s);
extern FILE* __cdecl _getstdfilex(int desc);
extern int __cdecl fclose(FILE * f);
extern size_t __cdecl fread(void *p, size_t size, size_t count, FILE *f);
extern size_t __cdecl fwrite(const void *p, size_t size, size_t count, FILE * f);
extern int __cdecl fflush(FILE *f);
extern int __cdecl feof(FILE *f);
extern int __cdecl fseek(FILE *f, long offset, int from);
extern long __cdecl ftell(FILE * f);
char* __cdecl _strdup(const char* s);
char* __cdecl strrchr( const char *string, int c );
int __cdecl _stricmp(const char* a, const char* b);
#endif #endif
/* ARM - the processor; avoids conflict with ARM in hack.h */ /* ARM - the processor; avoids conflict with ARM in hack.h */
+1 -2
View File
@@ -31,8 +31,7 @@ From a Windows explorer window:
A "wince" directory will be created off the top of the NetHack source A "wince" directory will be created off the top of the NetHack source
tree, and a Microsoft embedded C workspace file will be placed in the tree, and a Microsoft embedded C workspace file will be placed in the
top of the NetHack source tree. The "wince" directory will also have top of the NetHack source tree.
the subdirectories wince\ceinc and wince\ceinc\sys.
------------ ------------
| BUILDING | | BUILDING |
+6 -1
View File
@@ -234,7 +234,7 @@ all : $(INCL)\date.h $(INCL)\onames.h $(INCL)\pm.h \
$(DAT)\oracles $(DAT)\quest.dat $(O)sp_lev.tag $(DLB) $(SRC)\tile.c \ $(DAT)\oracles $(DAT)\quest.dat $(O)sp_lev.tag $(DLB) $(SRC)\tile.c \
$(SWINCE)\nethack.ico $(SWINCE)\tiles.bmp $(SWINCE)\mnsel.bmp \ $(SWINCE)\nethack.ico $(SWINCE)\tiles.bmp $(SWINCE)\mnsel.bmp \
$(SWINCE)\mnunsel.bmp $(SWINCE)\petmark.bmp $(SWINCE)\mnselcnt.bmp \ $(SWINCE)\mnunsel.bmp $(SWINCE)\petmark.bmp $(SWINCE)\mnselcnt.bmp \
$(SWINCE)\keypad.bmp $(SWINCE)\keypad.bmp $(SWINCE)\menubar.bmp
@echo Done! @echo Done!
$(O)sp_lev.tag: $(DAT)\bigroom.des $(DAT)\castle.des \ $(O)sp_lev.tag: $(DAT)\bigroom.des $(DAT)\castle.des \
@@ -372,6 +372,11 @@ $(SWINCE)\keypad.bmp: $(U)uudecode.exe $(SWINCE)\keypad.uu
..\util\uudecode.exe keypad.uu ..\util\uudecode.exe keypad.uu
chdir $(WINCE) chdir $(WINCE)
$(SWINCE)\menubar.bmp: $(U)uudecode.exe $(SWINCE)\menubar.uu
chdir $(SWINCE)
..\util\uudecode.exe menubar.uu
chdir $(WINCE)
#========================================== #==========================================
# Level Compiler Stuff # Level Compiler Stuff
#========================================== #==========================================
+1 -45
View File
@@ -8,8 +8,6 @@ REM
REM Make sure directories necessary for build exist REM Make sure directories necessary for build exist
REM REM
if NOT exist ..\..\wince\*.* mkdir ..\..\wince if NOT exist ..\..\wince\*.* mkdir ..\..\wince
if NOT exist ..\..\wince\ceinc\*.* mkdir ..\..\wince\ceinc
if NOT exist ..\..\wince\ceinc\sys\*.* mkdir ..\..\wince\ceinc\sys
REM REM
REM Get these files from the win\win32 port REM Get these files from the win\win32 port
REM REM
@@ -18,58 +16,16 @@ copy ..\..\win\win32\mnselcnt.uu ..\..\wince\mnselcnt.uu
copy ..\..\win\win32\mnunsel.uu ..\..\wince\mnunsel.uu copy ..\..\win\win32\mnunsel.uu ..\..\wince\mnunsel.uu
copy ..\..\win\win32\petmark.uu ..\..\wince\petmark.uu copy ..\..\win\win32\petmark.uu ..\..\wince\petmark.uu
copy ..\..\sys\winnt\nhico.uu ..\..\wince\nhico.uu copy ..\..\sys\winnt\nhico.uu ..\..\wince\nhico.uu
copy ..\..\sys\wince\menubar.uu ..\..\wince\menubar.uu
REM REM
REM Get these files from sys\wince REM Get these files from sys\wince
REM REM
copy bootstrp.mak ..\..\wince\bootstrp.mak copy bootstrp.mak ..\..\wince\bootstrp.mak
copy wince.vcw ..\..\wince.vcw copy wince.vcw ..\..\wince.vcw
copy keypad.uu ..\..\wince\keypad.uu
copy assert.h ..\..\wince\assert.h
copy assert.h ..\..\wince\ceinc\assert.h
copy errno.h ..\..\wince\ceinc\errno.h
copy fcntl.h ..\..\wince\ceinc\fcntl.h
copy stat.h ..\..\wince\ceinc\sys\stat.h
copy celib.c ..\..\wince\celib.c
copy mhaskyn.c ..\..\wince\mhaskyn.c
copy mhaskyn.h ..\..\wince\mhaskyn.h
copy mhcmd.c ..\..\wince\mhcmd.c
copy mhcmd.h ..\..\wince\mhcmd.h
copy mhcolor.c ..\..\wince\mhcolor.c
copy mhcolor.h ..\..\wince\mhcolor.h
copy mhdlg.c ..\..\wince\mhdlg.c
copy mhdlg.h ..\..\wince\mhdlg.h
copy mhfont.c ..\..\wince\mhfont.c
copy mhfont.h ..\..\wince\mhfont.h
copy mhinput.c ..\..\wince\mhinput.c
copy mhinput.h ..\..\wince\mhinput.h
copy mhmain.c ..\..\wince\mhmain.c
copy mhmain.h ..\..\wince\mhmain.h
copy mhmap.c ..\..\wince\mhmap.c
copy mhmap.h ..\..\wince\mhmap.h
copy mhmenu.c ..\..\wince\mhmenu.c
copy mhmenu.h ..\..\wince\mhmenu.h
copy mhmsg.h ..\..\wince\mhmsg.h
copy mhmsgwnd.c ..\..\wince\mhmsgwnd.c
copy mhmsgwnd.h ..\..\wince\mhmsgwnd.h
copy mhrip.c ..\..\wince\mhrip.c
copy mhrip.h ..\..\wince\mhrip.h
copy mhstatus.c ..\..\wince\mhstatus.c
copy mhstatus.h ..\..\wince\mhstatus.h
copy mhtext.c ..\..\wince\mhtext.c
copy mhtext.h ..\..\wince\mhtext.h
copy mswproc.c ..\..\wince\mswproc.c
copy newres.h ..\..\wince\newres.h
copy resource.h ..\..\wince\resource.h
copy hpc.vcp ..\..\wince\wince_hpc.vcp copy hpc.vcp ..\..\wince\wince_hpc.vcp
copy palmpc.vcp ..\..\wince\wince_palm_pc.vcp copy palmpc.vcp ..\..\wince\wince_palm_pc.vcp
copy pocketpc.vcp ..\..\wince\wince_pocket_pc.vcp copy pocketpc.vcp ..\..\wince\wince_pocket_pc.vcp
copy smartphn.vcp ..\..\wince\wince_smartphone.vcp copy smartphn.vcp ..\..\wince\wince_smartphone.vcp
copy winhack.c ..\..\wince\winhack.c
copy winhack.rc ..\..\wince\winhack.rc
copy winhcksp.rc ..\..\wince\winhack_sp.rc
copy winmain.c ..\..\wince\winmain.c
copy winMS.h ..\..\wince\winMS.h
copy cesound.c ..\..\wince\cesound.c
echo. echo.
echo Proceed with the following steps: echo Proceed with the following steps:
echo. echo.
+3 -2
View File
@@ -43,7 +43,7 @@ OPTIONS=time,noshowexp,number_pad,lit_corridor,rest_on_space
# possible map_mode options include: tiles|ascii4x6|ascii6x8|ascii8x8|ascii16x8| # possible map_mode options include: tiles|ascii4x6|ascii6x8|ascii8x8|ascii16x8|
# ascii7x12|ascii8x12|ascii16x12|ascii12x16| # ascii7x12|ascii8x12|ascii16x12|ascii12x16|
# ascii10x18|fit_to_screen # ascii10x18|fit_to_screen
OPTIONS=map_mode:tiles,scroll_margin:3 OPTIONS=map_mode:tiles,scroll_margin:4
# Menu settings # Menu settings
# OPTIONS=font_menu:Arial # OPTIONS=font_menu:Arial
@@ -51,7 +51,8 @@ OPTIONS=map_mode:tiles,scroll_margin:3
# Other # Other
OPTIONS=hilite_pet,!toptenwin OPTIONS=hilite_pet,!toptenwin
OPTIONS=!splash_screen,player_selection:prompts OPTIONS=!splash_screen,player_selection:prompts
OPTIONS=vary_msgcount:4 OPTIONS=vary_msgcount:3
OPTIONS=fullscreen,wraptext,softkeyboard
# Status/message window colors # Status/message window colors
# Possible color options include: # Possible color options include:
-48147
View File
File diff suppressed because it is too large Load Diff
+12
View File
@@ -0,0 +1,12 @@
begin 600 menubar.bmp
M0DUV`0```````'8````H````(````!`````!``0````````!````````````
M````````````````````@```@````("``(````"``(``@(```,#`P`"`@(``
M``#_``#_````__\`_P```/\`_P#__P``____`'=W=W=W=W=W=W=W=W=W=W=W
M=W=W=W=W=W=W=W=W=W=W=$1$1$1$1'=W=W=W=W=W=W1$_T1/]$1W=W=W=W=W
M=W=T1/_T__1$=W=W=W=W=W=W=/______]'=W=P<'!P=W=W3_______1W=W#P
M\/#P=W=T3__T__]$=W</#P\/#P=W=$3_1$_T1'=P\/#P\/#P=W1/__3__T1W
M=P\/#P\/!W=T_______T=W#P\/#P\/!W=/______]'=W!P<'!P<'=W1$__3_
M]$1W=W=W=W=W=W=T1/]$3_1$=W=W=W=W=W=W=$1$1$1$1'=W=W=W=W=W=W=W
.=W=W=W=W=W=W=W=W=W=$
`
end
+2 -2
View File
@@ -185,8 +185,8 @@ NHCmdPadCell cells_layout_movement[NH_CMDPAD_CELLNUM] =
{ -1, "1", "1", 7, NH_CELL_REG, 1, (void*)-1 }, { -1, "1", "1", 7, NH_CELL_REG, 1, (void*)-1 },
{ -1, "2", "2", 8, NH_CELL_REG, 1, (void*)-1 }, { -1, "2", "2", 8, NH_CELL_REG, 1, (void*)-1 },
{ -1, "3", "3", 9, NH_CELL_REG, 1, (void*)-1 }, { -1, "3", "3", 9, NH_CELL_REG, 1, (void*)-1 },
{ -1, ">", ">", 10, NH_CELL_REG, 1, (void*)-1 }, { -1, "<", "<", 10, NH_CELL_REG, 1, (void*)-1 },
{ -1, "<", "<", 12, NH_CELL_REG, 1, (void*)-1 }, { -1, ">", ">", 12, NH_CELL_REG, 1, (void*)-1 },
{ -1, "X", "X", 13, NH_CELL_LAYOUT_MENU, 1, 0 } { -1, "X", "X", 13, NH_CELL_LAYOUT_MENU, 1, 0 }
}; };
+24 -7
View File
@@ -128,7 +128,7 @@ LRESULT CALLBACK GetlinDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lP
TRUE ); TRUE );
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
NHSPhoneDialogSetup(hWnd, TRUE); NHSPhoneDialogSetup(hWnd, TRUE, FALSE);
#endif #endif
/* set focus to the edit control */ /* set focus to the edit control */
@@ -240,7 +240,7 @@ LRESULT CALLBACK ExtCmdDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lP
} }
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
NHSPhoneDialogSetup(hWnd, FALSE); NHSPhoneDialogSetup(hWnd, FALSE, FALSE);
GetClientRect(hWnd, &dlg_rt); GetClientRect(hWnd, &dlg_rt);
MoveWindow(GetDlgItem(hWnd, IDC_EXTCMD_LIST), MoveWindow(GetDlgItem(hWnd, IDC_EXTCMD_LIST),
@@ -362,7 +362,7 @@ BOOL CALLBACK PlayerSelectorDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPAR
plselInitDialog(hWnd); plselInitDialog(hWnd);
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
NHSPhoneDialogSetup(hWnd, FALSE); NHSPhoneDialogSetup(hWnd, FALSE, FALSE);
#endif #endif
/* set focus on the role checkbox (random) field */ /* set focus on the role checkbox (random) field */
SetFocus(GetDlgItem(hWnd, IDC_PLSEL_ROLE_RANDOM)); SetFocus(GetDlgItem(hWnd, IDC_PLSEL_ROLE_RANDOM));
@@ -472,6 +472,22 @@ void plselInitDialog(HWND hWnd)
/* set player name */ /* set player name */
SetDlgItemText(hWnd, IDC_PLSEL_NAME, NH_A2W(plname, wbuf, sizeof(wbuf))); SetDlgItemText(hWnd, IDC_PLSEL_NAME, NH_A2W(plname, wbuf, sizeof(wbuf)));
/* check flags for consistency */
if( flags.initrole>=0 ) {
if (flags.initrace>=0 && !validrace(flags.initrole, flags.initrace)) {
flags.initrace = ROLE_NONE;
}
if (flags.initgend>=0 && !validgend(flags.initrole, flags.initrace, flags.initgend)) {
flags.initgend = ROLE_NONE;
}
if (flags.initalign>=0 && !validalign(flags.initrole, flags.initrace, flags.initalign)) {
flags.initalign = ROLE_NONE;
}
}
/* populate select boxes */
plselAdjustLists(hWnd, -1); plselAdjustLists(hWnd, -1);
/* intialize roles list */ /* intialize roles list */
@@ -537,16 +553,16 @@ void plselAdjustLists(HWND hWnd, int changed_sel)
/* get current selections */ /* get current selections */
ind = SendMessage(control_role, CB_GETCURSEL, 0, 0); ind = SendMessage(control_role, CB_GETCURSEL, 0, 0);
initrole = (ind==LB_ERR)? ROLE_NONE : SendMessage(control_role, CB_GETITEMDATA, ind, 0); initrole = (ind==LB_ERR)? flags.initrole : SendMessage(control_role, CB_GETITEMDATA, ind, 0);
ind = SendMessage(control_race, CB_GETCURSEL, 0, 0); ind = SendMessage(control_race, CB_GETCURSEL, 0, 0);
initrace = (ind==LB_ERR)? ROLE_NONE : SendMessage(control_race, CB_GETITEMDATA, ind, 0); initrace = (ind==LB_ERR)? flags.initrace : SendMessage(control_race, CB_GETITEMDATA, ind, 0);
ind = SendMessage(control_gender, CB_GETCURSEL, 0, 0); ind = SendMessage(control_gender, CB_GETCURSEL, 0, 0);
initgend = (ind==LB_ERR)? ROLE_NONE : SendMessage(control_gender, CB_GETITEMDATA, ind, 0); initgend = (ind==LB_ERR)? flags.initgend : SendMessage(control_gender, CB_GETITEMDATA, ind, 0);
ind = SendMessage(control_align, CB_GETCURSEL, 0, 0); ind = SendMessage(control_align, CB_GETCURSEL, 0, 0);
initalign = (ind==LB_ERR)? ROLE_NONE : SendMessage(control_align, CB_GETITEMDATA, ind, 0); initalign = (ind==LB_ERR)? flags.initalign : SendMessage(control_align, CB_GETITEMDATA, ind, 0);
/* intialize roles list */ /* intialize roles list */
if( changed_sel==-1 ) { if( changed_sel==-1 ) {
@@ -624,6 +640,7 @@ void plselAdjustLists(HWND hWnd, int changed_sel)
SendMessage(control_gender, CB_SETITEMDATA, (WPARAM)ind, (LPARAM)i ); SendMessage(control_gender, CB_SETITEMDATA, (WPARAM)ind, (LPARAM)i );
if( i==initgend ) { if( i==initgend ) {
SendMessage(control_gender, CB_SETCURSEL, (WPARAM)ind, (LPARAM)0 ); SendMessage(control_gender, CB_SETCURSEL, (WPARAM)ind, (LPARAM)0 );
valid_opt = 1;
} }
} }
+38 -1
View File
@@ -174,8 +174,13 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
menubar.dwFlags = 0; menubar.dwFlags = 0;
menubar.nToolBarId = IDC_WINHACK; menubar.nToolBarId = IDC_WINHACK;
menubar.hInstRes = GetNHApp()->hApp; menubar.hInstRes = GetNHApp()->hApp;
# if defined(WIN_CE_POCKETPC)
menubar.nBmpId = IDB_MENUBAR;
menubar.cBmpImages = 2;
# else
menubar.nBmpId = 0; menubar.nBmpId = 0;
menubar.cBmpImages = 0; menubar.cBmpImages = 0;
# endif
if( !SHCreateMenuBar(&menubar) ) panic("cannot create menu"); if( !SHCreateMenuBar(&menubar) ) panic("cannot create menu");
GetNHApp()->hMenuBar = menubar.hwndMB; GetNHApp()->hMenuBar = menubar.hwndMB;
#else #else
@@ -435,10 +440,30 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
/*-----------------------------------------------------------------------*/ /*-----------------------------------------------------------------------*/
case WM_ACTIVATE: case WM_ACTIVATE:
if( LOWORD(wParam)!=WA_INACTIVE ) {
#if defined(WIN_CE_POCKETPC) || defined(WIN_CE_SMARTPHONE)
if( GetNHApp()->bFullScreen )
SHFullScreen(GetNHApp()->hMainWnd, SHFS_HIDETASKBAR | SHFS_HIDESTARTICON);
else
SHFullScreen(GetNHApp()->hMainWnd, SHFS_SHOWTASKBAR | SHFS_SHOWSTARTICON);
#endif
mswin_layout_main_window(NULL);
}
break;
case WM_SETTINGCHANGE: case WM_SETTINGCHANGE:
#if defined(WIN_CE_POCKETPC) || defined(WIN_CE_SMARTPHONE)
if( GetNHApp()->bFullScreen )
SHFullScreen(GetNHApp()->hMainWnd, SHFS_HIDETASKBAR | SHFS_HIDESTARTICON);
else
SHFullScreen(GetNHApp()->hMainWnd, SHFS_SHOWTASKBAR | SHFS_SHOWSTARTICON);
#endif
mswin_layout_main_window(NULL);
break;
case WM_SIZE: case WM_SIZE:
mswin_layout_main_window(NULL); mswin_layout_main_window(NULL);
break; break;
/*-----------------------------------------------------------------------*/ /*-----------------------------------------------------------------------*/
@@ -540,6 +565,7 @@ void mswin_layout_main_window(HWND changed_child)
ZeroMemory(&sip, sizeof(sip)); ZeroMemory(&sip, sizeof(sip));
sip.cbSize = sizeof(sip); sip.cbSize = sizeof(sip);
SHSipInfo(SPI_GETSIPINFO, 0, &sip, 0); SHSipInfo(SPI_GETSIPINFO, 0, &sip, 0);
if( GetNHApp()->bFullScreen ) sip.rcVisibleDesktop.top = 0;
/* adjust client rectangle size */ /* adjust client rectangle size */
GetWindowRect(GetNHApp()->hMenuBar, &menu_bar); GetWindowRect(GetNHApp()->hMenuBar, &menu_bar);
@@ -558,6 +584,13 @@ void mswin_layout_main_window(HWND changed_child)
#else #else
# if !defined(WIN_CE_SMARTPHONE) # if !defined(WIN_CE_SMARTPHONE)
client_rt.top += CommandBar_Height(GetNHApp()->hMenuBar); client_rt.top += CommandBar_Height(GetNHApp()->hMenuBar);
# else
/* Smartphone only */
if( GetNHApp()->bFullScreen ) {
RECT menu_bar;
GetWindowRect(GetNHApp()->hMenuBar, &menu_bar);
client_rt.bottom -= menu_bar.bottom-menu_bar.top;
}
# endif # endif
#endif #endif
@@ -866,6 +899,10 @@ LRESULT onWMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
mswin_layout_main_window(GetNHApp()->hCmdWnd); mswin_layout_main_window(GetNHApp()->hCmdWnd);
break; break;
case IDM_VIEW_OPTIONS:
doset();
break;
case IDM_HELP_LONG: case IDM_HELP_LONG:
display_file(HELP, TRUE); display_file(HELP, TRUE);
break; break;
+34 -24
View File
@@ -47,16 +47,19 @@ static COLORREF nhcolor_to_RGB(int c);
HWND mswin_init_map_window () { HWND mswin_init_map_window () {
static int run_once = 0; static int run_once = 0;
HWND ret; HWND ret;
DWORD styles;
if( !run_once ) { if( !run_once ) {
register_map_window_class(); register_map_window_class();
run_once = 1; run_once = 1;
} }
styles = WS_CHILD | WS_CLIPSIBLINGS;
if( !GetNHApp()->bHideScrollBars ) styles |= WS_HSCROLL | WS_VSCROLL;
ret = CreateWindow( ret = CreateWindow(
szNHMapWindowClass, /* registered class name */ szNHMapWindowClass, /* registered class name */
NULL, /* window name */ NULL, /* window name */
WS_CHILD | WS_HSCROLL | WS_VSCROLL | WS_CLIPSIBLINGS, /* window style */ styles, /* window style */
0, /* horizontal position of window - set it later */ 0, /* horizontal position of window - set it later */
0, /* vertical position of window - set it later */ 0, /* vertical position of window - set it later */
0, /* window width - set it later */ 0, /* window width - set it later */
@@ -118,13 +121,15 @@ void mswin_map_stretch(HWND hWnd, LPSIZE lpsz, BOOL redraw)
data->xPos = max(0, min(COLNO-data->xPageSize+1, u.ux - data->xPageSize/2)); data->xPos = max(0, min(COLNO-data->xPageSize+1, u.ux - data->xPageSize/2));
} }
si.cbSize = sizeof(si); if( !GetNHApp()->bHideScrollBars ) {
si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS; si.cbSize = sizeof(si);
si.nMin = 0; si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS;
si.nMax = COLNO; si.nMin = 0;
si.nPage = data->xPageSize; si.nMax = COLNO;
si.nPos = data->xPos; si.nPage = data->xPageSize;
SetScrollInfo(hWnd, SB_HORZ, &si, TRUE); si.nPos = data->xPos;
SetScrollInfo(hWnd, SB_HORZ, &si, TRUE);
}
/* adjust vertical scroll bar */ /* adjust vertical scroll bar */
if( data->bFitToScreenMode ) if( data->bFitToScreenMode )
@@ -140,13 +145,15 @@ void mswin_map_stretch(HWND hWnd, LPSIZE lpsz, BOOL redraw)
data->yPos = max(0, min(ROWNO-data->yPageSize+1, u.uy - data->yPageSize/2)); data->yPos = max(0, min(ROWNO-data->yPageSize+1, u.uy - data->yPageSize/2));
} }
si.cbSize = sizeof(si); if( !GetNHApp()->bHideScrollBars ) {
si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS; si.cbSize = sizeof(si);
si.nMin = 0; si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS;
si.nMax = ROWNO; si.nMin = 0;
si.nPage = data->yPageSize; si.nMax = ROWNO;
si.nPos = data->yPos; si.nPage = data->yPageSize;
SetScrollInfo(hWnd, SB_VERT, &si, TRUE); si.nPos = data->yPos;
SetScrollInfo(hWnd, SB_VERT, &si, TRUE);
}
/* create font */ /* create font */
if( data->hMapFont ) DeleteObject(data->hMapFont); if( data->hMapFont ) DeleteObject(data->hMapFont);
@@ -733,10 +740,12 @@ void onMSNH_VScroll(HWND hWnd, WPARAM wParam, LPARAM lParam)
(CONST RECT *) NULL, (CONST RECT *) NULL, (CONST RECT *) NULL, (CONST RECT *) NULL,
(HRGN) NULL, (LPRECT) NULL, SW_INVALIDATE | SW_ERASE); (HRGN) NULL, (LPRECT) NULL, SW_INVALIDATE | SW_ERASE);
si.cbSize = sizeof(si); if( !GetNHApp()->bHideScrollBars ) {
si.fMask = SIF_POS; si.cbSize = sizeof(si);
si.nPos = data->yPos; si.fMask = SIF_POS;
SetScrollInfo(hWnd, SB_VERT, &si, TRUE); si.nPos = data->yPos;
SetScrollInfo(hWnd, SB_VERT, &si, TRUE);
}
} }
/* on WM_HSCROLL */ /* on WM_HSCROLL */
@@ -791,11 +800,12 @@ void onMSNH_HScroll(HWND hWnd, WPARAM wParam, LPARAM lParam)
(CONST RECT *) NULL, (CONST RECT *) NULL, (CONST RECT *) NULL, (CONST RECT *) NULL,
(HRGN) NULL, (LPRECT) NULL, SW_INVALIDATE | SW_ERASE); (HRGN) NULL, (LPRECT) NULL, SW_INVALIDATE | SW_ERASE);
if( !GetNHApp()->bHideScrollBars ) {
si.cbSize = sizeof(si); si.cbSize = sizeof(si);
si.fMask = SIF_POS; si.fMask = SIF_POS;
si.nPos = data->xPos; si.nPos = data->xPos;
SetScrollInfo(hWnd, SB_HORZ, &si, TRUE); SetScrollInfo(hWnd, SB_HORZ, &si, TRUE);
}
} }
/* map nethack map coordinates to the screen location */ /* map nethack map coordinates to the screen location */
+56 -35
View File
@@ -9,6 +9,7 @@
#include "mhinput.h" #include "mhinput.h"
#include "mhfont.h" #include "mhfont.h"
#include "mhcolor.h" #include "mhcolor.h"
#include "mhtxtbuf.h"
#define MENU_MARGIN 0 #define MENU_MARGIN 0
#define NHMENU_STR_SIZE BUFSZ #define NHMENU_STR_SIZE BUFSZ
@@ -45,7 +46,7 @@ typedef struct mswin_nethack_menu_window {
} menu; } menu;
struct menu_text { struct menu_text {
TCHAR* text; PNHTextBuffer text;
} text; } text;
}; };
int result; int result;
@@ -237,7 +238,12 @@ LRESULT CALLBACK MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
data = (PNHMenuWindow)GetWindowLong(hWnd, GWL_USERDATA); data = (PNHMenuWindow)GetWindowLong(hWnd, GWL_USERDATA);
switch (message) switch (message)
{ {
case WM_INITDIALOG: case WM_INITDIALOG: {
HWND text_control;
HDC hDC;
text_control = GetDlgItem(hWnd, IDC_MENU_TEXT);
data = (PNHMenuWindow)malloc(sizeof(NHMenuWindow)); data = (PNHMenuWindow)malloc(sizeof(NHMenuWindow));
ZeroMemory(data, sizeof(NHMenuWindow)); ZeroMemory(data, sizeof(NHMenuWindow));
data->type = MENU_TYPE_TEXT; data->type = MENU_TYPE_TEXT;
@@ -250,14 +256,24 @@ LRESULT CALLBACK MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
SetWindowLong(hWnd, GWL_USERDATA, (LONG)data); SetWindowLong(hWnd, GWL_USERDATA, (LONG)data);
/* subclass edit control */ /* subclass edit control */
editControlWndProc = (WNDPROC)GetWindowLong(GetDlgItem(hWnd, IDC_MENU_TEXT), GWL_WNDPROC); editControlWndProc = (WNDPROC)GetWindowLong(text_control, GWL_WNDPROC);
SetWindowLong(GetDlgItem(hWnd, IDC_MENU_TEXT), GWL_WNDPROC, (LONG)NHMenuTextWndProc); SetWindowLong(text_control, GWL_WNDPROC, (LONG)NHMenuTextWndProc);
/* set text window font */
hDC = GetDC(text_control);
SendMessage(
text_control,
WM_SETFONT,
(WPARAM)mswin_get_font(NHW_TEXT, ATR_NONE, hDC, FALSE),
(LPARAM)0
);
ReleaseDC(text_control, hDC);
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
/* special initialization for SmartPhone dialogs */ /* special initialization for SmartPhone dialogs */
NHSPhoneDialogSetup(hWnd, FALSE); NHSPhoneDialogSetup(hWnd, FALSE, GetNHApp()->bFullScreen);
#endif #endif
break; } break;
case WM_MSNH_COMMAND: case WM_MSNH_COMMAND:
onMSNHCommand(hWnd, wParam, lParam); onMSNHCommand(hWnd, wParam, lParam);
@@ -424,7 +440,10 @@ LRESULT CALLBACK MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
DeleteObject(data->bmpCheckedCount); DeleteObject(data->bmpCheckedCount);
DeleteObject(data->bmpNotChecked); DeleteObject(data->bmpNotChecked);
if( data->type == MENU_TYPE_TEXT ) { if( data->type == MENU_TYPE_TEXT ) {
if( data->text.text ) free(data->text.text); if( data->text.text ) {
mswin_free_text_buffer(data->text.text);
data->text.text = NULL;
}
} }
free(data); free(data);
SetWindowLong(hWnd, GWL_USERDATA, (LONG)0); SetWindowLong(hWnd, GWL_USERDATA, (LONG)0);
@@ -447,12 +466,12 @@ void CheckInputDialog(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
switch(message) { switch(message) {
case WM_SETFOCUS: case WM_SETFOCUS:
SHSipPreference(hWnd, SIP_UP); if( GetNHApp()->bUseSIP ) SHSipPreference(hWnd, SIP_UP);
return; return;
case WM_DESTROY: case WM_DESTROY:
case WM_KILLFOCUS: case WM_KILLFOCUS:
SHSipPreference(hWnd, SIP_DOWN); if( GetNHApp()->bUseSIP ) SHSipPreference(hWnd, SIP_DOWN);
return; return;
case WM_NOTIFY: case WM_NOTIFY:
@@ -460,10 +479,10 @@ void CheckInputDialog(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
LPNMHDR lpnmhdr = (LPNMHDR)lParam; LPNMHDR lpnmhdr = (LPNMHDR)lParam;
switch(lpnmhdr->code) { switch(lpnmhdr->code) {
case NM_SETFOCUS: case NM_SETFOCUS:
SHSipPreference(hWnd, SIP_UP); if( GetNHApp()->bUseSIP ) SHSipPreference(hWnd, SIP_UP);
break; break;
case NM_KILLFOCUS: case NM_KILLFOCUS:
SHSipPreference(hWnd, SIP_DOWN); if( GetNHApp()->bUseSIP ) SHSipPreference(hWnd, SIP_DOWN);
break; break;
} }
} return; } return;
@@ -471,10 +490,10 @@ void CheckInputDialog(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
case WM_COMMAND: case WM_COMMAND:
switch(HIWORD(wParam)) { switch(HIWORD(wParam)) {
case BN_SETFOCUS: case BN_SETFOCUS:
SHSipPreference(hWnd, SIP_UP); if( GetNHApp()->bUseSIP ) SHSipPreference(hWnd, SIP_UP);
break; break;
case BN_KILLFOCUS: case BN_KILLFOCUS:
SHSipPreference(hWnd, SIP_DOWN); if( GetNHApp()->bUseSIP ) SHSipPreference(hWnd, SIP_DOWN);
break; break;
} }
return; return;
@@ -493,28 +512,22 @@ void onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
{ {
PMSNHMsgPutstr msg_data = (PMSNHMsgPutstr)lParam; PMSNHMsgPutstr msg_data = (PMSNHMsgPutstr)lParam;
HWND text_view; HWND text_view;
TCHAR wbuf[BUFSZ];
size_t text_size;
if( data->type!=MENU_TYPE_TEXT ) if( data->type!=MENU_TYPE_TEXT )
SetMenuType(hWnd, MENU_TYPE_TEXT); SetMenuType(hWnd, MENU_TYPE_TEXT);
if( !data->text.text ) { if( !data->text.text ) {
text_size = strlen(msg_data->text) + 4; data->text.text = mswin_init_text_buffer(
data->text.text = (TCHAR*)malloc(text_size*sizeof(data->text.text[0])); program_state.gameover? FALSE : GetNHApp()->bWrapText
ZeroMemory(data->text.text, text_size*sizeof(data->text.text[0])); );
} else { if( !data->text.text ) break;
text_size = _tcslen(data->text.text) + strlen(msg_data->text) + 4;
data->text.text = (TCHAR*)realloc(data->text.text, text_size*sizeof(data->text.text[0]));
} }
if( !data->text.text ) break;
_tcscat(data->text.text, NH_A2W(msg_data->text, wbuf, BUFSZ)); mswin_add_text(data->text.text, msg_data->attr, msg_data->text);
_tcscat(data->text.text, TEXT("\r\n"));
text_view = GetDlgItem(hWnd, IDC_MENU_TEXT); text_view = GetDlgItem(hWnd, IDC_MENU_TEXT);
if( !text_view ) panic("cannot get text view window"); if( !text_view ) panic("cannot get text view window");
SetWindowText(text_view, data->text.text); mswin_render_text(data->text.text, text_view);
} break; } break;
case MSNH_MSG_STARTMENU: case MSNH_MSG_STARTMENU:
@@ -661,6 +674,12 @@ void LayoutMenu(HWND hWnd)
sz_elem.cx = (clrt.right - clrt.left) - 2*MENU_MARGIN; sz_elem.cx = (clrt.right - clrt.left) - 2*MENU_MARGIN;
sz_elem.cy = min(pt_cancel.y, pt_ok.y) - MENU_MARGIN - pt_elem.y; sz_elem.cy = min(pt_cancel.y, pt_ok.y) - MENU_MARGIN - pt_elem.y;
MoveWindow(GetMenuControl(hWnd), pt_elem.x, pt_elem.y, sz_elem.cx, sz_elem.cy, TRUE ); MoveWindow(GetMenuControl(hWnd), pt_elem.x, pt_elem.y, sz_elem.cx, sz_elem.cy, TRUE );
/* reformat text for the text menu */
if( data &&
data->type==MENU_TYPE_TEXT &&
data->text.text )
mswin_render_text(data->text.text, GetMenuControl(hWnd));
} }
void SetMenuType(HWND hWnd, int type) void SetMenuType(HWND hWnd, int type)
@@ -1136,10 +1155,12 @@ BOOL onListChar(HWND hWnd, HWND hwndList, WORD ch)
case MENU_SEARCH: case MENU_SEARCH:
if( data->how==PICK_ANY || data->how==PICK_ONE ) { if( data->how==PICK_ANY || data->how==PICK_ONE ) {
char buf[BUFSZ]; char buf[BUFSZ];
int selected_item;
reset_menu_count(hwndList, data); reset_menu_count(hwndList, data);
mswin_getlin("Search for:", buf); mswin_getlin("Search for:", buf);
if (!*buf || *buf == '\033') return -2; if (!*buf || *buf == '\033') return -2;
selected_item = -1;
for(i=0; i<data->menu.size; i++ ) { for(i=0; i<data->menu.size; i++ ) {
if( NHMENU_IS_SELECTABLE(data->menu.items[i]) if( NHMENU_IS_SELECTABLE(data->menu.items[i])
&& strstr(data->menu.items[i].str, buf) ) { && strstr(data->menu.items[i].str, buf) ) {
@@ -1150,6 +1171,8 @@ BOOL onListChar(HWND hWnd, HWND hwndList, WORD ch)
i, i,
NHMENU_IS_SELECTED(data->menu.items[i])? 0 : -1 NHMENU_IS_SELECTED(data->menu.items[i])? 0 : -1
); );
/* save the first item - we will move focus to it */
if( selected_item == -1 ) selected_item = i;
} else if( data->how == PICK_ONE ) { } else if( data->how == PICK_ONE ) {
SelectMenuItem( SelectMenuItem(
hwndList, hwndList,
@@ -1157,12 +1180,16 @@ BOOL onListChar(HWND hWnd, HWND hwndList, WORD ch)
i, i,
-1 -1
); );
ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED); selected_item = i;
ListView_EnsureVisible(hwndList, i, FALSE);
break; break;
} }
} }
} }
if( selected_item>0 ) {
ListView_SetItemState(hwndList, selected_item, LVIS_FOCUSED, LVIS_FOCUSED);
ListView_EnsureVisible(hwndList, selected_item, FALSE);
}
} else { } else {
mswin_nhbell(); mswin_nhbell();
} }
@@ -1353,14 +1380,8 @@ void mswin_menu_window_size (HWND hWnd, LPSIZE sz)
} }
SelectObject(hdc, saveFont); SelectObject(hdc, saveFont);
} else { } else {
/* Calculate the width of the text box. */ /* do not change size for text output - the text will be formatted to
RECT text_rt; fit any window */
saveFont = SelectObject(hdc, mswin_get_font(NHW_MENU, ATR_NONE, hdc, FALSE));
GetTextMetrics(hdc, &tm);
SetRect(&text_rt, 0, 0, sz->cx, sz->cy);
DrawText(hdc, data->text.text, _tcslen(data->text.text), &text_rt, DT_CALCRECT | DT_TOP | DT_LEFT | DT_NOPREFIX);
sz->cx = max(sz->cx, text_rt.right - text_rt.left + 5*tm.tmAveCharWidth + tm.tmOverhang);
SelectObject(hdc, saveFont);
} }
sz->cx += extra_cx; sz->cx += extra_cx;
+20 -20
View File
@@ -6,9 +6,10 @@
#include "mhmsg.h" #include "mhmsg.h"
#include "mhfont.h" #include "mhfont.h"
#include "mhcolor.h" #include "mhcolor.h"
#include "mhtxtbuf.h"
typedef struct mswin_nethack_text_window { typedef struct mswin_nethack_text_window {
TCHAR* window_text; PNHTextBuffer window_text;
int done; int done;
} NHTextWindow, *PNHTextWindow; } NHTextWindow, *PNHTextWindow;
@@ -35,6 +36,9 @@ HWND mswin_init_text_window () {
if( !data ) panic("out of memory"); if( !data ) panic("out of memory");
ZeroMemory(data, sizeof(NHTextWindow)); ZeroMemory(data, sizeof(NHTextWindow));
data->window_text = mswin_init_text_buffer(
program_state.gameover? FALSE : GetNHApp()->bWrapText
);
SetWindowLong(ret, GWL_USERDATA, (LONG)data); SetWindowLong(ret, GWL_USERDATA, (LONG)data);
return ret; return ret;
} }
@@ -44,11 +48,11 @@ void mswin_display_text_window (HWND hWnd)
PNHTextWindow data; PNHTextWindow data;
data = (PNHTextWindow)GetWindowLong(hWnd, GWL_USERDATA); data = (PNHTextWindow)GetWindowLong(hWnd, GWL_USERDATA);
if( data && data->window_text ) { if( data ) {
HWND control; HWND control;
control = GetDlgItem(hWnd, IDC_TEXT_CONTROL); control = GetDlgItem(hWnd, IDC_TEXT_CONTROL);
SendMessage(control, EM_FMTLINES, 1, 0 ); SendMessage(control, EM_FMTLINES, 1, 0 );
SetWindowText(GetDlgItem(hWnd, IDC_TEXT_CONTROL), data->window_text); mswin_render_text(data->window_text, GetDlgItem(hWnd, IDC_TEXT_CONTROL));
data->done = 0; data->done = 0;
mswin_popup_display(hWnd, &data->done); mswin_popup_display(hWnd, &data->done);
@@ -78,12 +82,22 @@ LRESULT CALLBACK TextWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
/* special initialization for SmartPhone dialogs */ /* special initialization for SmartPhone dialogs */
NHSPhoneDialogSetup(hWnd, FALSE); NHSPhoneDialogSetup(hWnd, FALSE, GetNHApp()->bFullScreen);
#endif #endif
/* subclass edit control */ /* subclass edit control */
editControlWndProc = (WNDPROC)GetWindowLong(control, GWL_WNDPROC); editControlWndProc = (WNDPROC)GetWindowLong(control, GWL_WNDPROC);
SetWindowLong(control, GWL_WNDPROC, (LONG)NHTextControlWndProc); SetWindowLong(control, GWL_WNDPROC, (LONG)NHTextControlWndProc);
if( !program_state.gameover && GetNHApp()->bWrapText ) {
DWORD styles;
styles = GetWindowLong(control, GWL_STYLE);
if( styles ) {
SetWindowLong(control, GWL_STYLE, styles & (~WS_HSCROLL));
SetWindowPos(control, NULL, 0, 0, 0, 0,
SWP_FRAMECHANGED | SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE );
}
}
SetFocus(control); SetFocus(control);
return FALSE; return FALSE;
@@ -119,7 +133,7 @@ LRESULT CALLBACK TextWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
case WM_DESTROY: case WM_DESTROY:
if( data ) { if( data ) {
if( data->window_text ) free(data->window_text); mswin_free_text_buffer(data->window_text);
free(data); free(data);
SetWindowLong(hWnd, GWL_USERDATA, (LONG)0); SetWindowLong(hWnd, GWL_USERDATA, (LONG)0);
} }
@@ -137,21 +151,7 @@ void onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
switch( wParam ) { switch( wParam ) {
case MSNH_MSG_PUTSTR: { case MSNH_MSG_PUTSTR: {
PMSNHMsgPutstr msg_data = (PMSNHMsgPutstr)lParam; PMSNHMsgPutstr msg_data = (PMSNHMsgPutstr)lParam;
TCHAR wbuf[NHSTR_BUFSIZE]; mswin_add_text(data->window_text, msg_data->attr, msg_data->text);
size_t text_size;
if( !data->window_text ) {
text_size = strlen(msg_data->text) + 4;
data->window_text = (TCHAR*)malloc(text_size*sizeof(data->window_text[0]));
ZeroMemory(data->window_text, text_size*sizeof(data->window_text[0]));
} else {
text_size = _tcslen(data->window_text) + strlen(msg_data->text) + 4;
data->window_text = (TCHAR*)realloc(data->window_text, text_size*sizeof(data->window_text[0]));
}
if( !data->window_text ) break;
_tcscat(data->window_text, NH_A2W(msg_data->text, wbuf, NHSTR_BUFSIZE));
_tcscat(data->window_text, TEXT("\r\n"));
break; break;
} }
} }
+237
View File
@@ -0,0 +1,237 @@
/* Copyright (C) 2003 by Alex Kompel <shurikk@pacbell.net> */
/* NetHack may be freely redistributed. See license for details. */
#include "mhtxtbuf.h"
/* Collect Nethack text messages and render text into edit box.
Wrap text if necessary.
Recognize formatted lines as having more that 4 consecutive.
spaces inside the string.
Strip leading and trailing spaces.
Always break at the original line end (do not merge text that comes
from NetHack engine)
*/
/*----------------------------------------------------------------*/
#define NHTEXT_BUFFER_INCREMENT 10
/*----------------------------------------------------------------*/
struct text_buffer_line {
int attr;
short beg_padding;
short end_padding;
BOOL formatted;
char* text;
};
/*----------------------------------------------------------------*/
typedef struct mswin_nethack_text_buffer {
BOOL b_wrap_text;
int n_size;
int n_used;
struct text_buffer_line *text_buffer_line;
} NHTextBuffer, *PNHTextBuffer;
/*----------------------------------------------------------------*/
#define NHTextLine(pb,i) ((pb)->text_buffer_line[(i)])
static TCHAR* nh_append( TCHAR* s, int* size, const char* ap );
/*----------------------------------------------------------------*/
PNHTextBuffer mswin_init_text_buffer(BOOL wrap_text)
{
PNHTextBuffer pb = (PNHTextBuffer)malloc(sizeof(NHTextBuffer));
if( !pb ) panic("Out of memory");
ZeroMemory(pb, sizeof(NHTextBuffer));
pb->b_wrap_text = wrap_text;
pb->n_size = 0;
pb->n_used = 0;
pb->text_buffer_line = NULL;
return pb;
}
/*----------------------------------------------------------------*/
void mswin_free_text_buffer(PNHTextBuffer pb)
{
int i;
if( !pb ) return;
for(i=0; i<pb->n_used; i++ ) {
free(pb->text_buffer_line[i].text);
}
free( pb->text_buffer_line );
free( pb );
}
/*----------------------------------------------------------------*/
void mswin_add_text(PNHTextBuffer pb, int attr, const char* text)
{
char* p;
struct text_buffer_line* new_line;
/* grow buffer */
if( pb->n_used >= pb->n_size ) {
pb->n_size += NHTEXT_BUFFER_INCREMENT;
pb->text_buffer_line =
(struct text_buffer_line*)realloc( pb->text_buffer_line, pb->n_size*sizeof(struct text_buffer_line) );
if( !pb->text_buffer_line ) panic("Memory allocation error");
}
/* analyze the new line of text */
new_line = &NHTextLine(pb, pb->n_used);
new_line->attr = attr;
new_line->beg_padding = 0;
new_line->text = strdup(text);
for( p = new_line->text; *p && isspace(*p); p++ ) {
new_line->beg_padding++;
}
if( *p ) {
memmove(new_line->text,
new_line->text + new_line->beg_padding,
strlen(new_line->text) - new_line->beg_padding + 1
);
for( p = new_line->text+strlen(new_line->text);
p>=new_line->text && isspace(*p);
p-- ) {
new_line->end_padding++;
*p = 0;
}
/* if there are 3 (or more) consecutive spaces inside the string
consider it formatted */
new_line->formatted = (strstr(new_line->text, " ")!=NULL);
} else {
new_line->end_padding = 0;
new_line->text[0] = 0;
new_line->formatted = FALSE;
}
pb->n_used++;
}
/*----------------------------------------------------------------*/
static TCHAR* nh_append( TCHAR* s, int* size, const char* ap )
{
int tlen, tnewlen;
if( !(ap && *ap) ) return s;
/* append the calculated line to the text buffer */
tlen = s? _tcslen(s) : 0;
tnewlen = tlen+strlen(ap);
if( tnewlen>=*size ) {
*size = max(tnewlen, *size + BUFSZ);
s = (TCHAR*)realloc(s, *size * sizeof(TCHAR));
if( !s ) panic("Out of memory");
ZeroMemory(s+tlen, (*size-tlen)*sizeof(TCHAR));
}
if( strcmp(ap, "\r\n")==0 ) {
_tcscat(s, TEXT("\r\n"));
} else {
NH_A2W(ap, s+tlen, strlen(ap));
s[tnewlen] = 0;
}
return s;
}
/*----------------------------------------------------------------*/
void mswin_render_text(PNHTextBuffer pb, HWND edit_control)
{
RECT rt_client; /* boundaries of the client area of the edit control */
SIZE size_text; /* size of the edit control */
RECT rt_text; /* calculated text rectangle for the visible line */
char buf[BUFSZ]; /* buffer for the visible line */
TCHAR tbuf[BUFSZ]; /* temp buffer for DrawText */
TCHAR* pText = NULL; /* resulting text (formatted) */
int pTextSize = 0; /* resulting text size */
char* p_cur = NULL; /* current position in the NHTextBuffer->text_buffer_line->text */
char* p_buf_cur = NULL; /* current position in the visible line buffer */
int i;
HDC hdcEdit; /* device context for the edit control */
HFONT hFont, hOldFont; /* edit control font */
GetClientRect(edit_control, &rt_client );
size_text.cx = rt_client.right - rt_client.left;
size_text.cy = rt_client.bottom - rt_client.top;
size_text.cx -= GetSystemMetrics(SM_CXVSCROLL); /* add a slight right margin - the text looks better that way */
hdcEdit = GetDC(edit_control);
hFont = (HFONT)SendMessage(edit_control, WM_GETFONT, 0, 0);
if( hFont ) hOldFont = SelectObject(hdcEdit, hFont);
/* loop through each line (outer loop) and wrap it around (inner loop) */
ZeroMemory(buf, sizeof(buf));
p_buf_cur = buf;
for( i=0; i<pb->n_used; i++ ) {
if( pb->b_wrap_text ) {
p_cur = NHTextLine(pb,i).text;
/* insert an line break for the empty string */
if( !NHTextLine(pb,i).text[0] ) {
pText = nh_append(pText, &pTextSize, "\r\n");
continue;
}
/* add margin to the "formatted" line of text */
if( NHTextLine(pb,i).formatted ) {
strcpy(buf, " ");
p_buf_cur += 3;
}
/* scroll thourgh the current line of text and wrap it
so it fits to width of the edit control */
while( *p_cur ) {
char *p_word_pos = p_buf_cur;
/* copy one word into the buffer */
while( *p_cur && isspace(*p_cur) )
if( p_buf_cur!=buf ) *p_buf_cur++ = *p_cur++;
else p_cur++;
while( *p_cur && !isspace(*p_cur) )
*p_buf_cur++ = *p_cur++;
/* check if it fits */
SetRect( &rt_text, 0, 0, size_text.cx, size_text.cy );
DrawText(hdcEdit, NH_A2W(buf, tbuf, p_buf_cur-buf), p_buf_cur-buf, &rt_text, DT_CALCRECT | DT_LEFT | DT_SINGLELINE | DT_NOCLIP);
if( (rt_text.right - rt_text.left)>=size_text.cx ) {
/* Backtrack.
Only backtrack if the last word caused the overflow -
do not backtrack if the entire current line does not fit the visible area.
Otherwise it is a infinite loop.
*/
if( p_word_pos>buf ) {
p_cur -= (p_buf_cur-p_word_pos);
p_buf_cur = p_word_pos;
}
*p_buf_cur = 0; /* break the line */
/* append the calculated line to the text buffer */
pText = nh_append(pText, &pTextSize, buf);
pText = nh_append(pText, &pTextSize, "\r\n");
ZeroMemory(buf, sizeof(buf));
p_buf_cur = buf;
}
}
/* always break the line at the end of the buffer text */
if( p_buf_cur != buf ) {
/* flush the current buffrer */
*p_buf_cur = 0; /* break the line */
pText = nh_append(pText, &pTextSize, buf);
pText = nh_append(pText, &pTextSize, "\r\n");
ZeroMemory(buf, sizeof(buf));
p_buf_cur = buf;
}
} else { /* do not wrap text */
int j;
for( j=0; j<NHTextLine(pb,i).beg_padding; j++ )
pText = nh_append(pText, &pTextSize, " ");
pText = nh_append(pText, &pTextSize, NHTextLine(pb,i).text);
pText = nh_append(pText, &pTextSize, "\r\n");
}
}
/* cleanup */
if( hFont ) SelectObject(hdcEdit, hOldFont);
ReleaseDC(edit_control, hdcEdit);
/* update edit control text */
if( pText ) {
SendMessage(edit_control, EM_FMTLINES, 1, 0 );
SetWindowText(edit_control, pText);
free(pText);
}
}
/*----------------------------------------------------------------*/
+15
View File
@@ -0,0 +1,15 @@
/* Copyright (C) 2001 by Alex Kompel <shurikk@pacbell.net> */
/* NetHack may be freely redistributed. See license for details. */
#ifndef MSWINTextBuffer_h
#define MSWINTextBuffer_h
#include "winMS.h"
typedef struct mswin_nethack_text_buffer* PNHTextBuffer;
PNHTextBuffer mswin_init_text_buffer(BOOL wrap_text);
void mswin_free_text_buffer(PNHTextBuffer pb);
void mswin_add_text(PNHTextBuffer pb, int attr, const char* text);
void mswin_render_text(PNHTextBuffer pb, HWND edit_control);
#endif /* MSWINTextBuffer_h */
+105 -2
View File
@@ -45,7 +45,7 @@ struct window_procs mswin_procs = {
WC_FONTSIZ_MESSAGE|WC_FONTSIZ_STATUS|WC_FONTSIZ_MENU|WC_FONTSIZ_TEXT| WC_FONTSIZ_MESSAGE|WC_FONTSIZ_STATUS|WC_FONTSIZ_MENU|WC_FONTSIZ_TEXT|
WC_TILE_WIDTH|WC_TILE_HEIGHT|WC_TILE_FILE|WC_VARY_MSGCOUNT| WC_TILE_WIDTH|WC_TILE_HEIGHT|WC_TILE_FILE|WC_VARY_MSGCOUNT|
WC_WINDOWCOLORS|WC_PLAYER_SELECTION, WC_WINDOWCOLORS|WC_PLAYER_SELECTION,
0L, WC2_FULLSCREEN|WC2_SOFTKEYBOARD|WC2_WRAPTEXT,
mswin_init_nhwindows, mswin_init_nhwindows,
mswin_player_selection, mswin_player_selection,
mswin_askname, mswin_askname,
@@ -127,6 +127,9 @@ void mswin_init_nhwindows(int* argc, char** argv)
/* intialize input subsystem */ /* intialize input subsystem */
mswin_nh_input_init(); mswin_nh_input_init();
/* read registry settings */
mswin_read_reg();
/* set it to WIN_ERR so we can detect attempts to /* set it to WIN_ERR so we can detect attempts to
use this ID before it is inialized */ use this ID before it is inialized */
WIN_MAP = WIN_ERR; WIN_MAP = WIN_ERR;
@@ -196,6 +199,21 @@ void mswin_init_nhwindows(int* argc, char** argv)
SET_IN_GAME SET_IN_GAME
); );
/* WC2 options */
set_wc2_option_mod_status(
WC2_FULLSCREEN|
WC2_SOFTKEYBOARD,
SET_IN_FILE
);
GetNHApp()->bFullScreen = iflags.wc2_fullscreen;
GetNHApp()->bUseSIP = iflags.wc2_softkeyboard;
set_wc2_option_mod_status(
WC2_WRAPTEXT,
SET_IN_GAME
);
GetNHApp()->bWrapText = iflags.wc2_wraptext;
/* create the main nethack window */ /* create the main nethack window */
hWnd = mswin_init_main_window(); hWnd = mswin_init_main_window();
if (!hWnd) panic( "Cannot create the main window." ); if (!hWnd) panic( "Cannot create the main window." );
@@ -203,6 +221,9 @@ void mswin_init_nhwindows(int* argc, char** argv)
UpdateWindow(hWnd); UpdateWindow(hWnd);
GetNHApp()->hMainWnd = hWnd; GetNHApp()->hMainWnd = hWnd;
/* set Full screen if requested */
mswin_set_fullscreen(GetNHApp()->bFullScreen);
/* let nethack code know that the window subsystem is ready */ /* let nethack code know that the window subsystem is ready */
iflags.window_inited = TRUE; iflags.window_inited = TRUE;
} }
@@ -654,6 +675,9 @@ void mswin_exit_nhwindows(const char *str)
{ {
logDebug("mswin_exit_nhwindows(%s)\n", str); logDebug("mswin_exit_nhwindows(%s)\n", str);
/* Write Window settings to the registry */
mswin_write_reg();
// Don't do any of this (?) - exit_nhwindows does not terminate // Don't do any of this (?) - exit_nhwindows does not terminate
// the application // the application
// DestroyWindow(GetNHApp()->hMainWnd); // DestroyWindow(GetNHApp()->hMainWnd);
@@ -1650,6 +1674,22 @@ void mswin_preference_update(const char *pref)
mswin_layout_main_window(NULL); mswin_layout_main_window(NULL);
return; return;
} }
if( _stricmp( pref, "fullscreen")==0 ) {
mswin_set_fullscreen(iflags.wc2_fullscreen);
return;
}
if( _stricmp( pref, "softkeyboard")==0 ) {
GetNHApp()->bUseSIP = iflags.wc2_softkeyboard;
return;
}
if( _stricmp( pref, "wraptext")==0 ) {
GetNHApp()->bWrapText = iflags.wc2_wraptext;
return;
}
} }
void mswin_main_loop() void mswin_main_loop()
@@ -1800,8 +1840,41 @@ void mswin_popup_destroy(HWND hWnd)
SetFocus(GetNHApp()->hMainWnd ); SetFocus(GetNHApp()->hMainWnd );
} }
void mswin_set_fullscreen(BOOL is_fullscreen)
{
#if defined(WIN_CE_POCKETPC) || defined(WIN_CE_SMARTPHONE)
SetForegroundWindow(GetNHApp()->hMainWnd);
if( is_fullscreen ) {
SHFullScreen(GetNHApp()->hMainWnd, SHFS_HIDETASKBAR | SHFS_HIDESTARTICON);
MoveWindow(
GetNHApp()->hMainWnd,
0,
0,
GetSystemMetrics(SM_CXSCREEN),
GetSystemMetrics(SM_CYSCREEN),
FALSE
);
} else {
RECT rc;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, 0);
SHFullScreen(GetNHApp()->hMainWnd, SHFS_SHOWTASKBAR | SHFS_SHOWSTARTICON);
MoveWindow(
GetNHApp()->hMainWnd,
rc.left,
rc.top,
rc.right - rc.left,
rc.bottom - rc.top,
FALSE
);
}
GetNHApp()->bFullScreen = is_fullscreen;
#else
GetNHApp()->bFullScreen = FALSE;
#endif
}
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
void NHSPhoneDialogSetup(HWND hDlg, BOOL is_edit) void NHSPhoneDialogSetup(HWND hDlg, BOOL is_edit, BOOL is_fullscreen)
{ {
SHMENUBARINFO mbi; SHMENUBARINFO mbi;
HWND hOK, hCancel; HWND hOK, hCancel;
@@ -1817,6 +1890,25 @@ void NHSPhoneDialogSetup(HWND hDlg, BOOL is_edit)
error("cannot create dialog menu"); error("cannot create dialog menu");
} }
if(is_fullscreen) {
SHINITDLGINFO shidi;
RECT main_wnd_rect;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_SIZEDLGFULLSCREEN;
shidi.hDlg = hDlg;
SHInitDialog(&shidi);
GetWindowRect(GetNHApp()->hMainWnd, &main_wnd_rect);
MoveWindow(
hDlg,
main_wnd_rect.left,
main_wnd_rect.top,
main_wnd_rect.right - main_wnd_rect.left,
main_wnd_rect.bottom - main_wnd_rect.top,
FALSE
);
}
/* hide OK and CANCEL buttons */ /* hide OK and CANCEL buttons */
hOK = GetDlgItem(hDlg, IDOK); hOK = GetDlgItem(hDlg, IDOK);
hCancel = GetDlgItem(hDlg, IDCANCEL); hCancel = GetDlgItem(hDlg, IDCANCEL);
@@ -1840,6 +1932,17 @@ void NHSPhoneDialogSetup(HWND hDlg, BOOL is_edit)
} }
#endif /* defined(WIN_CE_SMARTPHONE) */ #endif /* defined(WIN_CE_SMARTPHONE) */
void mswin_read_reg(void)
{
}
void mswin_destroy_reg(void)
{
}
void mswin_write_reg(void)
{
}
#ifdef _DEBUG #ifdef _DEBUG
#include <stdarg.h> #include <stdarg.h>
-32579
View File
File diff suppressed because it is too large Load Diff
-40191
View File
File diff suppressed because it is too large Load Diff
+5 -3
View File
@@ -1,6 +1,6 @@
//{{NO_DEPENDENCIES}} //{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file. // Microsoft Developer Studio generated include file.
// Used by winhack_sp.rc // Used by winhack.rc
// //
#define IDC_MYICON 2 #define IDC_MYICON 2
#define IDD_WINHACK_DIALOG 102 #define IDD_WINHACK_DIALOG 102
@@ -26,6 +26,7 @@
#define IDB_PETMARK 145 #define IDB_PETMARK 145
#define IDB_MENU_SEL_COUNT 146 #define IDB_MENU_SEL_COUNT 146
#define IDB_KEYPAD 147 #define IDB_KEYPAD 147
#define IDB_MENUBAR 154
#define IDC_TEXT_VIEW 1001 #define IDC_TEXT_VIEW 1001
#define IDC_CMD_MOVE_NW 1001 #define IDC_CMD_MOVE_NW 1001
#define IDC_CMD_MOVE_N 1002 #define IDC_CMD_MOVE_N 1002
@@ -144,13 +145,14 @@
#define IDS_CAP_ENTIREMAP 32826 #define IDS_CAP_ENTIREMAP 32826
#define IDS_CAP_NORMALMAP 32827 #define IDS_CAP_NORMALMAP 32827
#define IDM_HELP_MENU 32828 #define IDM_HELP_MENU 32828
#define IDM_VIEW_OPTIONS 32829
// Next default values for new objects // Next default values for new objects
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 153 #define _APS_NEXT_RESOURCE_VALUE 155
#define _APS_NEXT_COMMAND_VALUE 32829 #define _APS_NEXT_COMMAND_VALUE 32830
#define _APS_NEXT_CONTROL_VALUE 1334 #define _APS_NEXT_CONTROL_VALUE 1334
#define _APS_NEXT_SYMED_VALUE 110 #define _APS_NEXT_SYMED_VALUE 110
#endif #endif
-17126
View File
File diff suppressed because it is too large Load Diff
+15 -1
View File
@@ -33,6 +33,9 @@
#include <sipapi.h> #include <sipapi.h>
#endif #endif
/* Taskbar Menu height */
#define MENU_HEIGHT 26
/* Create an array to keep track of the various windows */ /* Create an array to keep track of the various windows */
#ifndef MAXWINDOWS #ifndef MAXWINDOWS
@@ -92,6 +95,12 @@ typedef struct mswin_nhwindow_app {
int bCmdPad; /* command pad - on-screen keyboard */ int bCmdPad; /* command pad - on-screen keyboard */
HWND hCmdWnd; /* handle of on-screen keyboard window */ HWND hCmdWnd; /* handle of on-screen keyboard window */
/* options */
boolean bWrapText; /* format text to fit the window */
boolean bFullScreen;/* run nethack in full-screen mode */
boolean bHideScrollBars; /* hide scroll bars */
boolean bUseSIP; /* use SIP (built-in software keyboard) for menus (PocketPC only) */
} NHWinApp, *PNHWinApp; } NHWinApp, *PNHWinApp;
extern PNHWinApp GetNHApp(); extern PNHWinApp GetNHApp();
@@ -162,7 +171,12 @@ void mswin_popup_display(HWND popup, int* done_indicator);
void mswin_popup_destroy(HWND popup); void mswin_popup_destroy(HWND popup);
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
void NHSPhoneDialogSetup(HWND hDlg, BOOL is_edit); void NHSPhoneDialogSetup(HWND hDlg, BOOL is_edit, BOOL is_fullscreen);
#endif #endif
void mswin_read_reg(void);
void mswin_destroy_reg(void);
void mswin_write_reg(void);
void mswin_set_fullscreen(BOOL is_fullscreen);
#endif /* WINmswin_H */ #endif /* WINmswin_H */
+12
View File
@@ -68,12 +68,24 @@ int APIENTRY WinMain(HINSTANCE hInstance,
_nethack_app.mapTilesPerLine = TILES_PER_LINE; _nethack_app.mapTilesPerLine = TILES_PER_LINE;
_nethack_app.bNoHScroll = FALSE; _nethack_app.bNoHScroll = FALSE;
_nethack_app.bNoVScroll = FALSE; _nethack_app.bNoVScroll = FALSE;
#if defined(WIN_CE_PS2xx) || defined(WIN_CE_POCKETPC) || defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_PS2xx) || defined(WIN_CE_POCKETPC) || defined(WIN_CE_SMARTPHONE)
_nethack_app.bCmdPad = TRUE; _nethack_app.bCmdPad = TRUE;
#else #else
_nethack_app.bCmdPad = FALSE; _nethack_app.bCmdPad = FALSE;
#endif #endif
_nethack_app.bWrapText = TRUE;
_nethack_app.bFullScreen = TRUE;
#if defined(WIN_CE_SMARTPHONE)
_nethack_app.bHideScrollBars = TRUE;
#else
_nethack_app.bHideScrollBars = FALSE;
#endif
_nethack_app.bUseSIP = TRUE;
// check for running nethack programs // check for running nethack programs
nethackWnd = FindWindow(szMainWindowClass, NULL); nethackWnd = FindWindow(szMainWindowClass, NULL);
if( nethackWnd ) { if( nethackWnd ) {
+16 -9
View File
@@ -28,7 +28,7 @@ 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_WINHACK ICON DISCARDABLE "..\\..\\wince\\NETHACK.ICO"
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
@@ -61,6 +61,7 @@ BEGIN
POPUP "View" POPUP "View"
BEGIN BEGIN
MENUITEM "&Keypad", IDM_VIEW_KEYPAD MENUITEM "&Keypad", IDM_VIEW_KEYPAD
MENUITEM "&Options", IDM_VIEW_OPTIONS
END END
POPUP "Help" POPUP "Help"
BEGIN BEGIN
@@ -211,12 +212,13 @@ END
// Bitmap // Bitmap
// //
IDB_TILES BITMAP DISCARDABLE "tiles.bmp" IDB_TILES BITMAP DISCARDABLE "..\\..\\wince\\tiles.bmp"
IDB_MENU_SEL BITMAP DISCARDABLE "mnsel.bmp" IDB_MENU_SEL BITMAP DISCARDABLE "..\\..\\wince\\mnsel.bmp"
IDB_MENU_UNSEL BITMAP DISCARDABLE "mnunsel.bmp" IDB_MENU_UNSEL BITMAP DISCARDABLE "..\\..\\wince\\mnunsel.bmp"
IDB_PETMARK BITMAP DISCARDABLE "petmark.bmp" IDB_PETMARK BITMAP DISCARDABLE "..\\..\\wince\\petmark.bmp"
IDB_MENU_SEL_COUNT BITMAP DISCARDABLE "mnselcnt.bmp" IDB_MENU_SEL_COUNT BITMAP DISCARDABLE "..\\..\\wince\\mnselcnt.bmp"
IDB_KEYPAD BITMAP DISCARDABLE "keypad.bmp" IDB_KEYPAD BITMAP DISCARDABLE "..\\..\\wince\\keypad.bmp"
IDB_MENUBAR BITMAP DISCARDABLE "..\\..\\wince\\menubar.bmp"
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
@@ -247,7 +249,6 @@ BEGIN
TOPMARGIN, 7 TOPMARGIN, 7
BOTTOMMARGIN, 107 BOTTOMMARGIN, 107
END END
END END
#endif // APSTUDIO_INVOKED #endif // APSTUDIO_INVOKED
@@ -259,7 +260,7 @@ END
IDC_WINHACK SHMENUBAR DISCARDABLE IDC_WINHACK SHMENUBAR DISCARDABLE
BEGIN BEGIN
IDC_WINHACK, 4, IDC_WINHACK, 6,
I_IMAGENONE, ID_FILE, TBSTATE_ENABLED, I_IMAGENONE, ID_FILE, TBSTATE_ENABLED,
TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_FILE, 0, 0, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_FILE, 0, 0,
I_IMAGENONE, ID_MAP, TBSTATE_ENABLED, I_IMAGENONE, ID_MAP, TBSTATE_ENABLED,
@@ -268,8 +269,13 @@ BEGIN
TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_VIEW, 0, 2, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_VIEW, 0, 2,
I_IMAGENONE, ID_HELP, TBSTATE_ENABLED, I_IMAGENONE, ID_HELP, TBSTATE_ENABLED,
TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_HELP, 0, 3, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_HELP, 0, 3,
0, IDM_MAP_FIT_TO_SCREEN, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, 0,
IDM_MAP_FIT_TO_SCREEN, NOMENU,
1, IDM_VIEW_KEYPAD, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, 0,
IDM_VIEW_KEYPAD, NOMENU,
END END
#ifndef _MAC #ifndef _MAC
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
@@ -329,6 +335,7 @@ END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDM_MAP_FIT_TO_SCREEN "Fit to Screen"
IDS_CAP_FILE "File" IDS_CAP_FILE "File"
IDS_CAP_HELP "Help" IDS_CAP_HELP "Help"
IDS_CAP_MAP "Map" IDS_CAP_MAP "Map"
+8 -7
View File
@@ -28,7 +28,7 @@ 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_WINHACK ICON DISCARDABLE "..\\..\\wince\\NETHACK.ICO"
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
@@ -40,6 +40,7 @@ BEGIN
MENUITEM "Entire Map", IDM_MAP_FIT_TO_SCREEN MENUITEM "Entire Map", IDM_MAP_FIT_TO_SCREEN
POPUP "Menu" POPUP "Menu"
BEGIN BEGIN
MENUITEM "Options", IDM_VIEW_OPTIONS
MENUITEM "Keypad", IDM_VIEW_KEYPAD MENUITEM "Keypad", IDM_VIEW_KEYPAD
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "ASCII", IDM_MAP_ASCII8X8 MENUITEM "ASCII", IDM_MAP_ASCII8X8
@@ -184,12 +185,12 @@ END
// Bitmap // Bitmap
// //
IDB_TILES BITMAP DISCARDABLE "tiles.bmp" IDB_TILES BITMAP DISCARDABLE "..\\..\\wince\\tiles.bmp"
IDB_MENU_SEL BITMAP DISCARDABLE "mnsel.bmp" IDB_MENU_SEL BITMAP DISCARDABLE "..\\..\\wince\\mnsel.bmp"
IDB_MENU_UNSEL BITMAP DISCARDABLE "mnunsel.bmp" IDB_MENU_UNSEL BITMAP DISCARDABLE "..\\..\\wince\\mnunsel.bmp"
IDB_PETMARK BITMAP DISCARDABLE "petmark.bmp" IDB_PETMARK BITMAP DISCARDABLE "..\\..\\wince\\petmark.bmp"
IDB_MENU_SEL_COUNT BITMAP DISCARDABLE "mnselcnt.bmp" IDB_MENU_SEL_COUNT BITMAP DISCARDABLE "..\\..\\wince\\mnselcnt.bmp"
IDB_KEYPAD BITMAP DISCARDABLE "keypad.bmp" IDB_KEYPAD BITMAP DISCARDABLE "..\\..\\wince\\keypad.bmp"
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //