首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

有5个文本框,要实现在各个文本框中按下回车键时,焦点能自动移到下一个文本框,该如何解决

2012-02-17 
有5个文本框,要实现在各个文本框中按下回车键时,焦点能自动移到下一个文本框首先,我用的是对话框,里面有5

有5个文本框,要实现在各个文本框中按下回车键时,焦点能自动移到下一个文本框
首先,我用的是对话框,里面有5个文本框,要实现在各个文本框中按下回车键时,焦点能自动移到下一个文本框,

[解决办法]
移动光标用SetSel

捕获回车消息用PreTranslateMessage
[解决办法]
重载PreTranslateMessage在前面加上。

if(pMsg-> message == WM_KEYDOWN)
{
CRect r;
::GetWindowRect(GetDlgItem(IDC_EDIT1)-> m_hWnd,&r);
if(r.PtInRect(pMsg-> pt))//确定消息是否在你的edit中
{
if(pMsg-> wParam == VK_RETURN)
{
//这里就是你按回车响应的地方了,直接返回,阻断消息就可以了。
//SetSel
return 1;
}
}
}


[解决办法]
在PreTranslateMessage 或OnOK响应动作

移到下一个文本框,可以
1.SetFocus
2.模拟按键Tab
3.VC自己有个函数相当于按Tab(焦点到下一个控件), 函数名忘了
[解决办法]
楼上的说的差不多了,自己调试下就可以了
[解决办法]
BOOL CDlgCenterInfo::PreTranslateMessage(MSG* pMsg)
{

if(pMsg-> message ==WM_KEYDOWN)
{
if(pMsg-> wParam == VK_RETURN)
{
int nID = GetFocus()-> GetDlgCtrlID();
switch(nID){
case IDC_EDIT_NOTECODE:
m_edtNoteName.SetFocus();
m_edtNoteName.SetSel(0,-1);
break;
case IDC_EDIT_NOTENAME:
m_edtNoteType.SetFocus();
m_edtNoteType.SetSel(0,-1);
break;
default :
NextDlgCtrl();
}
return TRUE;
}



}
return CWBBasicDlg::PreTranslateMessage(pMsg);
}
[解决办法]
自己程序例子,楼主可以直接仿用。

热点排行