在CDialog中改变Tab键顺序可以使直接在向导中直接修改(静态创建),也可以在创建控件的时候指定其WS_TABSTOP属性,TAB顺序就是按照你创建的先后顺序来指定的;
但是在CWnd类中通过修改其WS_TABSTOP属性就不能实现了,还需要在PreTranslateMessage(MSG* pMsg) 响应其tab键然后设置SetFocus来实现:
BOOL CChildView::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if(pMsg->message == WM_LBUTTONDOWN)
{
TRACE(_T("WM_LBUTTONDOWN"));
}
if (pMsg-> message == WM_KEYDOWN)
{
if( pMsg-> wParam == VK_TAB)
{
CWnd* pWndNext = GetNextDlgTabItem(GetFocus());
if (pWndNext)
{
pWndNext-> SetFocus();
}
return TRUE;
}
else
{
return CWnd::PreTranslateMessage(pMsg);
}
}
else
{
return CWnd::PreTranslateMessage(pMsg);
}
}
本文详细介绍了在CDialog中如何通过静态创建或WS_TABSTOP属性来改变Tab键顺序,而在CWnd类中则需要通过预处理消息(PreTranslateMessage)来实现Tab键顺序的调整。
907

被折叠的 条评论
为什么被折叠?



