• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Tera Termの個人的な作業用リポジトリ


コミットメタ情報

リビジョン8fd9274020d97c8d36ff51e1a76b0cce77a2e3a9 (tree)
日時2023-03-06 22:31:00
作者zmatsuo <zmatsuo@user...>
コミッターzmatsuo

ログメッセージ

GetMenuStringW() の動的メモリ版追加

- hGetMenuStringW() 追加

- MAX_UIMSG を使わないようにした

git-svn-id: svn+ssh://svn.osdn.net/svnroot/ttssh2/trunk@10630 f5f01b69-1e22-0410-acbf-894ab4bd6246

変更サマリ

差分

--- a/teraterm/common/i18n_static.c
+++ b/teraterm/common/i18n_static.c
@@ -240,9 +240,10 @@ void SetI18nMenuStrsW(HMENU hMenu, const char *section, const DlgTextInfo *infos
240240 else {
241241 if (nIDDlgItem < id_position_threshold) {
242242 // 一度ModifyMenu()しておかないとメニューの位置がずれる
243- wchar_t s[MAX_UIMSG];
244- GetMenuStringW(hMenu, nIDDlgItem, s, _countof(s), MF_BYPOSITION);
243+ wchar_t *s;
244+ hGetMenuStringW(hMenu, nIDDlgItem, MF_BYPOSITION, &s);
245245 ModifyMenuW(hMenu, nIDDlgItem, MF_BYPOSITION, nIDDlgItem, s);
246+ free(s);
246247 }
247248 }
248249 free(uimsg);
--- a/teraterm/common/win32helper.cpp
+++ b/teraterm/common/win32helper.cpp
@@ -309,3 +309,17 @@ finish:
309309 }
310310 return r;
311311 }
312+
313+DWORD hGetMenuStringW(HMENU hMenu, UINT uIDItem, UINT flags, wchar_t **text)
314+{
315+ size_t len = (size_t)GetMenuStringW(hMenu, uIDItem, NULL, 0, flags);
316+ len++;
317+ wchar_t *dest = (wchar_t *)malloc(sizeof(wchar_t) * len);
318+ if (dest == NULL) {
319+ *text = NULL;
320+ return ERROR_NOT_ENOUGH_MEMORY;
321+ }
322+ GetMenuStringW(hMenu, uIDItem, dest, (int)len, flags);
323+ *text = dest;
324+ return NO_ERROR;
325+}
--- a/teraterm/common/win32helper.h
+++ b/teraterm/common/win32helper.h
@@ -48,6 +48,7 @@ DWORD hGetDlgItemTextW(HWND hDlg, int id, wchar_t **text);
4848 DWORD hExpandEnvironmentStringsW(const wchar_t *src, wchar_t **expanded);
4949 LSTATUS hRegQueryValueExW(HKEY hKey, LPCWSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, void **lpData,
5050 LPDWORD lpcbData);
51+DWORD hGetMenuStringW(HMENU hMenu, UINT uIDItem, UINT flags, wchar_t **text);
5152
5253 #ifdef __cplusplus
5354 }