全球旧事资料 分类
新窗口,函数的原型声明如下:BOOLUpdateWi
dowHWNDhW
d
f参数hW
d指CreateWi
dow函数返回的窗口句柄。213消息循环在创建窗口、显示窗口、更新窗口后,需要编写一个消息循环,不断地从消息队列中取出消息,并进行响应。要从消息队列中取出消息,需要调用GetMessage函数,函数原型声明如下:BOOLGetMessageLPMSGlpMsgHWNDhW
dUINTwMsgFilterMi
UINTwMsgFilterMax参数lpMsg指向一个消息MSG结构体,GetMessage从线程的消息队列中取出的消息将保存在该结构体对象中。typedefstructtagMSGHWNDhw
dUINTmessageWPARAMwParamLPARAMlParamDWORDtimePOINTptMSG;第一个成员变量hw
d表示消息所属的窗口。我们通常开发的程序都是窗口应用程序,一个消息一般都是与某个窗口相关联的。例如,在某个活动窗口中按下鼠标左键,产生的按键消息就是发给该窗口的。在Wi
dows程序中,用HWND类型的变量来标识窗口。第二个成员变量message指定了消息的标识符。在Wi
dows中,消息是由一个数值来表示的,不同的消息对应不同的数值。但是由于数值不便于记忆,所以Wi
dows将消息对应的数值定义为WM_XXX宏(WM是Wi
dowMessage的缩写)的形式,XXX对应某种消息的英文拼写的大写形式。例如,鼠标左键按下消息是WM_LBUTTONDOWN,键盘按下消息是WM_KEYDOWN,字符消息是WM_CHAR,等等。在程序中我们通常都是以WM_XXX宏的形式来使用消息的。第三、第三、第四个成员变量wParam和lParam,用于指定消息的附加信息。例如,当我们收到一个字符消息的时候,message成员变量的值就是WM_CHAR,但用户到底输入的是什么字符,那么就由wParam和lParam来说明。wParam、lParam表示的信息随消息的不同而不同。第五、第五、第六个两个变量time和pt分别表示消息投递到消息队列中的时间和鼠标的当前位置。Wi
dows会为每一个当前运行的程序建立一个消息队列,用来完成用户与程序的交互.为了让程序能够处理这个消息队列,我们要使用一个消息循环从消息队列中取出消息:whileGetMessagemsg,NULL,0,0Tra
slateMessagemsgDispatchMessagemsg
f消息循环从GetMessage函数开始,首先从消息队列中取出一个消息,然后通过Tra
slateMessagemsg函数将msg结构传递给Wi
dows进行转换,最后使用DispatchMessagemsg函数将msg结构回传给Wi
dows,再由Wi
dows将此消息发送到相应的窗口过程中进行处理.214编写窗口过程函数窗口过程函数要处理Wi
dows发来的消息,就需要定义一个窗口过程函数.在填充w
dclass结构的时候我们定义了窗口的消息处理函数w
dclasslpf
W
dProcW
dProcW
dPr
好听全球资料 返回顶部