Irrlicht学习备忘录——14 Win32Window

本文档是关于使用Irrlicht游戏引擎创建Win32窗口的备忘录,详细介绍了如何在Windows平台上搭建3D游戏的基础运行环境。
摘要由CSDN通过智能技术生成

14 Win32Window

    官方代码($sdk)\examples\14.Win32Window


    这个例子演示了如何在win32窗口里运行irr。用过windows api或MFC的都应该知道窗口句柄这东西,通过它,就能让irr在自己指定的窗口里运行,而不是irr自己创建的窗口里运行。开发经验丰富人一看到这个官方例子,应该就知道如何让irr运行到Qt和.Net的窗口里了。这个例子是用windows api写的,看懂执行流程要比用框架的简单的多,但对windows的消息驱动的工作流程不清楚的,看这例子就有点困难了,需要先去了解下如何用windows api写一个HelloWorld。
    例子里一开头定义了两个全局的句柄,一个按钮的,另一个窗口的。
//按钮句柄
HWND hOKButton;
//窗口句柄
HWND hWnd;
    接下来是消息处理的回调函数。窗口收到属于该窗口的消息时,会自动调用它的回调函数对消息进行处理。
    CustomWndProc函数的样式是固定的,不能随意增减或改变参数,它将以函数指针的形式被窗口调用。参数HWND窗口句柄;UINT被传过来的消息ID,通过这ID可以知道具体是什么类型的消息;WPARAM和LPARAM附加到消息上的数据,它们可以是直接的数据,也可以是指针,具体需根据消息类型来确定,和API里面的MSG结构一样。
static LRESULT CALLBACK CustomWndProc(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    //处理窗口的命令
    case WM_COMMAND:
    {
        HWND hwndCtl = (HWND)lParam;
        int code = HIWORD(wParam);
        //按钮发出的消息
        if (hwndCtl == hOKButton)
        {
            //销毁窗口
            DestroyWindow(hWnd);
            //发送一个结束消息,告诉系统线程要结束了
            PostQuitMessage(0);
            return 0;
        }
    }
    break;
    //窗口销毁
    case WM_DESTROY:
    //发送一个结束消息,告诉系统线程要结束了
    PostQuitMessage(0);
    return 0;
    }
    //使用系统默认的消息处理函数
    return DefWindowProc(hWnd, message, wParam, lParam);
}
    这个例子里的消息处理函数功能很简单,它只处理了窗口收到的按钮点击消息和退出消息。如果需要处理其他的消息,增加相应的case就可以了。下面是主函数了,这次例子里主函数的代码跟前面的例子比,可以说完全不一样了。
int main()
{
    //这里跟以往的例子一样,
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值