HWND hWndMain, hWndClient; // メインウィンドウとMDIクライアント
MSG msg;
HACCEL hAccelTable;
/* snip */
while( GetMessage(&msg, NULL, 0, 0) ){
if( TranslateMDISysAccel( hWndClient, &msg ) != FALSE ){
continue;
}
if( TranslateAccelerator( hWndMain, hAccelTable, &msg) == FALSE ){
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
MSG msg;
HACCEL hAccelTable;
/* snip */
while( GetMessage(&msg, NULL, 0, 0) ){
if( TranslateMDISysAccel( hWndClient, &msg ) != FALSE ){
continue;
}
if( TranslateAccelerator( hWndMain, hAccelTable, &msg) == FALSE ){
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
上述は動くことを確認したコードなんですが、ウィザードが吐くTranslateAcceleratorの第一引数はmsg.hwndです。
msgの内容はGetMessageによって変わるので、msg.hwndがhWndMainである保障はありません。
通常、アクセラレータを受け取るのはメニューを持った親ウィンドウだけなので、つまづかないんですが・・・ハマってしまいましたorz
0 件のコメント:
コメントを投稿