現在の投稿は投稿の続きです ダイアログ ボックス内の編集コントロールとボタンの間でタブ キーを使用してフォーカスを切り替えることを禁止するには? これについては別の投稿が必要だと思ったからです。
その投稿のコメントに従って、編集コントロール内で Tab キーに Tab 文字を入力させました。
EditCode
から派生したクラスを作成しCEdit
、メソッドをオーバーライドしました:
afx_msg UINT OnGetDlgCode()
{
UINT uiCode = CEdit::OnGetDlgCode();
uiCode |= DLGC_WANTTAB;
return uiCode;
}
そして、クラスのメッセージ マップにそれぞれのハンドラー エントリを追加しました。
BEGIN_MESSAGE_MAP(EditCode, CEdit)
ON_WM_GETDLGCODE()
END_MESSAGE_MAP()
また、タイプの変数をEditCode
ダイアログ クラスに追加しましたが、それでも修正できませんでした。
WindowProc
次のようにオーバーライドしようとしました
LRESULT CEditCode:: WindowProc(
UINT message,
WPARAM wParam,
LPARAM lParam
)
{
// TODO: Add your specialized code here and/or call the base class
LRESULT lres;
switch (message) {
case WM_GETDLGCODE:
lres = CEdit::WindowProc(message, wParam, lParam);
lres |= DLGC_WANTTAB;
return lres;
}
return CEdit::WindowProc(message, wParam, lParam);
}
しかし、今まで成功したことはありませんでした。
編集: TabキーにTab文字を入力させることができるようになりました。
(DLGC_WANTCHARS | DLGC_WANTARROWS | DLGC_WANTTAB | DLGC_WANTALLKEYS).
Shift+Tab キーの組み合わせを引き続きナビゲーションに使用したかったので、次のように書きました。
if(GetKeyState(VK_SHIFT) < 0 )
{
return CEdit::WindowProc(message, wParam, lParam);
}
正常に動作していますが、ナビゲーションのために Shift+Tab を押して編集ボックスに戻ると、Tab キーが入力として機能しません。代わりに、コントロール間を移動します。私は混乱しています。