主窗口给按钮控件发送消息 BN_CLICKED和BN_SETFOCUS和BN_KILLFOUCS

article/2025/11/11 7:27:04

先说明一下,按钮控件的消息有很多种,下面的列表是按钮发送的消息,其中用的比较多是BN_CLICKED和BN_SETFOCUS和BN_KILLFOUCS

/** User Button Notification Codes*/
#define BN_CLICKED          0
#define BN_PAINT            1
#define BN_HILITE           2
#define BN_UNHILITE         3
#define BN_DISABLE          4
#define BN_DOUBLECLICKED    5
#if(WINVER >= 0x0400)
#define BN_PUSHED           BN_HILITE
#define BN_UNPUSHED         BN_UNHILITE
#define BN_DBLCLK           BN_DOUBLECLICKED
#define BN_SETFOCUS         6
#define BN_KILLFOCUS        7
#endif /* WINVER >= 0x0400 */

下面的实例是说明

case BN_CLICKED:
//MessageBox(hWnd,TEXT(“按钮1被按下”),TEXT(“测试”),MB_OK);
SendMessage(hWndEdit1,WM_CLEAR,0,0);
SendMessage(hWndEdit2,WM_CLEAR,0,0);
break;
case BN_SETFOCUS:
MessageBox(hWnd,TEXT(“按钮1得到焦点”),TEXT(“测试”),MB_OK);
break;
case BN_KILLFOCUS:
MessageBox(hWnd,TEXT(“按钮1失去焦点”),TEXT(“测试”),MB_OK);
break;
完整的例子如下:

#include <Windows.h>
#include "resource.h"INT_PTR CALLBACK DialogProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{BOOL bRet = true;static HWND hWndEdit1 = NULL;static HWND hWndEdit2 = NULL;TCHAR pszBuffer[1024];switch(uMsg){case WM_CLOSE:EndDialog(hWnd,0);break;case WM_COMMAND:hWndEdit1 = GetDlgItem(hWnd,IDC_EDIT1);hWndEdit2 = GetDlgItem(hWnd,IDC_EDIT2);switch(LOWORD(wParam)){case IDC_BUTTON1:switch(HIWORD(wParam)){case BN_CLICKED://MessageBox(hWnd,TEXT("按钮1被按下"),TEXT("测试"),MB_OK);SendMessage(hWndEdit1,WM_CLEAR,0,0);SendMessage(hWndEdit2,WM_CLEAR,0,0);break;case BN_SETFOCUS:MessageBox(hWnd,TEXT("按钮1得到焦点"),TEXT("测试"),MB_OK);break;case BN_KILLFOCUS:MessageBox(hWnd,TEXT("按钮1失去焦点"),TEXT("测试"),MB_OK);break;}break;case IDC_EDIT1:switch(HIWORD(wParam)){case EN_MAXTEXT:break;case EN_UPDATE:GetWindowText(hWndEdit1,pszBuffer,1024);SetWindowText(hWndEdit2,pszBuffer);break;}break;case IDC_BUTTON2:switch(HIWORD(wParam)){case BN_CLICKED:SendMessage(hWndEdit1,WM_COPY,0,0);break;}break;case IDC_BUTTON3:switch(HIWORD(wParam)){case BN_CLICKED:SendMessage(hWndEdit2,WM_PASTE,0,0);break;}break;case IDC_BUTTON4:GetWindowText(hWndEdit1,pszBuffer,1024);MessageBox(hWnd,pszBuffer,TEXT("测试"),MB_OK);break;case IDC_BUTTON5:SetWindowText(hWndEdit2,TEXT("单于大爷"));break;default:return DefWindowProc(hWnd,uMsg,wParam,lParam);}break;default:bRet = FALSE;return bRet;}return bRet;
}int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{DialogBox(hInstance,MAKEINTRESOURCE(IDD_MAIN),NULL,DialogProc);return 0;
}

按钮消息和编辑框消息处理例子


http://chatgpt.dhexx.cn/article/Sy0Amg2t.shtml

相关文章

vba 判断文本框内容是否为空_VBA代码用SetFocus精确控制焦点事件

VBA++ 题记: 静下心,多学习有用的知识,多提高自己的水平和能力,这才是正道。时间就像一张网,你撒在哪里,你的收获就在哪里。谨记自己的方向,这是路之所在。适当节制自我的各种欲望,谁都逃不过时间的历练,谁都是命运的行者,谁都是在人生的道路上一步一趋。你要做的,是…

Qt setFocus无法生效问题

setFocus 无法生效的问题 官方文档说的很明白当前部件或者其父部件必须是active window. 所以 mywidget.activateWindow() mywidget.setFocus()但是有些时候这样也不会获得焦点&#xff0c;比如当自己内部需要setFocus的时候。可以通过focusOutEvent() or focusInEvent(&#x…

QLineEdit setFocus失效问题

QLineEdit setFocus失效问题 目标效果&#xff1a; 弹窗弹出后&#xff0c;弹窗上的输入框获得焦点&#xff0c;以便不必再点击输入框就可以直接输入。 但在我通过一些方式为这个弹窗添加了背景遮罩后&#xff0c;发现输入框没有自动获得焦点了。 最终解决方法 激活弹窗。添…

【Python】【setFocus】焦点

以此文为例子展示setFocus()的用法 1.无焦点 self.setFocus()#设置焦点&#xff0c;下文演示有无焦点的区别 2.焦点默认在文本框 #self.setFocus()#设置焦点&#xff0c;下文演示有无焦点的区别 3.设置输入焦点 在某一时刻&#xff0c;只有一个控件(或根本没有)可以获得输入…

解决Eclipse的Validating速度太慢的方法

以下操作对项目不会有影响&#xff0c;请放心操作。 第一步&#xff1a; 第二步&#xff1a;

在Eclipse里Validating非常缓慢

解决&#xff1a; 1.打开eclipse&#xff0c;点击【window】菜单&#xff0c;选择【preferences】选项 2.在左侧搜索【validation】&#xff0c;在右侧可以看到eclipse进行的自动检查都有哪些内容 3.将Manual&#xff08;手动&#xff09;保持不动&#xff0c;将build里面全部去…

亲测解决INFO Validating config

INFO Validating configFATAL YAMLException: duplicated mapping key at line 859, column -321: model: 把model项合并即可&#xff0c;注意你的报错可能块是不一样的。

MyEclipse的Validating速度太慢优化

最近在做项目的时候经常因为各种原因重启myeclipse&#xff0c;当重新打开后会发现一直在执行Validating&#xff0c;简直是龟速啊&#xff0c;后来在百度上看到这样的设置&#xff0c;虽然不知道这个是干什么的&#xff0c;但是修改了之后在此重启时确实变快了&#xff0c;也还…

HV000030: 使用@Size validating type ‘java.lang.Integer‘. Check configuration for ‘*‘ 及 Validated注解使用示例

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint javax.validation.constraints.Size validating type java.lang.Integer. Check configuration for channel Size不支持数值类型校验&#xff0c;仅支持字符、集合、数组的长…

Eclipse Validating缓慢的优化

使用Eclipse的人基本都有这种情况&#xff0c;如图&#xff1a; 各种等待有木有&#xff0c;各种崩溃啊有木有&#xff0c;反正我是觉得挺烦的&#xff0c;但是也不知道是干嘛的&#xff0c;如果取消了&#xff0c;造成程序出问题&#xff0c;就是给自己找麻烦&#xff0c;我知…

Kubernetes ImagePolicyWebhook与ValidatingAdmissionWebhook【3】validating_admission.go源码解析

文章目录 1. 代码依赖2. handler的validating_admission.go2.1 metav1.status是什么&#xff1f;2.2 admissionReview.Response.Result是什么&#xff1f; 3. 总结 相关阅读&#xff1a; Kubernetes ImagePolicyWebhook与ValidatingAdmissionWebhook【1】动手实践感受区别所在…

Eclipse Validating的作用及优化

今天接手一个小项目&#xff0c;一切导入正常。可是右下角一直出现 28% Validating 项目名 &#xff0c;如下所示 各种等待有木有&#xff0c;各种崩溃啊有木有&#xff0c;反正我是觉得挺烦的&#xff0c;但是也不知道是干嘛的&#xff0c;如果取消了&#xff0c;造成程序出问…

validating project时间过长,解决办法

validating project时间过长&#xff0c;解决办法 另外&#xff0c;可能有时项目怎么clean也还是原来的样子&#xff0c;可以在浏览器利用快捷键ctrlshiftdelete,清除缓存之后再试试。

解决No validator could be found for constraint ‘javax.validation.constraints.NotBlank‘ validating type

文章目录 1. 复现问题2. 分析问题3. 解决问题4. 重要补充5. 其他说明 1. 复现问题 今天在使用Knife4j调用后端接口&#xff0c;报出如下错误&#xff1a; javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint javax.validation.…

Kubernetes Admission Webhook Validating 与 mutating 实践

Kubernetes Admission Webhook Validating 与 mutating 实践 文章目录 Kubernetes Admission Webhook Validating 与 mutating 实践1. k8s 的配置2. 构建3. 部署服务4. 测试Validating webhook5. 测试 mutating webhook 1. k8s 的配置 启用 MutatingAdmissionWebhook 和 Valid…

Eclipse开发工具中validating长时间卡住不动

编辑Java代码或update 新建Maven项目后&#xff0c;Eclipse开发工具总会停留在validating状态&#xff0c;超长时间的验证代码严重影响程序员心情和工作进度&#xff0c;那么接下来演示如何关闭该功能&#xff1a; 1、点击Window->点击Preferences->点击Validation&#…

validating java_如何禁用Eclipse的Validating

使用Eclipse开发项目&#xff0c;在加载项目、刷新项目、修改了某个代码的时候&#xff0c;经常出现Eclipse正在Validating的提示。项目比较大文件(js)较多的情况下&#xff0c;甚至出现Validating几分钟的盛况。在这几分钟内&#xff0c;性能较差的电脑几乎出现鼠标停滞屏幕僵…

eclipse 的validating长时间卡住不动

方法一、直接关闭 每次maven的update project之后或者是从外部导入一个文件时&#xff0c;总是在validating&#xff0c;超长时间的验证代码&#xff0c;尤其是动态css和JavaScript&#xff0c;让程序员等待久严重影响心情和工作进度&#xff0c;所以将其关闭或是禁用。 如何…

关于eclipse 的validating

一、关闭 每次maven的update project之后&#xff0c;总是在validating&#xff0c;超长时间的验证代码&#xff0c;尤其是动态css和JavaScript&#xff0c;让程序员等待久严重影响心情和工作进度&#xff0c;所以将其关闭或是禁用。 如何关闭&#xff0c;操作步骤如下&#xf…

Eclipse使用时遇到一直在Validating中的解决办法

第一次从服务器检出大型web项目时出现了validating中&#xff0c;一直卡死不动&#xff0c;因此百度查找了很多说法和解决方案&#xff0c;先总结如下&#xff1a; 一、什么是Eclipse的Validating? Eclipse安装之后一般是默认设置好了validation&#xff0c;允许软件对当前项…