zoukankan      html  css  js  c++  java
  • 窗体信息处理函数讲解

    #include <windows.h>
    HINSTANCE hInst;
    HWND wndHandle;
    bool initWindow(HINSTANCE hInstance);
    LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);




    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
    {
            //初始化窗口
            if (!initWindow(hInstance))
               return false;
            //主消息循环
            MSG msg;
            ZeroMemory(&msg,sizeof(msg));
            while(msg.message!=WM_QUIT)
            {
                 while(GetMessage(&msg,wndHandle,0,0))
                 {
                      TranslateMessage(&msg);//转换消息
                      DispatchMessage(&msg);//投递消息
                 }
            }
            return (int)msg.wParam;
    }



    bool initWindow(HINSTANCE hInstance)
    {
           WNDCLASSEX wcex;
           //此部分可查看MSDN
           wcex.cbSize              =sizeof(WNDCLASSEX);        //这个structure的大小
           wcex.style               =CS_HREDRAW | CS_VREDRAW;//类型
           wcex.lpfnWndProc         =(WNDPROC)WndProc;          //处理程序消息的函数     (重点)
           wcex.cbClsExtra          =0;
           wcex.cbWndExtra          =0;
           wcex.hInstance           =hInstance;                 //这个程序的句柄
           wcex.hIcon               =0;                         //程序的ICON
           wcex.hCursor             =LoadCursor(NULL,IDC_ARROW);//鼠标指针
           wcex.hbrBackground       =(HBRUSH)(COLOR_WINDOW+1);//程序背景色,(这里有个强制类型转换,不明白可以看孙鑫老师的程序)
           wcex.lpszMenuName        =NULL;                       //没有菜单
           wcex.lpszClassName       ="Direct Example";           //程序注册名称(这里一定和下面的名称一至)
           wcex.hIconSm             =0;                          //
           RegisterClassEx(&wcex);            //注册
           
    //创建窗口
           wndHandle=CreateWindow(
                              "Direct Example",          //这里一定和上面注册名称一样
                              "我的D3D程序",             //标题名称
                              WS_OVERLAPPEDWINDOW,       //窗口类型
                              CW_USEDEFAULT,             //X坐标
                              CW_USEDEFAULT,             //Y坐标
                              640,                       //窗口宽度
                              480,                       //窗口高度
                              NULL,                      //没有父窗口
                              NULL,                      //没有菜单
                              hInstance,                 //程序的句柄
                              NULL);
             //对窗口是否已经创建成功进行确认
             if (!wndHandle)
                return false;
            //在屏幕上显示这个窗口
            ShowWindow(wndHandle,SW_SHOW);
            UpdateWindow(wndHandle);
            return true;
    }



    LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
    {
           //检查消息队列中所有可用消息
           switch(message)
           {
               case WM_DESTROY:
               PostQuitMessage(0);
               break;
           }
           return DefWindowProc(hWnd,message,wParam,lParam);
    }
  • 相关阅读:
    总结一下矩阵的基本操作
    洛谷|P4281 [AHOI2008]紧急集合 / 聚会
    CQYZ OJ|Contest 133|祖孙询问
    博客主题分享
    USACO1.1|黑色星期五Friday the Thirteenth
    USACO1.1.2|贪婪的送礼者
    POJ1664|DFS水题
    树状数组的区间查询与区间修改
    N0lP2018爆零记录
    A了一道dijkstra板子
  • 原文地址:https://www.cnblogs.com/itelite/p/2238865.html
Copyright © 2011-2022 走看看