0

ボタンと編集ボックスを備えたダイアログボックスがあります。
編集コントロールにフォーカスがある場合、タブキーを押すと移動してボタンにフォーカスします。
フォーカスを切り替えずに、編集コントロール内のタブ入力、つまりキーとしての編集ボックスへの入力として機能するように、タブキーが機能するようにしたかったのです。

4

2 に答える 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 に答える