mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-16 05:26:43 +00:00
In Windows, the leading byte for multibyte characters are set to upper
byte. If single byte character is used, the upper byte is set to 0.
This commit is contained in:
parent
b9e56b9b99
commit
c91d9f0c90
|
@ -772,7 +772,8 @@ static LRESULT WINAPI EditWndProc_common( HWND hwnd, UINT msg,
|
||||||
|
|
||||||
strng[0] = wParam >> 8;
|
strng[0] = wParam >> 8;
|
||||||
strng[1] = wParam & 0xff;
|
strng[1] = wParam & 0xff;
|
||||||
MultiByteToWideChar(CP_ACP, 0, strng, 2, &charW, 1);
|
if (strng[0]) MultiByteToWideChar(CP_ACP, 0, strng, 2, &charW, 1);
|
||||||
|
else MultiByteToWideChar(CP_ACP, 0, &strng[1], 1, &charW, 1);
|
||||||
EDIT_WM_Char(es, charW);
|
EDIT_WM_Char(es, charW);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -347,7 +347,8 @@ static WPARAM map_wparam_AtoW( UINT message, WPARAM wparam )
|
||||||
WCHAR wch;
|
WCHAR wch;
|
||||||
ch[0] = (wparam >> 8);
|
ch[0] = (wparam >> 8);
|
||||||
ch[1] = (wparam & 0xff);
|
ch[1] = (wparam & 0xff);
|
||||||
MultiByteToWideChar(CP_ACP, 0, ch, 2, &wch, 1);
|
if (ch[0]) MultiByteToWideChar(CP_ACP, 0, ch, 2, &wch, 1);
|
||||||
|
else MultiByteToWideChar(CP_ACP, 0, &ch[1], 1, &wch, 1);
|
||||||
wparam = MAKEWPARAM( wch, HIWORD(wparam) );
|
wparam = MAKEWPARAM( wch, HIWORD(wparam) );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -384,9 +385,10 @@ static WPARAM map_wparam_WtoA( UINT message, WPARAM wparam )
|
||||||
WCHAR wch = LOWORD(wparam);
|
WCHAR wch = LOWORD(wparam);
|
||||||
BYTE ch[2];
|
BYTE ch[2];
|
||||||
|
|
||||||
ch[1] = 0;
|
if (WideCharToMultiByte( CP_ACP, 0, &wch, 1, ch, 2, NULL, NULL ) == 2)
|
||||||
WideCharToMultiByte( CP_ACP, 0, &wch, 1, ch, 2, NULL, NULL );
|
wparam = MAKEWPARAM( (ch[0] << 8) | ch[1], HIWORD(wparam) );
|
||||||
wparam = MAKEWPARAM( (ch[0] << 8) | ch[1], HIWORD(wparam) );
|
else
|
||||||
|
wparam = MAKEWPARAM( ch[0], HIWORD(wparam) );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -871,9 +871,9 @@ LRESULT WINAPI DefWindowProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
|
||||||
CHAR chChar1 = (CHAR)( (wParam>>8) & 0xff );
|
CHAR chChar1 = (CHAR)( (wParam>>8) & 0xff );
|
||||||
CHAR chChar2 = (CHAR)( wParam & 0xff );
|
CHAR chChar2 = (CHAR)( wParam & 0xff );
|
||||||
|
|
||||||
SendMessageA( hwnd, WM_CHAR, (WPARAM)chChar1, lParam );
|
if (chChar1)
|
||||||
if ( IsDBCSLeadByte( chChar1 ) )
|
SendMessageA( hwnd, WM_CHAR, (WPARAM)chChar1, lParam );
|
||||||
SendMessageA( hwnd, WM_CHAR, (WPARAM)chChar2, lParam );
|
SendMessageA( hwnd, WM_CHAR, (WPARAM)chChar2, lParam );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WM_IME_KEYDOWN:
|
case WM_IME_KEYDOWN:
|
||||||
|
|
|
@ -797,7 +797,10 @@ INT WINPROC_MapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM *pwparam, LPARAM *plpara
|
||||||
WCHAR wch;
|
WCHAR wch;
|
||||||
ch[0] = (*pwparam >> 8);
|
ch[0] = (*pwparam >> 8);
|
||||||
ch[1] = *pwparam & 0xff;
|
ch[1] = *pwparam & 0xff;
|
||||||
MultiByteToWideChar(CP_ACP, 0, ch, 2, &wch, 1);
|
if (ch[0])
|
||||||
|
MultiByteToWideChar(CP_ACP, 0, ch, 2, &wch, 1);
|
||||||
|
else
|
||||||
|
MultiByteToWideChar(CP_ACP, 0, &ch[1], 1, &wch, 1);
|
||||||
*pwparam = MAKEWPARAM( wch, HIWORD(*pwparam) );
|
*pwparam = MAKEWPARAM( wch, HIWORD(*pwparam) );
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1092,9 +1095,10 @@ INT WINPROC_MapMsg32WTo32A( HWND hwnd, UINT msg, WPARAM *pwparam, LPARAM *plpara
|
||||||
WCHAR wch = LOWORD(*pwparam);
|
WCHAR wch = LOWORD(*pwparam);
|
||||||
BYTE ch[2];
|
BYTE ch[2];
|
||||||
|
|
||||||
ch[1] = 0;
|
if (WideCharToMultiByte( CP_ACP, 0, &wch, 1, ch, 2, NULL, NULL ) == 2)
|
||||||
WideCharToMultiByte( CP_ACP, 0, &wch, 1, ch, 2, NULL, NULL );
|
*pwparam = MAKEWPARAM( (ch[0] << 8) | ch[1], HIWORD(*pwparam) );
|
||||||
*pwparam = MAKEWPARAM( (ch[0] << 8) | ch[1], HIWORD(*pwparam) );
|
else
|
||||||
|
*pwparam = MAKEWPARAM( ch[0], HIWORD(*pwparam) );
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue