win32编程SDK方式下实现回车发送消息,不使用MFC函数(处理Edit控件中回车消息)

本文介绍了在Win32编程SDK环境下,如何实现在不使用MFC的情况下,通过控件子类化处理Edit控件中的回车消息。初学者通常会遇到在父窗口回调函数中处理WM_KEYDOWN消息无效的问题。解决方法是将消息处理放入Edit控件的子窗口过程,利用SetWindowLong()函数进行操作。
摘要由CSDN通过智能技术生成

初学者在单纯使用SDK方式写win32程序时,由于缺乏许多封装好的类和函数,对控件的消息处理不是那么方便。这两天遇到了这个问题查了许多资料,大多数都是使用MFC中的PreTranslateMessage()来截获和重载消息,SDK方式需要用到控件子类化,我的解决方式如下

最初我是在父窗口的回调函数中对WM_KEYDOWN消息做判断处理的,很疑惑为什么不起作用,后来在CSDN中还提问了,原问题,感谢被采纳的大佬给的提示。仔细想想消息的过程,焦点在Edit控件中,按下回车键产生的消息应该由Edit子窗口来处理。按下图的代码主窗口并不会收到WM_KEYDOWN的消息,也就无法实现。

下面是错误示范哦!

...
case WM_KEYDOWN:
	switch(wParam)
	{
   
	case VK_RETURN:
		SendMessage(hBtnOk,WM_LBUTTONDOWN,0,lParam);
		SendMessage(hBtnOk,WM_LBUTTONUP,0,lParam);
		break;
	}
...

最后的解决方法是把WM_KEYDOWN放到Edit控件的子窗口过程中处理,使用到了SetWindowLong()详细看下方代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值