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

第三章 窗口和消息

 

窗口创建的四个步骤

 

设计窗口

注册窗口

创建窗口

显示和更新窗口

 

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结束。 

 

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

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值