窗口消息介绍

用WM_MOUSEMOVE消息画轨迹点时,发现鼠标移动很快的时候 只能画出少数几个点。 用WM_MOUSEMOVE消息画轨迹点时,发现鼠标移动很快的时候 只能画出少数几个点。然后找到这样一段话,但还是不怎么能了解什么意思。 WM_MOUSEMOVE 消息报告光标在窗口客户区的移动。当鼠标移动时,在光标下面的窗口会接收到快速报告光标最近位置的WM_MOUSEMOVE 消息Windows用一种有趣的方法来投递WM_MOUSEMOVE 消息,以防止运行缓慢的应用程序被 阅读详情
窗口过程函数传入的参数lParam包含了鼠标的位置,其中底位为x坐标,高位为y坐标,这些坐标值都是相对于窗口客户区的左上角的值,wParam中则包含了鼠标按钮的状态.

1、窗口消息:WM_CREATE,WM_DESTROY,WM_CLOSE

我们创建一个窗口对象的时候,这个窗口对象在创建过程中收到的就是WM_CREATE消息,对这个消息的处理过程一般用来设置一些显示窗口前的初始化工作,如设置窗口的大小,背景颜色等,WM_DESTROY消息指示窗口即将要被撤消,在这个消息处理过程中,我们就可以做窗口撤消前的一些工作。WM_CLOSE消息发生在窗口将要被关闭之前,在收到这个消息后,一般性的*作是回收所有分配给这个窗口的各种资源。在windows系统中资源是很有限的,所以回收资源的工作还是非常重要的。

2、键盘消息:WM_CHAR,WM_KEYDOWN,WM_KEYUP

这三个消息用来处理用户的键盘数据,当用户在键盘上按下某个键的时候,会产生WM_KEYDOWN消息,释放按键的时候又回产生WM_KEYUP消息,所以WM_KEYDOWN与WM_KEYUP消息一般总是成对出现的,至于WM_CHAR消息是在用户的键盘输入能产生有效的ASCII码时才会发生。这里特别提醒要注意前两个消息与WM_CHAR消息在使用上是有区别的。在前两个消息中,伴随消息传递的是按键的虚拟键码,所以这两个消息可以处理非打印字符,如方向键,功能键等。而伴随WM_CHAR消息的参数是所按的键的ASCII码,ASCII码是可以区分字母的大小写的。而虚拟键码是不能区分大小写的。

3、鼠标消息:WM_MOUSEMOVE,WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBCLICK,WM_RBUTTONDOWN, WM_RBUTTONUP,WM_RBUTTONDBCLICK

这组消息是与鼠标输入相关的,WM_MOUSEMOVE消息发生在鼠标移动的时候,剩余的六个消息则分别对应于鼠标左右键的按下、释放、双击事件,要指出的是WINDOWS系统并不是在鼠标每移动一个像素时都产生MOUSEMOVE消息,这一点要特别注意。
4、另一组窗口消息:WM_MOVE , WM_SIZE , WM_PAINT

当窗口移动的时候产生WM_MOVE 消息,窗口的大小改变的时候产生WM_SIZE消息,而当窗口工作区中的内容需要重画的时候就会产生WM_PAINT消息。

5、焦点消息WM_SETFOCUS,WM_KILLFOCUS

当一个窗口从非活动状态变为具有输入焦点的活动状态的时候,它就会收到WM_SETFOCUS消息,而当窗口失去输入焦点的时候它就会收到WM_KILLFOCUS消息。

6、定时器消息:WM_TIMER

当我们为一个窗口设置了定时器资源之后,系统就会按规定的时间间隔向窗口发送WM_TIMER消息,在这个消息中就可以处理一些需要定期处理的事情。

最后要指出的一点是,在WINDOWS环境下,消息的来源是多方面的,最常见的是用户的*作产生消息,系统在必要的时候也会向程序发送系统消息,其他在运行中的程序也可以向程序发送消息。此外,在程序的内部,也可以根据需要在适当的时候主动产生消息,比如主动产生WM_PAINT消息以实现需要的重画功能。

上面介绍了MESSAGE栏中主要的消息,在MEMBER FUNCTION一栏中列出的是目前被选中的类已经有的成员函数。这些成员函数一般说来是与这个类可以接收的消息一一对应的。也就是说,一个成员函数一般总是用来处理某个特定的消息。如果在MESSAGE栏中的某个消息在程序中需要处理,但目前还没有相应的类成员函数,比如这里选中WM_TIMER这个消息,它目前还没有相应的对应的类的成员函数,单击ADD FUNCTION按钮,系统就自动为WM_TIMER消息在类中添加了对应的成员函数ONTIMER,单击EDITCODE按钮,可以发现系统已经自动生成了完成ONTIMER函数所需的基本代码,我们只要在这些基本代码的基础上再添加所需要的代码就可以了。注意对话框中的ADD CLASS按钮,它用来往当前应用程序中添加一个新的类。单击后选中NEW菜单,

系统弹出了NEW CLASS对话框用于生成一个新的类。在这个对话框中需要为类起个名字,设置类文件的名字,另外还要在BASE CLASS一栏 的下拉列表框中选择某个已有的类作为基类,设好需要的信息后单击OK就生成了一个新的类。CLASS WIZARD还有一些很强大的功能,这里就不再详细介绍,你会在不断的学习中慢慢地了解和掌握。 

 
Win32 SDK Gui编程系列之--检测鼠标光标移动 滚动条的形状非常相似,但是即使把鼠标光标放在条形或拇指上,拇指的颜色也不会改变。在按下山姆的左键的状态下,山姆的颜色会变成和上面对话框的鼠标悬停相似的颜色。最后,下面的画面是用Win32 API的CreateWindowEx函数生成的滚动条。使用FlatSB_SetScrollProp函数,可以给栏杆添加颜色,但是找不到把按下拇指时的颜色换成稍微深一点的浅蓝色的方法。放在脱离拇指的杆子上时,拇指的颜色不会改变,只有杆子两端的箭头会浮起来。以上,在4个例子中,第一个对话框的滚动条看起来是最好的(根据喜好)。 阅读详情

相关推荐

VC++中窗口过程函数及其消息发送、响应机制介绍

在VC++中,窗口过程函数是应用程序定义的一个函数,主要功能是处理发送给窗口消息窗口过程函数的定义是:virtual LRESULT WindowProc( UINT message, WPARAM wParam,LPARAM lParam ); 其中,message指定消息类型,wParam和lParam指定其余的消息特定信息,内容与message参数值有关。 在应用程序中窗口过程函数

小木头工作室 2768

01_WM_MOUSEMOVE窗口中光标移动消息

消息处理:WM_MOUSEMOVE 窗口消息,处理光标在窗口移动的时候,将触发此消息

成长需要沉淀。 903

win32消息与菜单创建

一 鼠标消息   1 鼠标消息     1) 基本鼠标消息     WM_LBUTTONDOWN   左键按下     WM_LBUTTONUP     左键抬起     WM_RBUTTONDOWN   右键按下     WM_RBUTTONUP     右键抬起     WM_MOUSEMOVE     鼠标移动     2) 双击消息     WM_LBUTTONDBLCL

zouyouliang1的专栏 883

WM_MouseMove消息

WM_MouseMove消息的两个参数:wParam、lParam。 参照:http://msdn.microsoft.com/en-us/library/ms645616(v=vs.85).aspx wParam:组合键。有Shift、Ctrl和左、中、右三个键的每一位。 lParam:鼠标的位置信息。低位为X坐标;高位为Y坐标。这些坐标都是相对于窗口客户区的左上角。 举个例

sdgaojian的专栏 7789

Windows窗口消息介绍

Windows窗口消息介绍 ////////////////////////////////////////////////////////////////////////// #include "AFXPRIV.H"//消息值的定义来源 #include "Dde.h"//DDE消息值的定义来源 #include "CPL.H"//控制面板消息值的定义来源 #include "WFEXT.H"...

积累点滴,保持自我 2766

介绍Windows窗口消息、子类化和超类化

介绍Windows窗口消息、子类化和超类化这篇文章本来只是想介绍一下子类化和超类化这两个比较“生僻”的名词。为了叙述的完整性而讨论了Windows窗口消息,也简要讨论了进程和线程。子类化(Subclassing)和超类化(Superclassing)是伴随Windows窗口机制而产生的两个复用代码的方法。不要把“子类化、超类化”与面向对象语言中的派生类、基类混淆起来。“子类化、超类

1002

眼见为实(2):介绍Windows窗口消息、子类化和超类化

眼见为实(2):介绍Windows窗口消息、子类化和超类化这篇文章本来只是想介绍一下子类化和超类化这两个比较“生僻”的名词。为了叙述的完整性而讨论了Windows窗口消息,也简要讨论了进程和线程。子类化(Subclassing)和超类化(Superclassing)是伴随Windows窗口机制而产生的两个复用代码的方法。不要把“子类化、超类化”与面向对象语言中的派生类、基类混淆起来。“

6728

子类化和超类化区别(介绍Windows窗口消息、子类化和超类化

这篇文章本来只是想介绍一下子类化和超类化这两个比较“生僻”的名词。为了叙述的完整性而讨论了Windows窗口消息,也简要讨论了进程和线程。子类化(Subclassing)和超类化(Superclassing)是伴随Windows窗口机制而产生的两个复用代码的方法。不要把“子类化、超类化”与面向对象语言中的派生类、基类混淆起来。“子类化、超类化”中的“类”是指Windows窗口类。 0 运行

小龙王2010 931
上一篇: Javascript 元素拖曳操作
下一篇: 通过Console输出调试信息.
jant126
博客等级 码龄20年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值