From a4eb436b4905803efdb97ec2352d18fd2d89fa56 Mon Sep 17 00:00:00 2001 From: zmatsuo <6488847+zmatsuo@users.noreply.github.com> Date: Wed, 31 Jul 2024 01:08:07 +0900 Subject: [PATCH] =?UTF-8?q?=E6=BC=A2=E5=AD=97=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=81=8C=E6=AD=A3=E3=81=97=E3=81=8F=E9=81=B8=E6=8A=9E=E3=81=A7?= =?UTF-8?q?=E3=81=8D=E3=81=AA=E3=81=84=E5=A0=B4=E5=90=88=E3=81=8C=E3=81=82?= =?UTF-8?q?=E3=81=A3=E3=81=9F=E3=81=AE=E3=81=A7=E4=BF=AE=E6=AD=A3=20#265?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Hide title bar や Hide menu bar のとき - メニューがポップアップメニューになる - ポップアップメニューではメニューの項目を選択した直後メニューは破棄される - メニュー項目のdwItemDataに入れたデータを利用していたが正しく読み込めなかった - メニューが破棄されていても正しく動作するよう修正 --- TTXKanjiMenu/ttxkanjimenu.c | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/TTXKanjiMenu/ttxkanjimenu.c b/TTXKanjiMenu/ttxkanjimenu.c index c6f538ea0..2aca4087f 100644 --- a/TTXKanjiMenu/ttxkanjimenu.c +++ b/TTXKanjiMenu/ttxkanjimenu.c @@ -76,7 +76,7 @@ static const MenuInfo MenuNameRecvK[] = { { ID_MI_USEONESETTING, 0, L"Use &one setting", "MENU_USE_ONE_SETTING" }, }; -// 󓯐MR[h (؍) +// 󓯊R[h (؍) static const MenuInfo MenuNameOneK[] = { { ID_MI_KANJIRECV + 0, IdKoreanCP949, L"Recv/Send: &KS5601", "MENU_KS5601" }, { ID_MI_KANJIRECV + 1, IdUTF8, L"Recv/Send: &UTF-8", "MENU_UTF8" }, @@ -433,6 +433,17 @@ static void PASCAL TTXModifyPopupMenu(HMENU menu) { CheckMenuItem(pvar->hmEncode, ID_MI_USEONESETTING, MF_BYCOMMAND | (pvar->UseOneSetting)?MF_CHECKED:0); } +static const MenuInfo *SearchMenuItem(const MenuInfo *menu_info_ptr, size_t menu_info_count, UINT cmd_id) +{ + size_t i; + for (i = 0; i < menu_info_count; i++) { + if (menu_info_ptr->id == cmd_id) { + return menu_info_ptr; + } + menu_info_ptr++; + } + return NULL; +} /* * This function is called when Tera Term receives a command message. @@ -441,13 +452,18 @@ static int PASCAL TTXProcessCommand(HWND hWin, WORD cmd) { WORD val; if ((cmd >= ID_MI_KANJIRECV) && (cmd < ID_MI_USEONESETTING)) { - MENUITEMINFOW mi = {0}; - mi.cbSize = sizeof(mi); - mi.fMask = MIIM_DATA | MIIM_ID; - BOOL r = GetMenuItemInfoW(pvar->hmEncode, cmd, FALSE, &mi); - assert(r != FALSE); (void)r; - val = (WORD)mi.dwItemData; // j[̊R[h - + /* + * ^Cgo[orj[o[Bă|bvAbvj[ŕ\ĂƂ + * ̊֐R[ꂽƂAj DestroyMenu() ĂB + * ̊֐ł GetMenuItemInfoW() gȂ + */ + const MenuInfo *menu_info_ptr = SearchMenuItem(pvar->menu_info_ptr, pvar->menu_info_count, cmd); + if (menu_info_ptr == NULL) { + // mȂR}h? + assert(FALSE); + return 0; + } + val = (WORD)menu_info_ptr->data; if (cmd < ID_MI_KANJISEND) { if (pvar->UseOneSetting) { // R[h