Returnコントロールでキー ( VK_RETURN)を処理するにはどうすればよいCEditですか? コントロールのCEdit親はCDialogです。
18510 次
5 に答える
16
ダイアログの PreTranslateMessage でキーをフィルタリングすることもできます。の場合はWM_KEYDOWN、VK_RETURNに電話してGetFocusください。エディット コントロールにフォーカスがある場合は、エディット コントロールで押されたリターンの処理を呼び出します。
if の句の順序は、効率的であるためにショートサーキットに依存していることに注意してください。
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN &&
pMsg->wParam == VK_RETURN &&
GetFocus() == m_EditControl)
{
// handle return pressed in edit control
return TRUE; // this doesn't need processing anymore
}
return FALSE; // all other cases still need default processing
}
于 2009-02-12T21:08:55.263 に答える
5
正解は、WM_GETDLGCODE / OnGetDlgCodeメッセージを処理することです。そこで、すべてのキーをクラスで処理するように指定できます。
UINT CMyEdit::OnGetDlgCode()
{
return CEdit::OnGetDlgCode() | DLGC_WANTALLKEYS;
}
于 2011-05-17T09:19:16.133 に答える
3
コントロールのダイアログ リソースで Edit Control スタイル ES_WANTRETURN が設定されていることを確認します。
于 2009-02-12T14:58:07.430 に答える