window程序设计笔记 第三章 窗口和消息

来源:互联网 发布:大闹天宫化身6进7数据 编辑:程序博客网 时间:2024/06/09 21:39

第三章 窗口和消息

 

窗口创建的四个步骤

 

设计窗口

注册窗口

创建窗口

显示和更新窗口

 

LoadIcon() 在取得预定义图示的句柄,可以将第一个参数设定为NULL。在加载自定义图标是,这个参数应该被设定为执行实体句柄。 

 

Typedef stuct tagMSG

{

 HWND hwnd;//接收消息的窗口

 UINT message;//接收到的消息ID

 WPARAM wParam;

 LPARAM lParam;

 DWORD time;//消息放入消息队列中的时间

 POINT pt;//消息放入消息队列时的鼠标坐标

}

MSG,*PMSG

 

只要从消息队列中取出消息的message字段不为WM_QUITGetMessage就传回一个非零值。WM_QUIT消息导致GetMessage传回0

 

TranslateMessage(&msg);//msg结构传给windows,进行一些键盘转换。

 

该函数将虚拟键消息转换为字符消息。字符消息被寄送到调用线程的消息队列里,当下一次线程调用函数GetMessage

PeekMessage时被读出。

 

DispatchMessage(&msg);//又将msg结构回传给windows

 

该函数分发一个消息给窗口程序,通常消息从GetMessage函数获得。消息被分发到回调函数,作用是消息传递给操作系统,然后操作系统去调用我们的回调函数。

 

处理完消息之后,wndproc传回windows,此时,windows还停留在DispatchMessage中。

 

WM_PAINT

 

在移动窗口以致其相互重叠时,windows不保存一个窗口中被另一个窗口所掩盖的内容,在这一部分不在被遮盖之后,它就被标志为无效。窗口消息处理程序接收到一条WM_PAINT消息,以更新窗口内容。

该消息是一个无效区域变得有效。

 

对于WM_PAINT的处理几乎总是从一个BeginPaint开始,EndPaint结束。 

 

队列化消息与非队列化消息

 

队列化的消息被发送给消息队列,而非队列化的消息则发送给窗口消息处理程序。

 

原创粉丝点击