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);
    }
  • 相关阅读:
    为什么 PCB 生产时推荐出 Gerber 给工厂?
    Fedora Redhat Centos 有什么区别和关系?
    【KiCad】 如何给元件给元件的管脚加上划线?
    MCU ADC 进入 PD 模式后出现错误的值?
    FastAdmin 生产环境升级注意
    EMC EMI 自行评估记录
    如何让你的 KiCad 在缩放时不眩晕?
    KiCad 5.1.0 正式版终于发布
    一次单片机 SFR 页引发的“事故”
    java基础之集合
  • 原文地址:https://www.cnblogs.com/itelite/p/2238865.html
Copyright © 2011-2022 走看看