您的位置:首页 > 其它

MFC对话框中按TAB键 实现在指定控件中跳转

2017-03-15 14:37 316 查看

MFC对话框中按TAB键 实现在指定控件中跳转

重载PreTranslateMessage(MSG *pMsg)

MFC Class Wizard ——> Virtual Functions ——-> PreTranslateMessage

捕获TAB键 指定焦点跳转

BOOL CXCYKDlg::PreTranslateMessage(MSG* pMsg)
{
if((pMsg->message == WM_KEYDOWN) && (VK_TAB == (int) pMsg->wParam)
{
CWnd *mwnd =  GetFocus();
if( NULL != mwnd )
{
if(mwnd== GetDlgItem(IDC_AAA))
{
GetDlgItem(IDC_BBB)->SetFocus();
return TRUE;
}
else if(xxxxxxxxxx)
{
GetDlgItem(zzzzzzzz)->SetFocus();
return TRUE;
}
..........
}
}

return CDialog::PreTranslateMessage(pMsg);
}


解决按下TAB ORDER按回车键使下个控件自动获得焦点

1.选中主对话框:Layout菜单=>Tab Order(或者直接按Ctrl+D):按你需要的TAB顺序依次单击控件.

2.按Ctrl+SHIFT+X打开MFC ClassWizard=>Message Maps选项卡:给你的主DLG映射PreTranslateMessage消息处理函数:

BOOL CYourDlg::PreTranslateMessage(MSG* pMsg)

{

// 顺次传递焦点,除非当前焦点在确定按钮上时才响应触发消息

if((pMsg->message == WM_KEYDOWN) && (VK_RETURN == (int) pMsg->wParam))

{

if(GetFocus()->GetDlgCtrlID() != IDOK)

{

pMsg->wParam = VK_TAB;

}

}

return CDialog::PreTranslateMessage(pMsg);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对话框 控件 mfc