如果希望鍵盤左右鍵不會影響對話框中按鈕的焦點,則可以將這些按鈕設置為Group屬性。
F1鍵屏蔽:
- void MainApp::WinHelp( DWORD dwData, UINT nCmd ){
別忘了在頭文件的相應地方加上virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
或者
- BEGIN_MESSAGE_MAP(ChildApp, CWinApp)
-
- END_MESSAGE_MAP()
按空格是相當于在對話框中執(zhí)行焦點所在按鈕的操作。
如果想設置按空格執(zhí)行的按鈕,如下
- BOOL CChildDialog::OnInitDialog()
- {
- m_pButton->SetFocus();
- return FALSE;
- }
別忘了在頭文件中加入virtual BOOL OnInitDialog();
有些對話框要屏蔽Enter和ESC。一般Enter對應OnOK(),ESC對應OnCancel()。因此解決方法是:
1 重寫OnOK()和OnCancel()函數(shù)。使其不返回IDOK等值。
2 截獲消息,代碼如下:
- BOOL CChildDialog::PreTranslateMessage(MSG* pMsg){
- if(WM_KEYDOWN == pMsg->message )
- {
- UINT nKey = (int) pMsg->wParam;
- if( VK_RETURN == nKey ) return TRUE ;
- }
- return TypeBaseClass::PreTranslateMessage(pMsg);
- }
別忘了在頭文件里加入afx_msg BOOL PreTranslateMessage(MSG* pMsg);
用戶一般喜歡擊Enter而不是空格,對于用戶想擊Enter而執(zhí)行的按鈕,可以設置如下。
- BOOL CChildDialog::OnInitDialog()
- {
- SetDefID(IDC_BUTTONID);
- return TRUE;
- }