[Ttssh2-commit] [9142] SetEditboxEmacsKeybind() で文字化けすることがあったので修正

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2021年 1月 30日 (土) 00:35:22 JST


Revision: 9142
          https://osdn.net/projects/ttssh2/scm/svn/commits/9142
Author:   zmatsuo
Date:     2021-01-30 00:35:22 +0900 (Sat, 30 Jan 2021)
Log Message:
-----------
SetEditboxEmacsKeybind() で文字化けすることがあったので修正

- 非9x系で(NT系)OSで、ANSI APIのみを使用すると文字化けが発生していた
  - 実際の使用時はUnicode APIを使用するので発生しない
  - NT系上で9x向け(ANSI APIのみ使用)テストを行っているときに発生する
    - compat_win.cpp で UNICODE_API_DISABLE を define してビルド
- GetWindowLongPtrW(GWLP_WNDPROC) で取得したアドレスをセット(使用)すると発生
- OS内部で UNICODE Window と誤って認識されるようだ
- _GetWindowLongPtrW() を使用するよう修正
  - この関数内部で GetWindowLongPtrA,W() を自動で切り替え

Modified Paths:
--------------
    trunk/teraterm/common/dlglib.c

-------------- next part --------------
Modified: trunk/teraterm/common/dlglib.c
===================================================================
--- trunk/teraterm/common/dlglib.c	2021-01-29 15:35:06 UTC (rev 9141)
+++ trunk/teraterm/common/dlglib.c	2021-01-29 15:35:22 UTC (rev 9142)
@@ -434,7 +434,7 @@
 		IsCombobox = TRUE;
 	}
 	data = (EditSubclassData *)malloc(sizeof(EditSubclassData));
-	data->OrigProc = (WNDPROC)GetWindowLongPtrW(hWndEdit, GWLP_WNDPROC);
+	data->OrigProc = (WNDPROC)_GetWindowLongPtrW(hWndEdit, GWLP_WNDPROC);
 	data->OrigUser = (LONG_PTR)GetWindowLongPtr(hWndEdit, GWLP_USERDATA);
 	data->IsComboBox = IsCombobox;
 	_SetWindowLongPtrW(hWndEdit, GWLP_WNDPROC, (LONG_PTR)HostnameEditProc);


Ttssh2-commit メーリングリストの案内
Back to archive index