dx创建窗口,(windows创建窗口)

dx创建窗口,(windows创建窗口)

#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);
}

你可能感兴趣的:(dx创建窗口,(windows创建窗口))