コントロールでのフォーカスの取得
WNDOWSXP + VC++2010Express + SDKです。VC++ExpressなのでMFCなどは使えません。
ウィンドウのフォーカスの取得方法について質問します。
メインウィンドウにコントロールを3つ貼り付けます。
エディットコントロール2つと、自分で作成したコントロールが1つです。
自分で作成したコントロールのウィンドウプロシージャは仮に↓こんなものだとします。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if(message==WM_KEYDOWN)
{
if(wParam=='A'){
MessageBox(NULL,_T("A"),_T("KEYDOWN"),NULL);
}
return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
プログラムを起動し、エディットコントロールAをクリックすると
エディットコントロールAにフォーカスが移動します。
キーボードのAボタンを押下すると、エディットコントロールAに「a」と入力されます。
エディットコントロールB、自分で作成したコントロールは無反応です。
エディットコントロールBをクリックすると、エディットコントロールBにフォーカスが移動します。
キーボードのAボタンを押下すると、エディットコントロールBに「a」と入力されます。
エディットコントロールA、自分で作成したコントロールは無反応です。
次に、自分で作成したコントロールをクリックした場合、
フォーカスはエディットコントロールBにあります。キーイベントなども
エディットコントロールBのみが反応します。
ここで、自分で作成したコントロールをクリックした場合に
自分で作成したコントロールがフォーカスを取得し、
キーイベントなどを独占的に受け取れるようにしたいのですが、方法がわかりません。
どなたか方法をご存知の方がいらっしゃいましたら、ご教授いただけないでしょうか。
お礼
taka_tetsu 様 お世話になります。 できました! 標準コントロールによくあるTabStopプロパティは無いし、 EnterFocusイベントやGotFocusイベント内でSendKeys "{TAB}"なんてやってもダメだし、 途方にくれておりました。 ありがとうございました!