VC如何实现用ENTER键来切换焦点???
如题...小鸟求大鸟们的详细讲解!!
[解决办法]
接受到ENTER消息后发出TAB消息
[解决办法]
CWnd* SetFocus( );
[解决办法]
响应键盘消息
再SetFocus()
[解决办法]
我想楼主是想输入完毕按下ENTER自动跳到下个输入区域
[解决办法]
需要ENTER消息转TAB消息的窗口应该是很明确的吧~~~
[解决办法]
不过话说过来,也不是不能实现。
在PreTranslateMessage中处理一下应该是可以做到的。
[解决办法]
OnOk函数里
GetNextDlgTabItem(GetFocus())->SetFocus();
[解决办法]
在PreTranslateMessage()加入以下代码:
if (pMsg->message == WM_KEYDOWN)
{
if ((TCHAR)pMsg->wParam == VK_RETURN)
{
CString m_szStr;
int nCount = MAX_PATH;
CWnd* pWnd = (CWnd*)pDlg->GetFocus();
nCount = GetClassName(::GetFocus(),m_szStr.GetBuffer(MAX_PATH),nCount);
m_szStr.ReleaseBuffer();
m_szStr.MakeUpper();
if (m_szStr != _T("BUTTON"))
{
if (::IsWindow(pMsg->hwnd))
{
pDlg->NextDlgCtrl();
pWnd = (CWnd*)pDlg->GetFocus();
if (pWnd->IsKindOf(RUNTIME_CLASS(CEdit)))
{
CEdit* pEdit =(CEdit*)pWnd;
pEdit->SetSel(0,1024);
if (pEdit->IsWindowEnabled())
{
pEdit->SetFocus();
}
}
}
}
}
[解决办法]
最简单的方法:(对话框应用)
1. 重载OnOK()(在OK按钮上双击)
2. 函数内只需用这一句:NextDlgCtrl();
3. 删除“CDialog::OnOK();”
[解决办法]
GetNextDlgTabItem(GetFocus())-> SetFocus();