win32消息传递和处理过程

  Windows中的事件是一个”动作“,这个动作可能是用户操作应用程序产生的,也可能是Windows自己产生的,而消息用来记录和描述事件。
   消息传递过程:

1.系统或用户触发的某个动作

2.系统将这些信息存储到MSG结构体中

3.系统将该消息存储到相关应用程序的消息队列中

4.while(GetMessage(&Msg,NULL,0,0))  //Msg是输出参数
{
        TranslateMessage(&Msg);   // 翻译消息
        DispatchMessage(&Msg);   //不调用处理函数,而是转回给操作系统,消息加工完毕

}
5.DispatchMessage将加工过的消息传递给操作系统


6.系统调用窗口过程函数

7.LRESULT CALLBACK WindowProc(
               IN  HWND hwnd,
               IN  UINT  uMsg,
               IN WPARAM wParam,
               IN LPARAM lparam

                

);

创建一个简单的窗口程序:

创建一个名为zzzz的win32应用程序工程,选择建一个简单的win32程序(省去加头文件步骤)。
首先要告诉windows我要创建的窗口是什么样的 ,WHDCLASS wndclass,查阅Api:

其中 lpfnWndProc 为 消息的窗口处理函数,查看其结构:


之后注册和创建窗口,注意在调用消息处理函数之前对其进行声明,代码如下(注:回调函数只管提供地址,由windows负责调用):
 return DefWindowProc(hwnd,uMsg,wParam,lParam); 此行将自己不想处理的消息传给操作系统


窗口回调函数:
1.处理完的消息,必须return 0

2.只要自己不处理的函数都要加一句:return DefWindowProc(hwnd,uMsg,wParam,lParam);

可根据喜好更改窗口外观样式,详见Api


显示窗口和消息循环:


此时编译运行程序,我的第一个简单窗口就生成了。




需要注意:

窗口回调函数:

1.处理完的消息,必须return 0
2.只要自己不处理的函数都要加一句:return DefWindowProc(hwnd,uMsg,wParam,lParam);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值