窗口过程函数

窗口过程函数

窗口过程函数,主要用于处理发送给窗口的信息。一般的Windows应用程序的主要代码部分就集中在窗口过程函数中。而对于游戏程序而言,在窗口过程中是很少去写大量代码的。

LRESULT CALLBACK WinProc(
_In_ HWND hwnd,
_In_ UINT Msg,
_In_ WPARAM wPAram,
_In_ LPARAM lParam
);

窗口过程函数的名字可以随便取,但是函数定义形式必须与上面一致。系统通过窗口过程函数的地址(指针)来调用窗口过程函数,而不是通过函数的名字来调用;

  • LRESULT :窗口函数的返回值,一般是非0值
  • CALLBACK用来告诉Windows这个函数是一个回调函数,每当windows参数遇到需要处理的事件时候,就调用这个函数。
  • HWND类型的hwnd ,需要处理消息的那个窗口的句柄
  • UINT类型的uMsg ,表示待处理的消息的ID,即消息的类型
  • 第三个、四个参数WPARAM类型的wParam和LPARAM类型的lParam,用于表示信息的附加信息,这个附加信息会随着消息类型的不同而不同
  • 在一个程序中,可能会有多个窗口,而窗口过程函数的第一个参数就是用于指定了接收消息的那个特定窗口。我们可以同时打开几个窗口,各自窗口具有不同的句柄和分开定义的窗口过程函数来处理各自的信息。

    LRESLT CALLBACK WndProc(HWND hwnd,
    UINT Msg,
    WPARAM wPAram,
    LPARAM lParam){
    switch(message){
        case WM_PAINT://客户区重绘消息
            Direct3D_Render(hwnd); //调用Direct3D_Render函数,进行画面的绘制
            ValidateRect(hwnd,NULL);//更新客户区的显示
            breakcase WM_KEYDOWN://键盘按下
            if(wParam==VK_ESCAPE)   //ESC键
                DestroyWindow(hwnd);//销毁窗口,并发送一条WM_DESTORY消息
            breakcase WM_DESTORY://窗口销毁
            Direct3D_CleanUp()   //调用Direct3D_CleanUp函数,清理COM接口对象
            PostQuitMessage(0);   //向系统表明有个线程终止请求,用来响应WM_DESTORY消息
            breakdefaultreturn DefWindowProc(hwnd,message,wParam,lParam);//调用默认的窗口过程处理
        }
        return 0;
    }

    窗口类的注销

    WinMain函数之前,对之前注册的窗口类进行注销;
    UnregisterClass
    BOOL WINAPI UnregisterClass(In LPCTSTR lpClassName,_In_opt HINSANCE hInstance);
    第一个参数:呀注销的类的名称;
    第二个参数填的是:创建这个类的应用程序的实例句柄,也就是WinMain函数的hInstance,或者是类的实例句柄wndClass.hInstance。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值