(from <Someone>)
What's in it: some MessageBox tidbits: - Let all MessageBoxes display an icon - Introduced NHMessageBox to have messageboxes display a consistent title - Change icon in mswin_display_file from MB_ICONERROR to MB_ICONEXCLAMATION for non-fatal error And to solve #U355: NetHackW won't run on Win2K OS: - Avoid a crash when closing the main window while the splash screen is displayed. - Make sure NetHack starts normal when closed minimized - Center the splash screen on the screen, not on the parent window (which may be off-screen) What's new in it: - Show copyright banner in textbox in splash screen instead of over the picture - Show news in splash screen only if iflags.news (solves W341-6) - show complete version information in splash screen when it is used as about box) [Also reverse the numkey patch in main trunk]
This commit is contained in:
@@ -81,13 +81,13 @@ static const struct pad {
|
|||||||
{'9', M('9'), '9'}, /* 9 */
|
{'9', M('9'), '9'}, /* 9 */
|
||||||
{'m', C('p'), C('p')}, /* - */
|
{'m', C('p'), C('p')}, /* - */
|
||||||
{'4', M('4'), '4'}, /* 4 */
|
{'4', M('4'), '4'}, /* 4 */
|
||||||
{'5', M('5'), '5'}, /* 5 */
|
{'g', 'G', 'g'}, /* 5 */
|
||||||
{'6', M('6'), '6'}, /* 6 */
|
{'6', M('6'), '6'}, /* 6 */
|
||||||
{'+', 'P', C('p')}, /* + */
|
{'+', 'P', C('p')}, /* + */
|
||||||
{'1', M('1'), '1'}, /* 1 */
|
{'1', M('1'), '1'}, /* 1 */
|
||||||
{'2', M('2'), '2'}, /* 2 */
|
{'2', M('2'), '2'}, /* 2 */
|
||||||
{'3', M('3'), '3'}, /* 3 */
|
{'3', M('3'), '3'}, /* 3 */
|
||||||
{'0', M('0'), '0'}, /* Ins */
|
{'i', 'I', C('i')}, /* Ins */
|
||||||
{'.', ':', ':'} /* Del */
|
{'.', ':', ':'} /* Del */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -354,7 +354,7 @@ BOOL CALLBACK PlayerSelectorDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPAR
|
|||||||
if( plselFinalSelection(hWnd, data->selection) ) {
|
if( plselFinalSelection(hWnd, data->selection) ) {
|
||||||
EndDialog(hWnd, wParam);
|
EndDialog(hWnd, wParam);
|
||||||
} else {
|
} else {
|
||||||
MessageBox(hWnd, TEXT("Cannot match this role. Try something else."), TEXT("STOP"), MB_OK );
|
NHMessageBox(hWnd, TEXT("Cannot match this role. Try something else."), MB_ICONSTOP | MB_OK );
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
@@ -677,7 +677,7 @@ int plselFinalSelection(HWND hWnd, int* selection)
|
|||||||
if( flags.initrole==ROLE_RANDOM ) {
|
if( flags.initrole==ROLE_RANDOM ) {
|
||||||
flags.initrole = pick_role(flags.initrace, flags.initgend, flags.initalign, PICK_RANDOM);
|
flags.initrole = pick_role(flags.initrace, flags.initgend, flags.initalign, PICK_RANDOM);
|
||||||
if (flags.initrole < 0) {
|
if (flags.initrole < 0) {
|
||||||
MessageBox(hWnd, TEXT("Incompatible role!"), TEXT("STOP"), MB_OK);
|
NHMessageBox(hWnd, TEXT("Incompatible role!"), MB_ICONSTOP | MB_OK);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -691,7 +691,7 @@ int plselFinalSelection(HWND hWnd, int* selection)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (flags.initrace < 0) {
|
if (flags.initrace < 0) {
|
||||||
MessageBox(hWnd, TEXT("Incompatible race!"), TEXT("STOP"), MB_OK);
|
NHMessageBox(hWnd, TEXT("Incompatible race!"), MB_ICONSTOP | MB_OK);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -707,7 +707,7 @@ int plselFinalSelection(HWND hWnd, int* selection)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (flags.initgend < 0) {
|
if (flags.initgend < 0) {
|
||||||
MessageBox(hWnd, TEXT("Incompatible gender!"), TEXT("STOP"), MB_OK);
|
NHMessageBox(hWnd, TEXT("Incompatible gender!"), MB_ICONSTOP | MB_OK);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -720,7 +720,7 @@ int plselFinalSelection(HWND hWnd, int* selection)
|
|||||||
if (flags.initalign == ROLE_RANDOM) {
|
if (flags.initalign == ROLE_RANDOM) {
|
||||||
flags.initalign = pick_align(flags.initrole, flags.initrace, flags.initgend, PICK_RANDOM);
|
flags.initalign = pick_align(flags.initrole, flags.initrace, flags.initgend, PICK_RANDOM);
|
||||||
} else {
|
} else {
|
||||||
MessageBox(hWnd, TEXT("Incompatible alignment!"), TEXT("STOP"), MB_OK);
|
NHMessageBox(hWnd, TEXT("Incompatible alignment!"), MB_ICONSTOP | MB_OK);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ static struct font_table_entry {
|
|||||||
} font_table[MAXFONTS] ;
|
} font_table[MAXFONTS] ;
|
||||||
static int font_table_size = 0;
|
static int font_table_size = 0;
|
||||||
HFONT version_splash_font;
|
HFONT version_splash_font;
|
||||||
HFONT extrainfo_splash_font;
|
|
||||||
|
|
||||||
#define NHFONT_CODE(win, attr) (((attr&0xFF)<<8)|(win_type&0xFF))
|
#define NHFONT_CODE(win, attr) (((attr&0xFF)<<8)|(win_type&0xFF))
|
||||||
|
|
||||||
@@ -41,15 +40,12 @@ void mswin_init_splashfonts(HWND hWnd)
|
|||||||
lgfnt.lfPitchAndFamily = DEFAULT_PITCH; // pitch and family
|
lgfnt.lfPitchAndFamily = DEFAULT_PITCH; // pitch and family
|
||||||
NH_A2W( "Times New Roman", lgfnt.lfFaceName, LF_FACESIZE);
|
NH_A2W( "Times New Roman", lgfnt.lfFaceName, LF_FACESIZE);
|
||||||
version_splash_font = CreateFontIndirect(&lgfnt);
|
version_splash_font = CreateFontIndirect(&lgfnt);
|
||||||
lgfnt.lfHeight = -16; // height of font
|
|
||||||
extrainfo_splash_font = CreateFontIndirect(&lgfnt);
|
|
||||||
ReleaseDC(hWnd, hdc);
|
ReleaseDC(hWnd, hdc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mswin_destroy_splashfonts()
|
void mswin_destroy_splashfonts()
|
||||||
{
|
{
|
||||||
DeleteObject (version_splash_font);
|
DeleteObject (version_splash_font);
|
||||||
DeleteObject (extrainfo_splash_font);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* create font based on window type, charater attributes and
|
/* create font based on window type, charater attributes and
|
||||||
|
|||||||
@@ -138,13 +138,13 @@ numpad[KEY_LAST][3] = {
|
|||||||
{'9', M('9'), '9'}, /* 9 */
|
{'9', M('9'), '9'}, /* 9 */
|
||||||
{'m', C('p'), C('p')}, /* - */
|
{'m', C('p'), C('p')}, /* - */
|
||||||
{'4', M('4'), '4'}, /* 4 */
|
{'4', M('4'), '4'}, /* 4 */
|
||||||
{'5', M('5'), '5'}, /* 5 */
|
{'g', 'G', 'g'}, /* 5 */
|
||||||
{'6', M('6'), '6'}, /* 6 */
|
{'6', M('6'), '6'}, /* 6 */
|
||||||
{'+', 'P', C('p')}, /* + */
|
{'+', 'P', C('p')}, /* + */
|
||||||
{'1', M('1'), '1'}, /* 1 */
|
{'1', M('1'), '1'}, /* 1 */
|
||||||
{'2', M('2'), '2'}, /* 2 */
|
{'2', M('2'), '2'}, /* 2 */
|
||||||
{'3', M('3'), '3'}, /* 3 */
|
{'3', M('3'), '3'}, /* 3 */
|
||||||
{'0', M('0'), '0'}, /* Ins */
|
{'i', 'I', C('i')}, /* Ins */
|
||||||
{'.', ':', ':'} /* Del */
|
{'.', ':', ':'} /* Del */
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -438,7 +438,8 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
|
|||||||
|
|
||||||
wp.length = sizeof(wp);
|
wp.length = sizeof(wp);
|
||||||
if (GetWindowPlacement(hWnd, &wp)) {
|
if (GetWindowPlacement(hWnd, &wp)) {
|
||||||
GetNHApp()->regMainShowState = wp.showCmd;
|
GetNHApp()->regMainShowState = (wp.showCmd == SW_SHOWMAXIMIZED
|
||||||
|
? SW_SHOWMAXIMIZED : SW_SHOWNORMAL);
|
||||||
|
|
||||||
GetNHApp()->regMainMinX = wp.ptMinPosition.x;
|
GetNHApp()->regMainMinX = wp.ptMinPosition.x;
|
||||||
GetNHApp()->regMainMinY = wp.ptMinPosition.y;
|
GetNHApp()->regMainMinY = wp.ptMinPosition.y;
|
||||||
@@ -472,9 +473,15 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
|
|||||||
NHEVENT_KBD('\033'); /* and send keyboard input as if user pressed ESC */
|
NHEVENT_KBD('\033'); /* and send keyboard input as if user pressed ESC */
|
||||||
/* additional code for this is done in menu and rip windows */
|
/* additional code for this is done in menu and rip windows */
|
||||||
}
|
}
|
||||||
|
else if (!program_state.something_worth_saving)
|
||||||
|
{
|
||||||
|
/* User exited before the game started, e.g. during splash display */
|
||||||
|
/* Just get out. */
|
||||||
|
bail((char *)0);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch(MessageBox(hWnd, TEXT("Save?"), TEXT("NetHack for Windows"), MB_YESNOCANCEL | MB_ICONQUESTION)) {
|
switch (NHMessageBox(hWnd, TEXT("Save?"), 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;
|
||||||
@@ -761,9 +768,9 @@ LRESULT onWMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
{
|
{
|
||||||
mswin_destroy_reg();
|
mswin_destroy_reg();
|
||||||
/* Notify the user that windows settings will not be saved this time. */
|
/* Notify the user that windows settings will not be saved this time. */
|
||||||
MessageBox(GetNHApp()->hMainWnd,
|
NHMessageBox(GetNHApp()->hMainWnd,
|
||||||
"Your Windows Settings will not be stored when you exit this time.",
|
"Your Windows Settings will not be stored when you exit this time.",
|
||||||
"NetHack", MB_OK | MB_ICONINFORMATION);
|
MB_OK | MB_ICONINFORMATION);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,27 +16,31 @@ PNHWinApp GetNHApp(void);
|
|||||||
BOOL CALLBACK NHSplashWndProc(HWND, UINT, WPARAM, LPARAM);
|
BOOL CALLBACK NHSplashWndProc(HWND, UINT, WPARAM, LPARAM);
|
||||||
|
|
||||||
#define SPLASH_WIDTH 440
|
#define SPLASH_WIDTH 440
|
||||||
#define SPLASH_HEIGHT 301
|
#define SPLASH_HEIGHT 322
|
||||||
#define SPLASH_VERSION_X 290
|
#define SPLASH_VERSION_X 290
|
||||||
#define SPLASH_VERSION_Y 10
|
#define SPLASH_VERSION_Y 10
|
||||||
#define SPLASH_EXTRA_X_BEGIN 15
|
|
||||||
#define SPLASH_EXTRA_X_END 415
|
|
||||||
#define SPLASH_EXTRA_Y 150
|
|
||||||
#define SPLASH_OFFSET_X 10
|
#define SPLASH_OFFSET_X 10
|
||||||
#define SPLASH_OFFSET_Y 10
|
#define SPLASH_OFFSET_Y 10
|
||||||
|
|
||||||
extern HFONT version_splash_font;
|
extern HFONT version_splash_font;
|
||||||
extern HFONT extrainfo_splash_font;
|
|
||||||
|
|
||||||
void mswin_display_splash_window (BOOL show_ver)
|
void mswin_display_splash_window (BOOL show_ver)
|
||||||
{
|
{
|
||||||
MSG msg;
|
MSG msg;
|
||||||
RECT rt;
|
int left, top;
|
||||||
RECT splashrt;
|
RECT splashrt;
|
||||||
RECT clientrt;
|
RECT clientrt;
|
||||||
RECT controlrt;
|
RECT controlrt;
|
||||||
HWND hWnd;
|
HWND hWnd;
|
||||||
int buttop;
|
int buttop;
|
||||||
|
int strsize = 0;
|
||||||
|
int bufsize = BUFSZ;
|
||||||
|
char *buf = malloc(bufsize);
|
||||||
|
|
||||||
|
if (buf == NULL)
|
||||||
|
panic("out of memory");
|
||||||
|
buf[0] = '\0';
|
||||||
|
|
||||||
|
|
||||||
hWnd = CreateDialog(GetNHApp()->hApp, MAKEINTRESOURCE(IDD_SPLASH),
|
hWnd = CreateDialog(GetNHApp()->hApp, MAKEINTRESOURCE(IDD_SPLASH),
|
||||||
GetNHApp()->hMainWnd, NHSplashWndProc);
|
GetNHApp()->hMainWnd, NHSplashWndProc);
|
||||||
@@ -57,82 +61,115 @@ void mswin_display_splash_window (BOOL show_ver)
|
|||||||
splashrt.right += SPLASH_WIDTH + SPLASH_OFFSET_X * 2 - clientrt.right;
|
splashrt.right += SPLASH_WIDTH + SPLASH_OFFSET_X * 2 - clientrt.right;
|
||||||
splashrt.bottom += SPLASH_HEIGHT + controlrt.bottom + SPLASH_OFFSET_Y * 3 - clientrt.bottom;
|
splashrt.bottom += SPLASH_HEIGHT + controlrt.bottom + SPLASH_OFFSET_Y * 3 - clientrt.bottom;
|
||||||
/* Place the window centered */
|
/* Place the window centered */
|
||||||
GetWindowRect(GetNHApp()->hMainWnd, &rt);
|
/* On the screen, not on the parent window */
|
||||||
rt.left += (rt.right - rt.left - splashrt.right) / 2;
|
left = (GetSystemMetrics(SM_CXSCREEN) - splashrt.right) / 2;
|
||||||
rt.top += (rt.bottom - rt.top - splashrt.bottom) / 2;
|
top = (GetSystemMetrics(SM_CYSCREEN) - splashrt.bottom) / 2;
|
||||||
MoveWindow(hWnd, rt.left, rt.top, splashrt.right, splashrt.bottom, TRUE);
|
MoveWindow(hWnd, left, top, splashrt.right, splashrt.bottom, TRUE);
|
||||||
/* Place the OK control */
|
/* Place the OK control */
|
||||||
GetClientRect (hWnd, &clientrt);
|
GetClientRect (hWnd, &clientrt);
|
||||||
MoveWindow (GetDlgItem(hWnd, IDOK),
|
MoveWindow (GetDlgItem(hWnd, IDOK),
|
||||||
(clientrt.right - clientrt.left - controlrt.right) / 2,
|
(clientrt.right - clientrt.left - controlrt.right) / 2,
|
||||||
clientrt.bottom - controlrt.bottom - SPLASH_OFFSET_Y,
|
clientrt.bottom - controlrt.bottom - SPLASH_OFFSET_Y,
|
||||||
controlrt.right, controlrt.bottom, TRUE);
|
controlrt.right, controlrt.bottom, TRUE);
|
||||||
buttop = clientrt.bottom - controlrt.bottom - SPLASH_OFFSET_Y;
|
buttop = clientrt.bottom - controlrt.bottom - SPLASH_OFFSET_Y;
|
||||||
/* Place the text control */
|
/* Place the text control */
|
||||||
GetWindowRect (GetDlgItem(hWnd, IDC_EXTRAINFO), &controlrt);
|
GetWindowRect (GetDlgItem(hWnd, IDC_EXTRAINFO), &controlrt);
|
||||||
controlrt.right -= controlrt.left;
|
controlrt.right -= controlrt.left;
|
||||||
controlrt.bottom -= controlrt.top;
|
controlrt.bottom -= controlrt.top;
|
||||||
GetClientRect (hWnd, &clientrt);
|
GetClientRect (hWnd, &clientrt);
|
||||||
MoveWindow (GetDlgItem(hWnd, IDC_EXTRAINFO),
|
MoveWindow (GetDlgItem(hWnd, IDC_EXTRAINFO),
|
||||||
clientrt.left + SPLASH_OFFSET_X,
|
clientrt.left + SPLASH_OFFSET_X,
|
||||||
buttop - controlrt.bottom - SPLASH_OFFSET_Y,
|
buttop - controlrt.bottom - SPLASH_OFFSET_Y,
|
||||||
clientrt.right - 2 * SPLASH_OFFSET_X, controlrt.bottom, TRUE);
|
clientrt.right - 2 * SPLASH_OFFSET_X, controlrt.bottom, TRUE);
|
||||||
if (show_ver) {
|
|
||||||
/* Show complete version informatoin */
|
|
||||||
char buf[BUFSZ];
|
|
||||||
|
|
||||||
getversionstring(buf);
|
/* Fill the text control */
|
||||||
SetWindowText(GetDlgItem(hWnd, IDC_EXTRAINFO), buf);
|
Sprintf (buf, "%s\r\n%s\r\n%s\r\n\r\n", COPYRIGHT_BANNER_A, COPYRIGHT_BANNER_B,
|
||||||
|
COPYRIGHT_BANNER_C);
|
||||||
|
strsize = strlen(buf);
|
||||||
|
|
||||||
} else {
|
if (show_ver) {
|
||||||
/* Show news, if any */
|
/* Show complete version information */
|
||||||
FILE *nf;
|
dlb *f;
|
||||||
|
|
||||||
nf = fopen(NEWS, "r");
|
getversionstring(buf + strsize);
|
||||||
if (nf != NULL) {
|
strcat(buf, "\r\n\r\n");
|
||||||
char *buf = NULL;
|
strsize = strlen(buf);
|
||||||
int bufsize = 0;
|
|
||||||
int strsize = 0;
|
|
||||||
char line[LLEN + 1];
|
|
||||||
|
|
||||||
while (fgets(line, LLEN, nf)) {
|
/* Add compile options */
|
||||||
size_t len;
|
f = dlb_fopen(OPTIONS_USED, RDTMODE);
|
||||||
len = strlen(line);
|
if (f) {
|
||||||
if (line[len - 1] == '\n') {
|
char line[LLEN + 1];
|
||||||
line[len - 1] = '\r';
|
|
||||||
line[len] = '\n';
|
while (dlb_fgets(line, LLEN, f)) {
|
||||||
line[len + 1] = '\0';
|
size_t len;
|
||||||
len++;
|
len = strlen(line);
|
||||||
}
|
if (len > 0 && line[len - 1] == '\n') {
|
||||||
if (strsize + (int)len > bufsize)
|
line[len - 1] = '\r';
|
||||||
{
|
line[len] = '\n';
|
||||||
bufsize += BUFSZ;
|
line[len + 1] = '\0';
|
||||||
buf = realloc(buf, bufsize);
|
len++;
|
||||||
if (buf == NULL)
|
}
|
||||||
panic("out of memory");
|
if (strsize + (int)len > bufsize)
|
||||||
if (strsize == 0)
|
{
|
||||||
buf[0] = '\0';
|
bufsize += BUFSZ;
|
||||||
}
|
buf = realloc(buf, bufsize);
|
||||||
strcat(buf, line);
|
if (buf == NULL)
|
||||||
strsize += len;
|
panic("out of memory");
|
||||||
}
|
}
|
||||||
(void) fclose(nf);
|
strcat(buf, line);
|
||||||
SetWindowText(GetDlgItem(hWnd, IDC_EXTRAINFO), buf);
|
strsize += len;
|
||||||
free(buf);
|
}
|
||||||
}
|
(void) dlb_fclose(f);
|
||||||
else
|
}
|
||||||
SetWindowText(GetDlgItem(hWnd, IDC_EXTRAINFO), "No news.");
|
} else {
|
||||||
}
|
/* Show news, if any */
|
||||||
|
if (iflags.news) {
|
||||||
|
FILE *nf;
|
||||||
|
|
||||||
|
iflags.news = 0; /* prevent newgame() from re-displaying news */
|
||||||
|
nf = fopen(NEWS, "r");
|
||||||
|
if (nf != NULL) {
|
||||||
|
char line[LLEN + 1];
|
||||||
|
|
||||||
|
while (fgets(line, LLEN, nf)) {
|
||||||
|
size_t len;
|
||||||
|
len = strlen(line);
|
||||||
|
if (len > 0 && line[len - 1] == '\n') {
|
||||||
|
line[len - 1] = '\r';
|
||||||
|
line[len] = '\n';
|
||||||
|
line[len + 1] = '\0';
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
if (strsize + (int)len > bufsize)
|
||||||
|
{
|
||||||
|
bufsize += BUFSZ;
|
||||||
|
buf = realloc(buf, bufsize);
|
||||||
|
if (buf == NULL)
|
||||||
|
panic("out of memory");
|
||||||
|
}
|
||||||
|
strcat(buf, line);
|
||||||
|
strsize += len;
|
||||||
|
}
|
||||||
|
(void) fclose(nf);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strcat(buf, "No news.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetWindowText(GetDlgItem(hWnd, IDC_EXTRAINFO), buf);
|
||||||
|
free(buf);
|
||||||
ShowWindow(hWnd, SW_SHOW);
|
ShowWindow(hWnd, SW_SHOW);
|
||||||
|
|
||||||
while( IsWindow(hWnd) &&
|
while( IsWindow(hWnd) &&
|
||||||
GetMessage(&msg, NULL, 0, 0)!=0 ) {
|
GetMessage(&msg, NULL, 0, 0)!=0 ) {
|
||||||
if( !IsDialogMessage(hWnd, &msg) ) {
|
if( !IsDialogMessage(hWnd, &msg) ) {
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GetNHApp()->hPopupWnd = NULL;
|
GetNHApp()->hPopupWnd = NULL;
|
||||||
mswin_destroy_splashfonts();
|
mswin_destroy_splashfonts();
|
||||||
}
|
}
|
||||||
@@ -155,7 +192,6 @@ BOOL CALLBACK NHSplashWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
|||||||
case WM_PAINT:
|
case WM_PAINT:
|
||||||
{
|
{
|
||||||
char VersionString[BUFSZ];
|
char VersionString[BUFSZ];
|
||||||
char InfoString[BUFSZ];
|
|
||||||
RECT rt;
|
RECT rt;
|
||||||
HDC hdcBitmap;
|
HDC hdcBitmap;
|
||||||
HANDLE OldBitmap;
|
HANDLE OldBitmap;
|
||||||
@@ -189,22 +225,6 @@ BOOL CALLBACK NHSplashWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
|
|||||||
DT_LEFT | DT_NOPREFIX | DT_CALCRECT);
|
DT_LEFT | DT_NOPREFIX | DT_CALCRECT);
|
||||||
DrawText (hdc, VersionString, strlen(VersionString), &rt,
|
DrawText (hdc, VersionString, strlen(VersionString), &rt,
|
||||||
DT_LEFT | DT_NOPREFIX);
|
DT_LEFT | DT_NOPREFIX);
|
||||||
|
|
||||||
/* Print copyright banner */
|
|
||||||
|
|
||||||
SetTextColor (hdc, RGB(255, 255, 255));
|
|
||||||
Sprintf (InfoString, "%s\n%s\n%s\n", COPYRIGHT_BANNER_A, COPYRIGHT_BANNER_B,
|
|
||||||
COPYRIGHT_BANNER_C);
|
|
||||||
SelectObject(hdc, extrainfo_splash_font);
|
|
||||||
rt.left = SPLASH_EXTRA_X_BEGIN;
|
|
||||||
rt.right = SPLASH_EXTRA_X_END;
|
|
||||||
rt.bottom = rt.top = SPLASH_EXTRA_Y;
|
|
||||||
DrawText (hdc, InfoString, strlen(InfoString), &rt,
|
|
||||||
DT_LEFT | DT_NOPREFIX | DT_LEFT | DT_VCENTER | DT_CALCRECT);
|
|
||||||
DrawText (hdc, InfoString, strlen(InfoString), &rt,
|
|
||||||
DT_LEFT | DT_NOPREFIX | DT_LEFT | DT_VCENTER);
|
|
||||||
|
|
||||||
SelectObject(hdc, OldFont);
|
|
||||||
EndPaint (hWnd, &ps);
|
EndPaint (hWnd, &ps);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#include "mhrip.h"
|
#include "mhrip.h"
|
||||||
#include "mhmain.h"
|
#include "mhmain.h"
|
||||||
#include "mhfont.h"
|
#include "mhfont.h"
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
#define LLEN 128
|
#define LLEN 128
|
||||||
|
|
||||||
@@ -333,8 +334,8 @@ void prompt_for_player_selection(void)
|
|||||||
|
|
||||||
/* tty_putstr(BASE_WINDOW, 0, ""); */
|
/* tty_putstr(BASE_WINDOW, 0, ""); */
|
||||||
/* echoline = wins[BASE_WINDOW]->cury; */
|
/* echoline = wins[BASE_WINDOW]->cury; */
|
||||||
box_result = MessageBox(NULL, prompt, TEXT("NetHack for Windows"),
|
box_result = NHMessageBox(NULL, prompt,
|
||||||
MB_YESNOCANCEL | MB_DEFBUTTON1);
|
MB_YESNOCANCEL | MB_DEFBUTTON1 | MB_ICONQUESTION);
|
||||||
pick4u = (box_result == IDYES) ? 'y' : (box_result == IDNO) ? 'n' : '\033';
|
pick4u = (box_result == IDYES) ? 'y' : (box_result == IDNO) ? 'n' : '\033';
|
||||||
/* tty_putstr(BASE_WINDOW, 0, prompt); */
|
/* tty_putstr(BASE_WINDOW, 0, prompt); */
|
||||||
do {
|
do {
|
||||||
@@ -998,7 +999,7 @@ void mswin_display_file(const char *filename,BOOLEAN_P must_exist)
|
|||||||
if (must_exist) {
|
if (must_exist) {
|
||||||
TCHAR message[90];
|
TCHAR message[90];
|
||||||
_stprintf(message, TEXT("Warning! Could not find file: %s\n"), NH_A2W(filename, wbuf, sizeof(wbuf)));
|
_stprintf(message, TEXT("Warning! Could not find file: %s\n"), NH_A2W(filename, wbuf, sizeof(wbuf)));
|
||||||
MessageBox(GetNHApp()->hMainWnd, message, TEXT("ERROR"), MB_OK | MB_ICONERROR );
|
NHMessageBox(GetNHApp()->hMainWnd, message, MB_OK | MB_ICONEXCLAMATION );
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
winid text;
|
winid text;
|
||||||
@@ -1275,7 +1276,7 @@ void mswin_raw_print(const char *str)
|
|||||||
TCHAR wbuf[255];
|
TCHAR wbuf[255];
|
||||||
logDebug("mswin_raw_print(%s)\n", str);
|
logDebug("mswin_raw_print(%s)\n", str);
|
||||||
if( str && *str )
|
if( str && *str )
|
||||||
MessageBox(GetNHApp()->hMainWnd, NH_A2W(str, wbuf, sizeof(wbuf)), TEXT("NetHack"), MB_OK );
|
NHMessageBox(GetNHApp()->hMainWnd, NH_A2W(str, wbuf, sizeof(wbuf)), MB_ICONINFORMATION | MB_OK );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1288,7 +1289,7 @@ void mswin_raw_print_bold(const char *str)
|
|||||||
TCHAR wbuf[255];
|
TCHAR wbuf[255];
|
||||||
logDebug("mswin_raw_print_bold(%s)\n", str);
|
logDebug("mswin_raw_print_bold(%s)\n", str);
|
||||||
if( str && *str )
|
if( str && *str )
|
||||||
MessageBox(GetNHApp()->hMainWnd, NH_A2W(str, wbuf, sizeof(wbuf)), TEXT("NetHack"), MB_OK );
|
NHMessageBox(GetNHApp()->hMainWnd, NH_A2W(str, wbuf, sizeof(wbuf)), MB_ICONINFORMATION | MB_OK );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1405,10 +1406,9 @@ char mswin_yn_function(const char *question, const char *choices,
|
|||||||
+ strlen(GetNHApp()->saved_text) + 1);
|
+ strlen(GetNHApp()->saved_text) + 1);
|
||||||
DWORD box_result;
|
DWORD box_result;
|
||||||
strcat(text, question);
|
strcat(text, question);
|
||||||
box_result = MessageBox(NULL,
|
box_result = NHMessageBox(NULL,
|
||||||
NH_W2A(text, message, sizeof(message)),
|
NH_W2A(text, message, sizeof(message)),
|
||||||
TEXT("NetHack for Windows"),
|
MB_ICONQUESTION | MB_YESNOCANCEL |
|
||||||
MB_YESNOCANCEL |
|
|
||||||
((def == 'y') ? MB_DEFBUTTON1 :
|
((def == 'y') ? MB_DEFBUTTON1 :
|
||||||
(def == 'n') ? MB_DEFBUTTON2 : MB_DEFBUTTON3));
|
(def == 'n') ? MB_DEFBUTTON2 : MB_DEFBUTTON3));
|
||||||
free(text);
|
free(text);
|
||||||
@@ -2476,3 +2476,13 @@ void mswin_update_window_placement(int type, LPRECT rt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int NHMessageBox(HWND hWnd, LPCTSTR text, UINT type)
|
||||||
|
{
|
||||||
|
TCHAR title[MAX_LOADSTRING];
|
||||||
|
|
||||||
|
LoadString(GetNHApp()->hApp, IDS_APP_TITLE_SHORT, title, MAX_LOADSTRING);
|
||||||
|
|
||||||
|
return MessageBox(hWnd, text, title, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
#define IDS_HELLO 106
|
#define IDS_HELLO 106
|
||||||
#define IDI_NETHACKW 107
|
#define IDI_NETHACKW 107
|
||||||
#define IDC_NETHACKW 109
|
#define IDC_NETHACKW 109
|
||||||
|
#define IDS_APP_TITLE_SHORT 110
|
||||||
#define IDR_MAINFRAME 128
|
#define IDR_MAINFRAME 128
|
||||||
#define IDB_TILES 129
|
#define IDB_TILES 129
|
||||||
#define IDD_TEXT 130
|
#define IDD_TEXT 130
|
||||||
|
|||||||
@@ -164,6 +164,9 @@ void mswin_write_reg(void);
|
|||||||
void mswin_get_window_placement(int type, LPRECT rt);
|
void mswin_get_window_placement(int type, LPRECT rt);
|
||||||
void mswin_update_window_placement(int type, LPRECT rt);
|
void mswin_update_window_placement(int type, LPRECT rt);
|
||||||
|
|
||||||
|
int NHMessageBox(HWND hWnd, LPCTSTR text, UINT type);
|
||||||
|
|
||||||
|
|
||||||
extern HBRUSH menu_bg_brush;
|
extern HBRUSH menu_bg_brush;
|
||||||
extern HBRUSH menu_fg_brush;
|
extern HBRUSH menu_fg_brush;
|
||||||
extern HBRUSH text_bg_brush;
|
extern HBRUSH text_bg_brush;
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ CAPTION "Welcome to NetHack"
|
|||||||
FONT 8, "MS Sans Serif"
|
FONT 8, "MS Sans Serif"
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "OK",IDOK,224,236,50,14
|
DEFPUSHBUTTON "OK",IDOK,224,236,50,14
|
||||||
EDITTEXT IDC_EXTRAINFO,7,191,267,37,ES_MULTILINE | ES_READONLY |
|
EDITTEXT IDC_EXTRAINFO,7,176,267,52,ES_MULTILINE | ES_READONLY |
|
||||||
WS_VSCROLL
|
WS_VSCROLL
|
||||||
END
|
END
|
||||||
|
|
||||||
@@ -325,6 +325,7 @@ STRINGTABLE DISCARDABLE
|
|||||||
BEGIN
|
BEGIN
|
||||||
IDS_APP_TITLE "NetHack for Windows - Graphical Interface"
|
IDS_APP_TITLE "NetHack for Windows - Graphical Interface"
|
||||||
IDC_NETHACKW "NETHACKW"
|
IDC_NETHACKW "NETHACKW"
|
||||||
|
IDS_APP_TITLE_SHORT "NetHack for Windows"
|
||||||
END
|
END
|
||||||
|
|
||||||
#endif // English (U.S.) resources
|
#endif // English (U.S.) resources
|
||||||
|
|||||||
Reference in New Issue
Block a user