ソフトウェア開発

Q14
ダイアログボックス上にあるエディットボックスコントロールにカーソルを当てた状態で、 Enterキーのキーコードを取得するにはどのようにしたら良いのでしょうか。
A14
Enterキー押下時にはキーコード VK_RETURNが返されます。このキーコードを取得するには、 エディットボックスコントロールをサブクラス化することで可能です。
サブクラス化したウィンドウプロシージャ内で次のようにWM_GETDLGCODEメッセージを取得することで、WM_KEYUPメッセージまたはWM_KEYDOWNメッセージ発生時にEnterキーのキーコードを取得することができます。
例)
WNDPROC Org_WndE;
//サブクラス化されたエディットボックスコントロールのプロシージャ内の処理
LRESULT CALLBACK EditSubProc(HWND hwndE, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg)
{
case WM_GETDLGCODE
return (DLGC_WANTALLKEYS | CallWindowsProc(Org_WndE,hwndE,msg,wp,lp));
}
return (CallWindowProc(Org_WndE,hwndE,msg,wp,lp));
}

また、MFCを使用している場合には、CWnd::PreTranslateMessage関数をオーバーライドを行ない、WM_KEYUPメッセージまたはWM_KEYDOWNメッセージ発生時のキーコードを取得する方法もあります。

アンケートへのご協力をお願いします。

送信