VS2008, MFC 编程 对话框 笔记3 - 实现回车键 在Edit Control控件 输入焦点切换(此方法比较麻烦)

MFC EditCtrl响应回车按键事件 阅读详情

1. 一般情况,当按回车键 会触发default按键,而一般来讲是 确定 按钮 ,此时会程序会退出,原因是 确定 按钮 的Defalut Button属性 设为true,过程中调用了基类的OnOK函数:

2. 在新建的Dialog类中,增加 Windows 消息处理INITDIALOG,但是不太一样的是 要在重写里面添加

3. 用来转移焦点的Edit control控件的属性 Multiline 设为True

4.双击 资源视图 dialog的 确定 按钮 实现一个OnBnClickedOK() 响应函数。相关代码:

WNDPROC prevProc;//新建一个窗口过程类型
LRESULT CALLBACK WinTstProc(
	HWND hwnd,     //handle to window
	UINT uMsg,     //message identifier
	WPARAM wParam, //first message parameter
	LPARAM lParam  //second message parameter
							)//窗口过程函数原型
{
	if(uMsg == WM_CHAR && wParam == 0x0d)//如果是回车键,
	{
		//把编辑焦点传到下一个控件
        //本函数是全局函数,只能使用平台SDK来进行
		//::SetFocus(::GetNextWindow(hwnd,GW_HWNDNEXT));//方式1,GW_HWNDNEXT Returns a handle to the window below the given window
		//::SetFocus(::GetWindow(hwnd,GW_HWNDNEXT));//方式2,使用平台GetWindow
		::GetNextDlgTabItem(::GetParent(hwnd)/*获取对话框句柄*/,hwnd,FALSE);//需要Edit control 属性Tapstop 为True
		::SetFocus(::GetNextDlgTabItem(::GetParent(hwnd),hwnd,FALSE));

	}
	else
	{
		//让先前的窗口去处理
		return prevProc(hwnd,uMsg,wParam,lParam);
	}

}
BOOL CtestDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// TODO:  在此添加额外的初始化
	//要改变编辑框的窗口过程,需要在MainFrame OnCreate执行之后,所以要在OnInitDialog 这里进行
		//第一个参数是窗口句柄, 中间是索引值参考MSDN进行设置,最后一个参数是窗口过程函数名。
	prevProc = (WNDPROC)SetWindowLong(GetDlgItem(IDC_EDIT1)->m_hWnd,GWL_WNDPROC,(LONG)WinTstProc);



	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}

MSDN 文件 链接:https://pan.baidu.com/s/1UPpu61qQMQGk4kLjYl5WbQ 
提取码:a620

 

MFC控件开发实战:从基础原理到高级应用与避坑指南 Windows GUI编程是桌面应用开发的基础,其核心在于理解消息循环与控件机制。MFC(Microsoft Foundation Classes)作为经典的C++框架,通过封装Win32 API,提供了面向对象的控件编程模型,如CButton、CEdit、CListCtrl等,实现了高效的原生界面开发。其技术价值在于直接基于Windows消息驱动,无需额外运行时依赖,生成的程序体积小、启动快、资源消耗低,特别适合对性能和稳定性要求严苛的场景,如工业控制、金融终端及遗留系统维护。在应用层面,掌握控件的动态创 阅读详情

相关推荐

MFC中Enter键设置为“确定”的功能

在新建的MFC对话框中,按下回车时,系统会调用”默认“事件处理函数,也就是OnOK(),倘若你自己的CFormView子类或者CDialog子类没有重写OnOK()函数,则会调用父类的OnOK,其结果是关闭界面。要屏蔽Enter键退出的功能,只需要将在CDialog中重写ONOK()函数即可。而要实现默认为“确定”功能,下面两种方法供参考: 1.采用ClassWizard进行实现

那片宁静的港湾 3175

MFC Edit控件之enter回车捕捉

MFC Edit控件之enter回车捕捉:http://blog.csdn.net/cracent/article/details/50986365

回车键实现MFC对话框中TAB键控制输入焦点控件中跳转的效果

          近日在为一个数据应用写数据输入界面,大量的编辑框要想实现快速的输入就是有设计良好的符合工作流程的TAB键序。相信,不少的人在使用具有大量编辑框的程序时都有这样的想法和感概。而我这个对话框界面主要输入的是数字,因此如果使用TAB键作编辑框之间的跳转会在使用数字键盘时不方便。因此,就考虑了用回车键实现TAB键的功能。因为MFC对话框的特点,基于MFC对话框对话框按下回车键会调用

一点一滴的积累 3517

回车到下一个编辑框 MFC

1.ctrl+D设置tab顺序 2.在Dlg中加一个按钮IDOK(若)

sun1943shine的专栏 791

MFC对话框使用回车键实现像TAB键一样跳转输入焦点

在一个MFC界面中完成大量散乱数据的输入操作,包含很多的EDIT控件。当使用数字键输入时,用TAB进行焦点控制颇为不便,考虑使用回车键。具体分两步实现:1、将各控件的TAB顺序调整好。使用Ctrl+D,从自己认为Tab顺序应该为1的控件开始依次单击,即可实现响应顺序的设置。2、重载对话框PreTranslateMessage消息处理函数,使当按下回车键时响应TAB键事件。具体代码如下:

hfutljx的博客 1504

VS2008, MFC 编程 对话框 笔记4 - 实现回车键Edit Control控件 焦点切换

1. 把Edit Control 控件属性Multiline设置为False 2. 在default 按钮 OnOK函数里操作:(OnOK 函数 ,不管 确定 按钮存在与否,都会被调用,以做默认操作)如果要使用自定义的buton去做OnOK(比如 默认 确定 按钮不见了),一定要把自定义的button 的ID改为IDOK。 void CtestDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 // OnOK(); 注释掉基类的 OnOK调用 那么在按

DZWH的博客 435

一、Visual Studio设置回车(enter)代码补全

参见Visual Studio 2017设置回车(enter)代码补全

panchang199266的博客 2803

MFC开发-MFC Edit Control 捕捉回车用法

头文件添加  virtual BOOL PreTranslateMessage(MSG* pMsg);    这个函数是捕获到所有Edit Control回车的消息。  BOOL Ctext1Dlg::PreTranslateMessage(MSG* pMsg)  {      if(WM_KEYDOWN == pMsg->message && VK_RETURN == pM...

goldDaNiu的博客 1476

MFC设置按下Enter键后响应指定的按钮

鼠标右键点击想要设置的button,选择属性(Properties),再选择Styles,选中Default Button。

weixin_34391854的博客 745

MFC EDIT 回车事件响应之 OnChar() 实现

本文阐述了在MFCEDIT控件实现回车事件的响应,采用PreTranslateMessage,虚方法和OnChar事件相结合的方法,同时兼容了扫描枪输入的难题,这实际使用解决输入捕获事件具有实际意义。

孤独剑的专栏 3324

MFC怎样实现回车键相当于点击指定按钮

1. 在类属性里,添加重写PreTranslateMessage BOOL CToolBoxTestDlg::PreTranslateMessage(MSG* pMsg) { // TODO: 在此添加专用代码和/或调用基类 if(pMsg->message == WM_KEYDOWN)  { if(pMsg->wParam == VK_RETURN)//当按下键为回车

Sayesan的专栏 3863

MFC Edit空间获得焦点

在做项目的时候,遇到了这个问题,所以总结记录一下。 获取焦点的方式正常的应该都会有三种情况。 第一种,就是靠控件的IDC去设置    GetDlgItem(IDC_XXXXX)->SetFocus(); 第二种,定义一个CEdit的变量去设置        CEdit edit;        edit.SetFocus(); 第三种,那就是直接在Ctrl+D然后在界面设置为第一个控

zs10hz的专栏 2903

VC++ MFC 写窗口,在对话框运行时按回车键对话框自动关闭了……

【问题】:VC++ MFC 写窗口,在对话框运行时按回车键对话框自动关闭了…… 【解决】:当你的对话框中含有按钮,并且你的对话框处于激活状态时,无论你在Edit中按回车还是在别的地方回车,都会激活   具有'Default   Button'   属性的按钮的OnClick

小怪兽的专栏 2506

在Dialog中button与回车键

  1,  如果该Dialog中,某个button拥有focus,则敲回车键时会响应该按钮; 注:button拥有focus的方法: (a)使用Tab键切换到某按钮; (b)在建立Dialog时设定Tab Order,把某一button的tab顺序设为1,则该Dialog初始时,这个button拥有focus;(打开资源(.rc)文件,可以发现得到焦点的按钮总是在最前面) (c)...

weixin_34245082的博客 588

MFC对话框中处理Enter或Esc按键事件方法

建立好的MFC对话框,按下Enter或Esc时,系统会调用”默认“事件处理函数,也就是OnOK(),倘若自己的CFormView子类或者CDialog子类没有重写OnOK()函数,则会调用父类的OnOK,其结果是关闭界面。要屏蔽Enter键或Esc退出的功能,只需要将在CDialog中重写ONOK()函数即可。而要实现默认为“确定”功能,下面两种方法供参考: 1.采用ClassWizard进...

u011555996的博客 1679

MFC中自定义按钮响应键盘的回车操作

MFC的项目中,运行时按下回车的时候

仲达先生 2350
上一篇: VS2008, MFC 编程 对话框 笔记2 - 实现展开收缩对话框
下一篇: VS2008, MFC 编程 对话框 笔记4 - 实现回车键 在Edit Control控件 焦点切换
DZWH
博客等级 码龄15年 42粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值