一个窗口内建立几个Edit窗口(CEdit的派生内),我想让按下回车键后让焦点自动移到下 一个窗口内建立几个Edit窗口(CEdit的派生类),我想让按下回车键后让焦点自动移到下一个编缉框,我重载了OnChar,OnKeyDown,OnKeyUp对其进行处理,可是不知为什么,英文输入时按我期望的运行了,但当打开中文输入法时,就不行了!我在一个类中定义了几个Edit变量,并定义了相应的字串变量,当某编辑框失去焦点时,向该类的父窗口发送一个消息通知变量存贮CEdit的文字进相应变量中!高手告诉我这是为什么呀? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 输入法是智能ABC?在多按一次回车试试? 按下回车键后让焦点自动移到下一个编缉框——通用的方法是这样实现:1,重载PreTranslateMessage,处理回车消息BOOL CTestForm::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_KEYDOWN) // WM_KEYUP if (pMsg->wParam == VK_RETURN) { OnEnterSetFocus(); return TRUE; } return CTestForm::PreTranslateMessage(pMsg);}2,实现回车时焦点转移到下一个EDIT控件。void CTestForm::OnEnterSetFocus(){ CWnd *pCtrl = CWnd::GetFocus(); if (pCtrl->m_hWnd == m_hWnd) { pCtrl = NULL; } CWnd *pNext = GetNextDlgTabItem(pCtrl);//要求编缉框的TAB顺序是连续的 if (pNext != NULL) { //int nID = pNext->GetDlgCtrlID(); //TRACE2("This: %d -> Next: %d\n", pCtrl->GetDlgCtrlID(), nID); if(pNext->IsKindOf(RUNTIME_CLASS(CEdit))) pNext->SetFocus(); }}如果EDIT控件的TAB顺序不是连续的,就稍麻烦一点,用一个循环,直到找到下一个EDIT控件为止. BOOL CTestForm::PreTranslateMessage(MSG* pMsg) { if (pMsg->wParam == VK_RETURN) { GetNextDlgTabItem(GetFocus())->SetFocus(); return TRUE; } return CTestForm::PreTranslateMessage(pMsg);} 菜鸟弱弱的问一下 关于父进程与子进程的通讯 SubclassDlgItem和用ClassWizard追加成普通类的成员变量再在头文件中修改类名有什么区别? 关于CLIST类中AddTail的问题。 vc的try,catch,finally 怎么写?可以举个例子吗? 关于Socket问题请教 那们好心人,给我点可用分吧。 C++好难学!!!!!!!!!!!!!!! 请教拉普拉斯逆变换 请教关于如何使用状态条的一个小问题 EnumDesktopWindows函数获取桌面窗口标题时遇到错误! 问个SOCK5的问题
在多按一次回车试试?
——通用的方法是这样实现:1,重载PreTranslateMessage,处理回车消息
BOOL CTestForm::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN) // WM_KEYUP
if (pMsg->wParam == VK_RETURN)
{
OnEnterSetFocus();
return TRUE;
}
return CTestForm::PreTranslateMessage(pMsg);
}2,实现回车时焦点转移到下一个EDIT控件。
void CTestForm::OnEnterSetFocus()
{
CWnd *pCtrl = CWnd::GetFocus();
if (pCtrl->m_hWnd == m_hWnd)
{
pCtrl = NULL;
} CWnd *pNext = GetNextDlgTabItem(pCtrl);//要求编缉框的TAB顺序是连续的
if (pNext != NULL)
{
//int nID = pNext->GetDlgCtrlID();
//TRACE2("This: %d -> Next: %d\n", pCtrl->GetDlgCtrlID(), nID); if(pNext->IsKindOf(RUNTIME_CLASS(CEdit)))
pNext->SetFocus();
}
}
如果EDIT控件的TAB顺序不是连续的,就稍麻烦一点,用一个循环,直到找到下一个EDIT控件为止.
{
if (pMsg->wParam == VK_RETURN)
{
GetNextDlgTabItem(GetFocus())->SetFocus();
return TRUE;
}
return CTestForm::PreTranslateMessage(pMsg);
}