Winapi 在什么情况下,编辑控件将MBCS视为UNICODE?

Winapi 在什么情况下,编辑控件将MBCS视为UNICODE?,winapi,mfc,mbcs,Winapi,Mfc,Mbcs,我正在使用MBCS维护一个大型遗留应用程序构建 在以日语作为系统区域设置、以英语作为UI区域设置的Windows 7系统上,我遇到了一个问题,即编辑控件的选择位置返回错误。我在日本安装的XP和Windows7上进行了测试,结果相同 [代码片段] CEdit* pEdit = state->GetEdit() ; auto hWnd = pEdit->GetSafeHwnd() ; if ( hWnd ) { ::SendMessageA(hWnd, EM_GETSE

我正在使用MBCS维护一个大型遗留应用程序构建

在以日语作为系统区域设置、以英语作为UI区域设置的Windows 7系统上,我遇到了一个问题,即编辑控件的选择位置返回错误。我在日本安装的XP和Windows7上进行了测试,结果相同

[代码片段]

CEdit* pEdit = state->GetEdit() ; 

auto hWnd = pEdit->GetSafeHwnd() ; 
if ( hWnd ) 
{ 
    ::SendMessageA(hWnd, EM_GETSEL, (WPARAM)&nStart, (LPARAM)&nEnd) ;

    TCHAR buffer[128]; 
    ::SendMessageA(hWnd, WM_GETTEXT, (WPARAM)_countof(buffer), (LPARAM)&buffer); 

    _RPT4(_CRT_WARN, 
          "String '%s' selection [%d,%d], unicode? %s", 
          buffer, 
          nStart, 
          nEnd, 
         (::IsWindowUnicode(hWnd)) ? "True" : "False"); 

[/codesnippet] 
当克拉位于字符串末尾时,这将生成输出

字符串'未定義' 选择[3,3],unicode?假的

到底发生了什么事?我已经构建了一个小的测试应用程序,它的工作原理与我期望的输出一样

字符串'未定義' 选择[6,6],unicode?假的


它是一个MBCS构建,大小为
sizeof(TCHAR)==1
,我无法切换到UNICODE,因为它是一个遗留应用程序。

您确定它实际上是一个编辑控件,而不是一个丰富的编辑控件或更奇特的东西吗?