对窗口过程函数WndProc()的一点理解
函数原型:
LRESULTCALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
窗口过程函数决定了当一个窗口从外界接收到不同的信息时,所采取的不同反应,即主要用于处理发送给窗口的信息。hwnd是要处理窗口的句柄;message是消息ID,代表了不同的消息类型;wParam和lParam代表了消息的附加信息,附加信息会随着消息类型的不同而不同。
当键盘消息发出时,wParam的值为按下按键的虚拟键码,lParam则存储按键的相关状态信息。因此,如果窗口对传入的键盘消息处理时,只需要判断wParam的值即可。
当鼠标消息发出时,wParam值为鼠标按键的信息,而lParam则储存鼠标的坐标,高字节代表y坐标,低字节代表x坐标。即g_y =HIWORD(lParam), g_x = LOWORD(lParam)
常见窗口过程函数框架如下:
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message) //根据不同的消息类型进行不同的处理
{
case WM_PAINT: //若是客户区重绘消息
Window_Paint(); //调用窗口绘制函数
ValidateRect(hwnd, NULL); //更新客户区的显示,使无效区域变有效
break;
case WM_KEYDOWN: //若是键盘按下消息
if(wParam == VK_ESCAPE) //若是ESC键
DestroyWindow(hwnd); //摧毁窗口并发送一条WM_DESTROY消息
break;
case WM_DESTROY: //若是窗口摧毁消息
Window_CleanUp(); //先调用资源清理函数清理掉预先的资源
PostQuitMessage(0); //向系统表明有个线程有终止请求,用来响应WM_DESTROY消息
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam); //调用默认窗口过程为应用程序没有处理的窗口消息提供默认的处理
}
return 0;
}
对窗口过程函数WndProc()的一点理解相关推荐
- 窗口过程,窗口过程函数
如前所述,函数GetMessage负责从应用程序的消息队列中取出消息,而函数DispatchMessage()要求Windows将消息传送给在MSG结构中为窗口所指定的窗口过程.然后出台的就是这个窗口 ...
- X32dbg-查找MFC窗口过程函数-跟踪直到满足条件-条件断点-查看窗口句柄
文章目录 1.X32dbg 2.条件断点 3.窗口句柄 4.作者答疑 1.X32dbg 在逆向分析Win32软件时,需要找到窗口过程函数,这样可以方便的找到目标应用程序段.以一个简单的win32程 ...
- 传递给窗口过程函数的lParam参数指针
创建窗口时,通过lParam参数传递给WM_CREAT消息的CREATESTRUCT结构体参数. CREATESTRUCT结构体定义如下: typedef struct tagCREATESTRUCT ...
- 理解MiniGUI消息循环和窗口过程
1.2 消息和消息循环 在Windows系列操作系统中,广泛使用了消息驱动的概念.在MiniGUI中,我们也使用了消息驱动作为应用程序的创建构架. 在消息驱动的应用程序中,计算机外设发生的事件,例如 ...
- 《Windows核心编程》の窗口过程的使用
1)设计一个窗口过程: 下面的实例代码展现了经典的窗口过程的结构.窗口过程使用switch语句处理传入的消息参数uMsg, LRESULT CALLBACK MainWndProc( HWND hwn ...
- MFC的消息处理函数和消息过程函数的区别
MFC的消息处理函数(例如:OnCreate)和消息过程函数(例如:WindowProc)的区别? 并不是说OnCreate和WindowProc的区别,只是分别举个消息映射函数和窗口过程函数的例子. ...
- MSG结构体和WndProc窗口过程详解
MSG结构体和WndProc窗口过程对于Windows编程非常重要,如果不了解它们,可以说就没有学会Windows编程. MSG结构体 MSG 结构体用来表示一条消息,各个字段的含义如下: typed ...
- 2.深入一点理解C源程序的编译过程
2.深入一点理解C源程序的编译过程 本文章的大多数灵感及知识来源于南京大学的计算机系统基础教材,如果希望更加深入地对相关知识做进一步了解,可以移步上述相关资源.在网上可以轻易获得上述资源,mooc也有 ...
- python中size的用法.dim_对于numpy中的函数的参数dim的一点理解
对于numpy中的函数的参数dim的一点理解 经常被dim参数搞混.试着总结了一下.记忆瞬间清晰了 以.max(dim)方法为例: >>> import numpy as np &g ...
最新文章
- 最近24小时记录:虚拟机与Wireshark 2.0
- [原创] Easy SysLite V1.2 (2016.5.29更新,新增加WIN10支持,一个程序适配所有系统减肥)...
- 说说程序员、编译器、CPU之间的三角恋
- 使用SHA256证书进行微软数字签名代码签名
- java 微信支付 md5_微信支付MD5签名算法实现
- bootstrap-select控件全选,全不选,查询功能实现
- 【转】C#Socket编程详解(一)TCP与UDP简介
- python sqlite cursor
- bzoj 3749: [POI2015]Łasuchy
- 安装引导黑屏_电脑黑屏要怎么重装系统修复
- 基于numpy科学计算库实现线性回归linear regression
- 虚拟机安装linux系统教程
- js使用高德地图api实现定位,行政区域划分,点击事件,只显示某个省市或区,海量点标记
- 华人操作系统项目列表
- 生命礼赞,带动世界第三次文化复兴伊比利亚双雄篇
- 隔壁孩子10篇博客node入门而且写了一个前后端分离项目,你怎么还在睡觉!!!(五)
- 论文阅读笔记(Region Proposal by Guided Anchoring)
- (Bit / Byte / KB / MB / GB / TB ) 概念与单位换算
- Dynamics CRM和企业微信集成(二)方案实现
- 手机、电脑、服务器电子数据现场勘验攻略(超级全!)
热门文章
- 认知空间是什么意思_百变立体空间 搭建创意世界
- python数据分析报告主题_【原创】python主题LDA建模和t-SNE可视化数据分析报告论文(代码数据)...
- 系统分析师通过率_软考5个高级难度最小的是哪个?哪个通过率高一些?
- mysql 存储过程 查询结果 循环_在存储过程中从查询结果集中怎么循环
- php 清除英文字母,计算器清除键的字母是什么
- 单模光电转换器怎么接_我对汽车电子电磁兼容测试实验室使用的光电收发器之使用管理方式的一些看法...
- python电子相册制作软件下载_艾奇KTV电子相册制作软件
- 集客家客运维那些事_2011年集客家客代维考试题库V2
- 【开源项目】特斯拉+树莓派实现车牌识别检测系统
- 比0 冷1度c语言编程,关于DS18B20的C语言程序(精确度0.1度).doc