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