ボタンと編集ボックスを備えたダイアログボックスがあります。
編集コントロールにフォーカスがある場合、タブキーを押すと移動してボタンにフォーカスします。
フォーカスを切り替えずに、編集コントロール内のタブ入力、つまりキーとしての編集ボックスへの入力として機能するように、タブキーが機能するようにしたかったのです。
1752 次
2 に答える
-1
次のように、ダイアログでPreTranslateMessage関数をオーバーライドします。
BOOL CTestThreadDlg::PreTranslateMessage( MSG* pMsg )
{
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_TAB)
{
CWnd* pFocusWnd = GetFocus( );
if (pFocusWnd != NULL && pFocusWnd->GetDlgCtrlID() == IDC_EDIT2)
{
CEdit *pEditCtrl = (CEdit *)pFocusWnd ;
int start, end ;
pEditCtrl->GetSel(start, end) ;
CString str ;
pEditCtrl->GetWindowText(str) ;
str = str.Left(start) + _T("\t") + str.Mid(end) ;
pEditCtrl->SetWindowText(str) ;
pEditCtrl->SetSel(start + 1, start + 1) ;
}
return TRUE ;
}
return CDialog::PreTranslateMessage(pMsg) ;
}
この例では、フォーカスが IDC_EDIT2 エディット コントロールにあるかどうかを確認します。おそらく、これを状況に合わせて調整する必要があります。
于 2013-08-26T13:03:21.700 に答える