Google IMEとMS IMEの挙動の違い – プログラミング – Home

通知
すべてクリア

[解決済] Google IMEとMS IMEの挙動の違い


you
 you
(@you)
ゲスト
結合: 23年前
投稿: 41
Topic starter  

テキストエディタコントロールの自作を試しています。
今回は、変換ウィンドウの位置について質問させて頂きます。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
HIMC hImc;
switch (message)
{
case WM_IME_STARTCOMPOSITION:
hImc = 0;
hImc = ImmGetContext(hWnd); // 入力コンテキスト
のハンドルを得る
if (hImc != 0)
{
POINT pa;
pa.x =10;
pa.y =10;
COMPOSITIONFORM cf;
cf.dwStyle = CFS_POINT;
cf.ptCurrentPos = pa;

SetRect(&(cf.rcArea),0,0,0,0);
ImmSetCompositionWindow(hImc,&cf);
}
ImmReleaseContext(hWnd, hImc); // 入力コンテキス
トのハンドルを開放する

break;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 選択されたメニューの解析:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd,
About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 描画コードをここに追加してください...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

このプロシージャでウィンドウを動作させる時、
Google IMEなら10,10のところで変換が行われるのですが、
Office IMEは変換が行われません

TSFとIMM32の違いだというのはわかるのですが、
Office IMEをIMM32関数で扱う方法をご存知でしょうか?


引用未解決
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

気がついた点だけ。

1.ImmSetCompositionWindow()の戻り値を評価していませんが、
 0が戻った場合は失敗してます。

2.WM_IME_STARTCOMPOSITIONメッセージは、システムが処理すべき
 内容を含んでいると考えられます。このメッセージを処理する
 コールバックは、システムにその機会を与えるべきです。つまり、
 return DefWindowProc( WM_IME_STARTCOMPOSITION, wParam, lParam);
 すべきだと考えられます。(実際には戻り値は不要)
 詳しくはWM_IME_STARTCOMPOSITIONの説明を参照してください。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

うーーん、
Office IME = Microsoft Office IMEとしますと、
Microsoft Officeは、バージヨンによって操作方法が変わります。
バージョンによって仕様が大幅に違う場合もあったかに思います。
>Office IMEをIMM32関数で扱う方法をご存知でしょうか?
 IMM32関数で扱う前にOffice IMEに何か設定しなければいけないことがありそうに
思います。


返信引用
You
 You
(@You)
ゲスト
結合: 23年前
投稿: 41
 

失業者さん
2の通りで、defwndprocを通すと解決しました
ありがとうございます
ITOさん、どうやら私の勘違いだったようです。実際はIME関数で扱えました。

ありがとうございました


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました