问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MFC编辑框:回车得到输入的数据.

发布网友 发布时间:2022-04-26 20:28

我来回答

5个回答

热心网友 时间:2023-10-29 15:31

重载OnOK函数。当在对话框上按回车时,会自动调用OnOK函数。在这个函数内部判断当前焦点控件是不是指定的输入框控件,若是,则调用GetDlgItem获取其内输入的数据。
void CTestDlg::OnOK()
{
// TODO: Add extra validation here
CWnd * pwnd = GetFocus(); /*获得当前焦点窗口指针*/
if ( pwnd == GetDlgItem(IDC_EDIT1) )/*看焦点是不是在指定编辑框上*/
{
UpdateData(TRUE); /*若是,则更新所有数据。*/
CString strEdit1; /*用来保存输入数据的变量。当然可以不要它,而使用对应成员变量来保存数据*/
GetDlgItemText(IDC_EDIT1, strEdit1);/*当然,也可以在这里手动更新成员变量,而其他成员变量的值不变*/
((CEdit *)pwnd)->SetSel(0,-1);/*选中编辑框中所有文字,可选*/
//MessageBox(strEdit1); /*显示输入的信息*/
}
/*若要对其他编辑框进行处理,再模仿上面的if块添加代码即可*/
//CDialog::OnOK(); /*默认的OnOK函数,不再需要*/
}

热心网友 时间:2023-10-29 15:31

PreTranslateMessage
重写对话框的PreTranslateMessage函数,在里面判断是否俺了回车键,如果是的话再判断焦点是不是在编辑框里面,可以用GetFocus 这个函数判断焦点是否在那个编辑框里面
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if (WM_KEYDOWN == pMsg-> message && 13 == pMsg-> wParam)
{
if ( GetDlgItem(IDC_EDIT1) == GetFocus())
{
CString str;
GetDlgItem(IDC_EDIT1)->GetWindowText(str);
MessageBox(str);
return FALSE;
}
else
{
return FALSE;

}

}
return CDialog::PreTranslateMessage(pMsg);
}

热心网友 时间:2023-10-29 15:32

要实现这个必须要派生一个CEdit类
1.Insert->NewClass,这个页面里面的Base class 选CEdit,Name例如写CNewEdit.注意在CNewEdit的cpp文件里包含主Dlg的头文件。
2.在classWizard里面给编辑框关联一个Contrl变量(系统交换数据时会用到)。
3.在CNewEdit里定义一个CString变量m_edit。
4.在CNewEdit增加消息PreTranslateMessage。具体代码如下:
BOOL CNewEdit::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN && (pMsg->wParam>='0' && pMsg->wParam<='9'))
{
m_edit+=pMsg->wParam;
}
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
if(m_edit.GetLength()>0)
MessageBox(m_edit);
return CEdit::PreTranslateMessage(pMsg);
}
这样就符合你的要求了,只有在你加PreTranslateMessage消息的编辑框里输入ENTER建的时候才会响应。

热心网友 时间:2023-10-29 15:33

对话框中
一种实现方法不说其他的了
增加
BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)

{
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
{
m_strstring += "0x0D";//m_strstring 为编辑框对应的cstring类型变量
UpdateData(false);
return true;
}
return CDialog::PreTranslateMessage(pMsg);
}
追问你这样就截取了所有的回车,当焦点不在edit时,按回车也会运行上述函数。

热心网友 时间:2023-10-29 15:33

重载一下CEdit 就行了,从CEdit派生,然后在那个类里写回车处理函数就行了,只有焦点在它的时候才会响应。

热心网友 时间:2023-10-29 15:31

重载OnOK函数。当在对话框上按回车时,会自动调用OnOK函数。在这个函数内部判断当前焦点控件是不是指定的输入框控件,若是,则调用GetDlgItem获取其内输入的数据。
void CTestDlg::OnOK()
{
// TODO: Add extra validation here
CWnd * pwnd = GetFocus(); /*获得当前焦点窗口指针*/
if ( pwnd == GetDlgItem(IDC_EDIT1) )/*看焦点是不是在指定编辑框上*/
{
UpdateData(TRUE); /*若是,则更新所有数据。*/
CString strEdit1; /*用来保存输入数据的变量。当然可以不要它,而使用对应成员变量来保存数据*/
GetDlgItemText(IDC_EDIT1, strEdit1);/*当然,也可以在这里手动更新成员变量,而其他成员变量的值不变*/
((CEdit *)pwnd)->SetSel(0,-1);/*选中编辑框中所有文字,可选*/
//MessageBox(strEdit1); /*显示输入的信息*/
}
/*若要对其他编辑框进行处理,再模仿上面的if块添加代码即可*/
//CDialog::OnOK(); /*默认的OnOK函数,不再需要*/
}

热心网友 时间:2023-10-29 15:32

PreTranslateMessage
重写对话框的PreTranslateMessage函数,在里面判断是否俺了回车键,如果是的话再判断焦点是不是在编辑框里面,可以用GetFocus 这个函数判断焦点是否在那个编辑框里面
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if (WM_KEYDOWN == pMsg-> message && 13 == pMsg-> wParam)
{
if ( GetDlgItem(IDC_EDIT1) == GetFocus())
{
CString str;
GetDlgItem(IDC_EDIT1)->GetWindowText(str);
MessageBox(str);
return FALSE;
}
else
{
return FALSE;

}

}
return CDialog::PreTranslateMessage(pMsg);
}

热心网友 时间:2023-10-29 15:32

要实现这个必须要派生一个CEdit类
1.Insert->NewClass,这个页面里面的Base class 选CEdit,Name例如写CNewEdit.注意在CNewEdit的cpp文件里包含主Dlg的头文件。
2.在classWizard里面给编辑框关联一个Contrl变量(系统交换数据时会用到)。
3.在CNewEdit里定义一个CString变量m_edit。
4.在CNewEdit增加消息PreTranslateMessage。具体代码如下:
BOOL CNewEdit::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN && (pMsg->wParam>='0' && pMsg->wParam<='9'))
{
m_edit+=pMsg->wParam;
}
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
if(m_edit.GetLength()>0)
MessageBox(m_edit);
return CEdit::PreTranslateMessage(pMsg);
}
这样就符合你的要求了,只有在你加PreTranslateMessage消息的编辑框里输入ENTER建的时候才会响应。

热心网友 时间:2023-10-29 15:33

对话框中
一种实现方法不说其他的了
增加
BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)

{
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
{
m_strstring += "0x0D";//m_strstring 为编辑框对应的cstring类型变量
UpdateData(false);
return true;
}
return CDialog::PreTranslateMessage(pMsg);
}
追问你这样就截取了所有的回车,当焦点不在edit时,按回车也会运行上述函数。

热心网友 时间:2023-10-29 15:33

重载一下CEdit 就行了,从CEdit派生,然后在那个类里写回车处理函数就行了,只有焦点在它的时候才会响应。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
艾芙洛洗发水为什么不在商场销售商 艾芙洛洗发水是英国的吗 毕业生刚刚签了三方协议,想毁,怎么办 适合夫妻干的生意有哪些 新生蜜蜂多久出巢试飞 新生蜜蜂什么时候进行首次试飞? 蜜蜂几月几日出生外貌和颜色? 当脚模一定要脚趾修长吗 脚长成这样,能当脚膜吗 固话遇忙记存呼叫业务有什么特点? 什么是固话遇忙记存呼叫业务? MFC中在编辑框中按下回车键是什么事件? MFC中编辑框中输入内容,然后怎么样实现按下回车键结束输入,并将输入的内容保存到 数组中, vcMFC基本对话框 的编辑框如何实现换行?(编辑框属性已经为多行显示... MFC中如何让字符在编辑框中回车 苹果电脑用什么做表格 电脑中怎样把表格样式设置为浅色网格 哪种菌菇最适合煲汤,滋补养生延年益寿? 苹果电脑表格怎么调格式 用多种菌类怎样煲汤好喝 求助!MacBook版的PowerPoint没有网格线选项 Mac 中如何使网格间距统一? 如何更改mac os系统中的网格间距 哪种菌类煮汤最鲜美 苹果电脑exce表格怎么添加单元格 2018故宫门票可以当日在窗口买吗? 北京故宫 如果在网络上预定票 想换成纸质的留个纪念 想问问预售票换票和现场买票是一个窗口么 急!!急! 故宫门票预定问题? 故宫门票官网预订只有户口本怎么办?买完了怎么进故宫呢?谢谢了 故宫门票预约官网能替朋友办吗 北京故宫网上订票怎么拿到票啊? MFC怎样实现按回车键相当于点击指定按钮 基于VS2010的MFC中,我想在编辑框中实现enter换行(这个容易)和‘q’+enter作为结束并发送消息。 MFC Edit控件内响应回车键的问题 mfc中如何用SetDlgItemText函数在编辑框内添加一个回车? MFC编辑框中光标问题 mfc 编辑框 光标 vc6.0mfc怎么让编辑框里默认显示光标 vc++ mfc如何在文本框内容改变之前移动光标位置? MFC 如何用2个按钮分别实现 编辑框中的光标向上移动一行和向下移动一行 MFC怎么实现光标移动到某一区域,改变光标形态? MFC静态编辑框输出如何换行? MFC里的文本编辑框,怎么把光标始终定位到字符串最后??? MFC中如何给编辑框设置文本内容? mfc串口收发数据。编辑框希望每接收一次就换行。怎么实现。我的换行结果不对 水银温度计不想要了,想把它扔了!我该扔哪里最好! 体温计掉到地上是放到真空玻璃瓶还是塑料袋里? 温度计碎了后,但水银没有掉出来,要扔哪里啊? 水银温度计可以直接扔掉吗 不用的体温计如何处理? 温度计扔垃圾桶违法吗