X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fmain-win.c;h=3bc0f1cef5b1612e30e5083c7869a16ad20654b7;hb=84c58762171463d0e15000104057a55dff7b7158;hp=833d5f9bc85e31901eedc027f57ee596e3371c50;hpb=7ecc637ea9c277b970d6da491d50d7cbd2494b4d;p=hengband%2Fhengband.git diff --git a/src/main-win.c b/src/main-win.c index 833d5f9bc..3bc0f1cef 100644 --- a/src/main-win.c +++ b/src/main-win.c @@ -404,7 +404,7 @@ struct _term_data uint map_tile_hgt; bool map_active; -#ifdef JP +#if 1 /* #ifdef JP */ LOGFONT lf; #endif @@ -500,15 +500,11 @@ static bool can_use_graphics = FALSE; */ static DIBINIT infGraph; -#ifdef USE_TRANSPARENCY - /* * The global bitmap mask */ static DIBINIT infMask; -#endif /* USE_TRANSPARENCY */ - #endif /* USE_GRAPHICS */ @@ -550,7 +546,7 @@ static cptr AngList = "AngList"; static cptr ANGBAND_DIR_XTRA_GRAF; static cptr ANGBAND_DIR_XTRA_SOUND; static cptr ANGBAND_DIR_XTRA_HELP; -#ifndef JP +#if 0 /* #ifndef JP */ static cptr ANGBAND_DIR_XTRA_FONT; #endif #ifdef USE_MUSIC @@ -565,6 +561,12 @@ static COLORREF win_clr[256]; /* + * Flag for macro trigger with dump ASCII + */ +static bool Term_no_press = FALSE; + + +/* * The "simple" color values * * See "main-ibm.c" for original table information @@ -605,25 +607,35 @@ static bool ignore_key[256]; * Hack -- initialization list for "special_key" */ static byte special_key_list[] = { -VK_CLEAR,VK_PAUSE,VK_CAPITAL,VK_KANA,VK_JUNJA,VK_FINAL,VK_KANJI, -VK_CONVERT,VK_NONCONVERT,VK_ACCEPT,VK_MODECHANGE, -VK_PRIOR,VK_NEXT,VK_END,VK_HOME,VK_LEFT,VK_UP,VK_RIGHT,VK_DOWN, -VK_SELECT,VK_PRINT,VK_EXECUTE,VK_SNAPSHOT,VK_INSERT,VK_DELETE, -VK_HELP,VK_APPS, -VK_F1,VK_F2,VK_F3,VK_F4,VK_F5,VK_F6,VK_F7,VK_F8,VK_F9,VK_F10, -VK_F11,VK_F12,VK_F13,VK_F14,VK_F15,VK_F16,VK_F17,VK_F18,VK_F19,VK_F20, -VK_F21,VK_F22,VK_F23,VK_F24,VK_NUMLOCK,VK_SCROLL, -VK_ATTN,VK_CRSEL,VK_EXSEL,VK_EREOF,VK_PLAY,VK_ZOOM,VK_NONAME, -VK_PA1,0 + VK_CLEAR, VK_PAUSE, VK_CAPITAL, + VK_KANA, VK_JUNJA, VK_FINAL, VK_KANJI, + VK_CONVERT, VK_NONCONVERT, VK_ACCEPT, VK_MODECHANGE, + VK_PRIOR, VK_NEXT, VK_END, VK_HOME, + VK_LEFT, VK_UP, VK_RIGHT, VK_DOWN, + VK_SELECT, VK_PRINT, VK_EXECUTE, VK_SNAPSHOT, + VK_INSERT, VK_DELETE, VK_HELP, VK_APPS, + VK_NUMPAD0, VK_NUMPAD1, VK_NUMPAD2, VK_NUMPAD3, + VK_NUMPAD4, VK_NUMPAD5, VK_NUMPAD6, VK_NUMPAD7, + VK_NUMPAD8, VK_NUMPAD9, VK_MULTIPLY, VK_ADD, + VK_SEPARATOR, VK_SUBTRACT, VK_DECIMAL, VK_DIVIDE, + VK_F1, VK_F2, VK_F3, VK_F4, VK_F5, VK_F6, + VK_F7, VK_F8, VK_F9, VK_F10, VK_F11, VK_F12, + VK_F13, VK_F14, VK_F15, VK_F16, VK_F17, VK_F18, + VK_F19,VK_F20, VK_F21, VK_F22, VK_F23, VK_F24, + VK_NUMLOCK, VK_SCROLL, VK_ATTN, VK_CRSEL, + VK_EXSEL, VK_EREOF, VK_PLAY, VK_ZOOM, + VK_NONAME, VK_PA1, + 0 /* End of List */ }; static byte ignore_key_list[] = { -VK_ESCAPE,VK_TAB,VK_SPACE, -'F','W','O','H', /* these are menu characters.*/ -VK_SHIFT,VK_CONTROL,VK_MENU,VK_LWIN,VK_RWIN, -VK_LSHIFT,VK_RSHIFT,VK_LCONTROL,VK_RCONTROL,VK_LMENU,VK_RMENU,0 + VK_ESCAPE, VK_TAB, VK_SPACE, + 'F', 'W', 'O', /*'H',*/ /* these are menu characters.*/ + VK_SHIFT, VK_CONTROL, VK_MENU, VK_LWIN, VK_RWIN, + VK_LSHIFT, VK_RSHIFT, VK_LCONTROL, VK_RCONTROL, + VK_LMENU, VK_RMENU, + 0 /* End of List */ }; - #else /* * Hack -- initialization list for "special_key" @@ -657,7 +669,6 @@ static byte special_key_list[] = VK_INSERT, /* 0x2D (KP<0>) */ VK_DELETE, /* 0x2E (KP<.>) */ VK_HELP, /* 0x2F (?????) */ - #if 0 VK_NUMPAD0, /* 0x60 (KP<0>) */ VK_NUMPAD1, /* 0x61 (KP<1>) */ @@ -676,7 +687,6 @@ static byte special_key_list[] = VK_DECIMAL, /* 0x6E (KP<.>) */ VK_DIVIDE, /* 0x6F (KP) */ #endif - VK_F1, /* 0x70 */ VK_F2, /* 0x71 */ VK_F3, /* 0x72 */ @@ -701,7 +711,6 @@ static byte special_key_list[] = VK_F22, /* 0x85 */ VK_F23, /* 0x86 */ VK_F24, /* 0x87 */ - 0 }; #endif @@ -725,7 +734,11 @@ static int init_bg(void) hBG = LoadImage(NULL, bmfile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); if (!hBG) { +#ifdef JP plog_fmt("ÊÉ»æÍÑ¥Ó¥Ã¥È¥Þ¥Ã¥× '%s' ¤òÆɤ߹þ¤á¤Þ¤»¤ó¡£", bmfile); +#else + plog_fmt("Can't load the bitmap file '%s'.", bmfile); +#endif use_bg = 0; return 0; } @@ -812,7 +825,7 @@ static cptr extract_file_name(cptr s) * * Return a pointer to a static buffer holding the capitalized base name. */ -#ifndef JP +#if 0 /* #ifndef JP */ static char *analyze_font(char *path, int *wp, int *hp) { int wid, hgt; @@ -836,7 +849,7 @@ static char *analyze_font(char *path, int *wp, int *hp) } /* Find first 'X' */ - s = strchr(p, 'X'); + s = my_strchr(p, 'X'); /* Extract font width */ wid = atoi(p); @@ -1071,12 +1084,16 @@ static void save_prefs_aux(term_data *td, cptr sec_name) #ifdef JP strcpy(buf, td->lf.lfFaceName[0]!='\0' ? td->lf.lfFaceName : "£Í£Ó ¥´¥·¥Ã¥¯"); #else +#if 0 strcpy(buf, td->font_file ? td->font_file : "8X13.FON"); +#else + strcpy(buf, td->lf.lfFaceName[0]!='\0' ? td->lf.lfFaceName : "Courier"); +#endif #endif WritePrivateProfileString(sec_name, "Font", buf, ini_file); -#ifdef JP +#if 1 /* #ifdef JP */ wsprintf(buf, "%d", td->lf.lfWidth); WritePrivateProfileString(sec_name, "FontWid", buf, ini_file); wsprintf(buf, "%d", td->lf.lfHeight); @@ -1178,7 +1195,11 @@ static void load_prefs_aux(term_data *td, cptr sec_name) #ifdef JP GetPrivateProfileString(sec_name, "Font", "£Í£Ó ¥´¥·¥Ã¥¯", tmp, 127, ini_file); #else +#if 0 GetPrivateProfileString(sec_name, "Font", "8X13.FON", tmp, 127, ini_file); +#else + GetPrivateProfileString(sec_name, "Font", "Courier", tmp, 127, ini_file); +#endif #endif @@ -1186,7 +1207,7 @@ static void load_prefs_aux(term_data *td, cptr sec_name) td->bizarre = (GetPrivateProfileInt(sec_name, "Bizarre", td->bizarre, ini_file) != 0); /* Analyze font, save desired font name */ -#ifdef JP +#if 1 /* #ifdef JP */ td->font_want = string_make(tmp); hgt = 15; wid = 0; td->lf.lfWidth = GetPrivateProfileInt(sec_name, "FontWid", wid, ini_file); @@ -1198,7 +1219,7 @@ static void load_prefs_aux(term_data *td, cptr sec_name) /* Tile size */ -#ifdef JP +#if 1 /* #ifdef JP */ td->tile_wid = GetPrivateProfileInt(sec_name, "TileWid", td->lf.lfWidth, ini_file); td->tile_hgt = GetPrivateProfileInt(sec_name, "TileHgt", td->lf.lfHeight, ini_file); #else @@ -1539,8 +1560,6 @@ static bool init_graphics(void) infGraph.CellWidth = wid; infGraph.CellHeight = hgt; -#ifdef USE_TRANSPARENCY - if (arg_graphics == GRAPHICS_ADAM_BOLT) { /* Access the mask file */ @@ -1554,8 +1573,6 @@ static bool init_graphics(void) } } -#endif /* USE_TRANSPARENCY */ - /* Activate a palette */ if (!new_palette()) { @@ -1634,7 +1651,7 @@ static errr term_force_font(term_data *td, cptr path) { int wid, hgt; -#ifndef JP +#if 0 /* #ifndef JP */ int i; char *base; char buf[1024]; @@ -1643,7 +1660,16 @@ static errr term_force_font(term_data *td, cptr path) /* Forget the old font (if needed) */ if (td->font_id) DeleteObject(td->font_id); -#ifndef JP +#if 1 /* #ifdef JP */ + /* Unused */ + (void)path; + + /* Create the font (using the 'base' of the font file name!) */ + td->font_id = CreateFontIndirect(&(td->lf)); + wid = td->lf.lfWidth; + hgt = td->lf.lfHeight; + if (!td->font_id) return (1); +#else /* Forget old font */ if (td->font_file) { @@ -1674,11 +1700,9 @@ static errr term_force_font(term_data *td, cptr path) td->font_file = NULL; } - /* No path given */ if (!path) return (1); - /* Local copy */ strcpy(buf, path); @@ -1699,22 +1723,14 @@ static errr term_force_font(term_data *td, cptr path) /* Remove the "suffix" */ base[strlen(base)-4] = '\0'; -#endif /* Create the font (using the 'base' of the font file name!) */ -#ifdef JP - td->font_id = CreateFontIndirect(&(td->lf)); - wid = td->lf.lfWidth; - hgt = td->lf.lfHeight; - if (!td->font_id) return (1); -#else td->font_id = CreateFont(hgt, wid, 0, 0, FW_DONTCARE, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_DONTCARE, base); #endif - /* Hack -- Unknown size */ if (!wid || !hgt) { @@ -1749,7 +1765,7 @@ static errr term_force_font(term_data *td, cptr path) */ static void term_change_font(term_data *td) { -#ifdef JP +#if 1 /* #ifdef JP */ CHOOSEFONT cf; memset(&cf, 0, sizeof(cf)); @@ -1894,6 +1910,9 @@ static void Term_nuke_win(term *t) */ static errr Term_user_win(int n) { + /* Unused */ + (void)n; + /* Success */ return (0); } @@ -2430,8 +2449,7 @@ static errr Term_text_win(int x, int y, int n, byte a, const char *s) RECT rc; HDC hdc; - -#ifdef JP +#if 1 /* #ifdef JP */ static HBITMAP WALL; static HBRUSH myBrush, oldBrush; static HPEN oldPen; @@ -2553,6 +2571,30 @@ static errr Term_text_win(int x, int y, int n, byte a, const char *s) rc.right += td->tile_wid; } #else +#if 1 + if (*(s+i)==127){ + oldBrush = SelectObject(hdc, myBrush); + oldPen = SelectObject(hdc, GetStockObject(NULL_PEN) ); + + /* Dump the wall */ + Rectangle(hdc, rc.left, rc.top, rc.right+1, rc.bottom+1); + + SelectObject(hdc, oldBrush); + SelectObject(hdc, oldPen); + + /* Advance */ + rc.left += td->tile_wid; + rc.right += td->tile_wid; + } else { + /* Dump the text */ + ExtTextOut(hdc, rc.left, rc.top, ETO_CLIPPED, &rc, + s+i, 1, NULL); + + /* Advance */ + rc.left += td->tile_wid; + rc.right += td->tile_wid; + } +#else /* Dump the text */ ExtTextOut(hdc, rc.left, rc.top, 0, &rc, s+i, 1, NULL); @@ -2561,6 +2603,7 @@ static errr Term_text_win(int x, int y, int n, byte a, const char *s) rc.left += td->tile_wid; rc.right += td->tile_wid; #endif +#endif } } @@ -2594,11 +2637,7 @@ static errr Term_text_win(int x, int y, int n, byte a, const char *s) * * If "graphics" is not available, we simply "wipe" the given grids. */ -# ifdef USE_TRANSPARENCY static errr Term_pict_win(int x, int y, int n, const byte *ap, const char *cp, const byte *tap, const char *tcp) -# else /* USE_TRANSPARENCY */ -static errr Term_pict_win(int x, int y, int n, const byte *ap, const char *cp) -# endif /* USE_TRANSPARENCY */ { term_data *td = (term_data*)(Term->data); @@ -2607,15 +2646,10 @@ static errr Term_pict_win(int x, int y, int n, const byte *ap, const char *cp) int i; int x1, y1, w1, h1; int x2, y2, w2, h2, tw2; - -# ifdef USE_TRANSPARENCY - int x3, y3; HDC hdcMask; -# endif /* USE_TRANSPARENCY */ - HDC hdc; HDC hdcSrc; HBITMAP hbmSrcOld; @@ -2658,16 +2692,12 @@ static errr Term_pict_win(int x, int y, int n, const byte *ap, const char *cp) hdcSrc = CreateCompatibleDC(hdc); hbmSrcOld = SelectObject(hdcSrc, infGraph.hBitmap); -# ifdef USE_TRANSPARENCY - if (arg_graphics == GRAPHICS_ADAM_BOLT) { hdcMask = CreateCompatibleDC(hdc); SelectObject(hdcMask, infMask.hBitmap); } -# endif /* USE_TRANSPARENCY */ - /* Draw attr/char pairs */ for (i = 0; i < n; i++, x2 += w2) { @@ -2682,8 +2712,6 @@ static errr Term_pict_win(int x, int y, int n, const byte *ap, const char *cp) x1 = col * w1; y1 = row * h1; -# ifdef USE_TRANSPARENCY - if (arg_graphics == GRAPHICS_ADAM_BOLT) { x3 = (tcp[i] & 0x7F) * w1; @@ -2723,9 +2751,6 @@ static errr Term_pict_win(int x, int y, int n, const byte *ap, const char *cp) } } else - -# endif /* USE_TRANSPARENCY */ - { /* Perfect size */ if ((w1 == tw2) && (h1 == h2)) @@ -2750,8 +2775,6 @@ static errr Term_pict_win(int x, int y, int n, const byte *ap, const char *cp) SelectObject(hdcSrc, hbmSrcOld); DeleteDC(hdcSrc); -# ifdef USE_TRANSPARENCY - if (arg_graphics == GRAPHICS_ADAM_BOLT) { /* Release */ @@ -2759,8 +2782,6 @@ static errr Term_pict_win(int x, int y, int n, const byte *ap, const char *cp) DeleteDC(hdcMask); } -# endif /* USE_TRANSPARENCY */ - /* Release */ ReleaseDC(td->w, hdc); @@ -2783,9 +2804,7 @@ static void windows_map(void) int x, min_x, max_x; int y, min_y, max_y; -#ifdef USE_TRANSPARENCY byte ta, tc; -#endif /* Only in graphics mode */ if (!use_graphics) return; @@ -2809,20 +2828,12 @@ static void windows_map(void) { for (y = min_y; y < max_y; y++) { -#ifdef USE_TRANSPARENCY map_info(y, x, &a, (char*)&c, &ta, (char*)&tc); -#else /* USE_TRANSPARENCY */ - map_info(y, x, &a, (char*)&c); -#endif /* USE_TRANSPARENCY */ /* Ignore non-graphics */ if ((a & 0x80) && (c & 0x80)) { -#ifdef USE_TRANSPARENCY Term_pict_win(x - min_x, y - min_y, 1, &a, &c, &ta, &tc); -#else /* USE_TRANSPARENCY */ - Term_pict_win(x - min_x, y - min_y, 1, &a, &c); -#endif /* USE_TRANSPARENCY */ } } } @@ -2901,7 +2912,7 @@ static void init_windows(void) term_data *td; -#ifndef JP +#if 0 /* #ifndef JP */ char buf[1024]; #endif @@ -2925,8 +2936,7 @@ static void init_windows(void) td->pos_x = 7 * 30; td->pos_y = 7 * 20; td->posfix = FALSE; - -#ifdef JP +#if 1 /* #ifdef JP */ td->bizarre = TRUE; #endif /* Sub windows */ @@ -2946,7 +2956,7 @@ static void init_windows(void) td->pos_x = (7 - i) * 30; td->pos_y = (7 - i) * 20; td->posfix = FALSE; -#ifdef JP +#if 1 /* #ifdef JP */ td->bizarre = TRUE; #endif } @@ -2978,9 +2988,13 @@ static void init_windows(void) { td = &data[i]; -#ifdef JP +#if 1 /* #ifdef JP */ strncpy(td->lf.lfFaceName, td->font_want, LF_FACESIZE); +#ifdef JP td->lf.lfCharSet = SHIFTJIS_CHARSET; +#else + td->lf.lfCharSet = ANSI_CHARSET; +#endif td->lf.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE; /* Activate the chosen font */ term_force_font(td, NULL); @@ -4098,6 +4112,96 @@ static void process_menus(WORD wCmd) } +static bool process_keydown(WPARAM wParam, LPARAM lParam) +{ + int i; + bool mc = FALSE; + bool ms = FALSE; + bool ma = FALSE; + + /* Extract the modifiers */ + if (GetKeyState(VK_CONTROL) & 0x8000) mc = TRUE; + if (GetKeyState(VK_SHIFT) & 0x8000) ms = TRUE; + if (GetKeyState(VK_MENU) & 0x8000) ma = TRUE; + + Term_no_press = (ma) ? TRUE : FALSE; + + /* Handle "special" keys */ + if (special_key[(byte)(wParam)] || (ma && !ignore_key[(byte)(wParam)]) ) + { + bool ext_key = (lParam & 0x1000000L) ? TRUE : FALSE; + bool numpad = FALSE; + + /* Begin the macro trigger */ + Term_keypress(31); + + /* Send the modifiers */ + if (mc) Term_keypress('C'); + if (ms) Term_keypress('S'); + if (ma) Term_keypress('A'); + + /* Extract "scan code" */ + i = LOBYTE(HIWORD(lParam)); + + /* Introduce the scan code */ + Term_keypress('x'); + + /* Extended key bit */ + switch (wParam) + { + /* Numpad Enter and '/' are extended key */ + case VK_DIVIDE: + Term_no_press = TRUE; + case VK_RETURN: /* Enter */ + numpad = ext_key; + break; + /* Other extended keys are on full keyboard */ + case VK_NUMPAD0: + case VK_NUMPAD1: + case VK_NUMPAD2: + case VK_NUMPAD3: + case VK_NUMPAD4: + case VK_NUMPAD5: + case VK_NUMPAD6: + case VK_NUMPAD7: + case VK_NUMPAD8: + case VK_NUMPAD9: + case VK_ADD: + case VK_MULTIPLY: + case VK_SUBTRACT: + case VK_SEPARATOR: + case VK_DECIMAL: + Term_no_press = TRUE; + case VK_CLEAR: + case VK_HOME: + case VK_END: + case VK_PRIOR: /* Page Up */ + case VK_NEXT: /* Page Down */ + case VK_INSERT: + case VK_DELETE: + case VK_UP: + case VK_DOWN: + case VK_LEFT: + case VK_RIGHT: + numpad = !ext_key; + } + + /* Special modifiers for keypad keys */ + if (numpad) Term_keypress('K'); + + /* Encode the hexidecimal scan code */ + Term_keypress(hexsym[i/16]); + Term_keypress(hexsym[i%16]); + + /* End the macro trigger */ + Term_keypress(13); + + return 1; + } + + return 0; +} + #ifdef __MWERKS__ LRESULT FAR PASCAL AngbandWndProc(HWND hWnd, UINT uMsg, @@ -4175,66 +4279,15 @@ LRESULT FAR PASCAL AngbandWndProc(HWND hWnd, UINT uMsg, case WM_SYSKEYDOWN: case WM_KEYDOWN: { - bool mc = FALSE; - bool ms = FALSE; - bool ma = FALSE; - - /* Extract the modifiers */ - if (GetKeyState(VK_CONTROL) & 0x8000) mc = TRUE; - if (GetKeyState(VK_SHIFT) & 0x8000) ms = TRUE; - if (GetKeyState(VK_MENU) & 0x8000) ma = TRUE; - - /* Handle "special" keys */ - if (special_key[(byte)(wParam)] || (ma && !ignore_key[(byte)(wParam)]) ) - { - bool ext_key = (lParam & 0x1000000L) ? TRUE : FALSE; - bool numpad = FALSE; - - /* Begin the macro trigger */ - Term_keypress(31); - - /* Send the modifiers */ - if (mc) Term_keypress('C'); - if (ms) Term_keypress('S'); - if (ma) Term_keypress('A'); - - /* Extract "scan code" */ - i = LOBYTE(HIWORD(lParam)); - - /* Introduce the scan code */ - Term_keypress('x'); - - /* Extended key bit */ - switch (i) - { - case VK_ENTER: - case '/': - /* Numpad Enter and '/' are extended key */ - numpad = ext_key; - default: - /* Other extended keys are on full keyboard */ - numpad = !ext_key; - } - - /* Special modifiers for keypad keys */ - if (numpad) Term_keypress('K'); - - /* Encode the hexidecimal scan code */ - Term_keypress(hexsym[i/16]); - Term_keypress(hexsym[i%16]); - - /* End the macro trigger */ - Term_keypress(13); - + if (process_keydown(wParam, lParam)) return 0; - } - break; } case WM_CHAR: { - Term_keypress(wParam); + if (Term_no_press) Term_no_press = FALSE; + else Term_keypress(wParam); return 0; } @@ -4271,13 +4324,49 @@ LRESULT FAR PASCAL AngbandWndProc(HWND hWnd, UINT uMsg, #else /* ZANGBAND */ /* do_cmd_save_game(); */ #endif /* ZANGBAND */ - Term_key_push(252); + Term_key_push(SPECIAL_KEY_QUIT); return 0; } quit(NULL); return 0; } + case WM_QUERYENDSESSION: + { + if (game_in_progress && character_generated) + { + /* Hack -- Forget messages */ + msg_flag = FALSE; + + /* Mega-Hack -- Delay death */ + if (p_ptr->chp < 0) p_ptr->is_dead = FALSE; + +#ifdef JP + do_cmd_write_nikki(NIKKI_GAMESTART, 0, "----¥²¡¼¥àÃæÃÇ----"); +#else + do_cmd_write_nikki(NIKKI_GAMESTART, 0, "---- Save and Exit Game ----"); +#endif + + /* Hardcode panic save */ + p_ptr->panic_save = 1; + + /* Forbid suspend */ + signals_ignore_tstp(); + + /* Indicate panic save */ +#ifdef JP + (void)strcpy(p_ptr->died_from, "(¶ÛµÞ¥»¡¼¥Ö)"); +#else + (void)strcpy(p_ptr->died_from, "(panic save)"); +#endif + + /* Panic save */ + (void)save_player(); + } + quit(NULL); + return 0; + } + case WM_QUIT: { quit(NULL); @@ -4550,48 +4639,15 @@ LRESULT FAR PASCAL AngbandListProc(HWND hWnd, UINT uMsg, case WM_SYSKEYDOWN: case WM_KEYDOWN: { - bool mc = FALSE; - bool ms = FALSE; - bool ma = FALSE; - - /* Extract the modifiers */ - if (GetKeyState(VK_CONTROL) & 0x8000) mc = TRUE; - if (GetKeyState(VK_SHIFT) & 0x8000) ms = TRUE; - if (GetKeyState(VK_MENU) & 0x8000) ma = TRUE; - - /* Handle "special" keys */ - if (special_key[(byte)(wParam)] || (ma && !ignore_key[(byte)(wParam)]) ) - { - /* Begin the macro trigger */ - Term_keypress(31); - - /* Send the modifiers */ - if (mc) Term_keypress('C'); - if (ms) Term_keypress('S'); - if (ma) Term_keypress('A'); - - /* Extract "scan code" */ - i = LOBYTE(HIWORD(lParam)); - - /* Introduce the scan code */ - Term_keypress('x'); - - /* Encode the hexidecimal scan code */ - Term_keypress(hexsym[i/16]); - Term_keypress(hexsym[i%16]); - - /* End the macro trigger */ - Term_keypress(13); - + if (process_keydown(wParam, lParam)) return 0; - } - break; } case WM_CHAR: { - Term_keypress(wParam); + if (Term_no_press) Term_no_press = FALSE; + else Term_keypress(wParam); return 0; } @@ -4854,10 +4910,8 @@ static void hook_quit(cptr str) if (infGraph.hPalette) DeleteObject(infGraph.hPalette); if (infGraph.hBitmap) DeleteObject(infGraph.hBitmap); -#ifdef USE_TRANSPARENCY if (infMask.hPalette) DeleteObject(infMask.hPalette); if (infMask.hBitmap) DeleteObject(infMask.hBitmap); -#endif /* USE_TRANSPARENCY */ #endif /* USE_GRAPHICS */ @@ -4962,7 +5016,7 @@ static void init_stuff(void) validate_file(path); -#ifndef JP +#if 0 /* #ifndef JP */ /* Build the "font" path */ path_build(path, sizeof(path), ANGBAND_DIR_XTRA, "font"); @@ -5040,6 +5094,9 @@ int FAR PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, HDC hdc; MSG msg; + /* Unused */ + (void)nCmdShow; + /* Save globally */ hInstance = hInst; @@ -5155,6 +5212,8 @@ int FAR PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, } } + /* Catch nasty signals */ + signals_init(); /* Initialize */ init_angband();