• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 311, comments - 0, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            要創建一個無標題欄的窗口很簡單,使用如下代碼即可:
            HWND hwnd = ::CreateWindowEx(NULL,
                                                                    szClassName,
                                                                    “無標題欄窗口”
                                                                    //創建無標題欄窗口所要用的樣式
                                                                    WS_POPUP | WS_SYSMENU | WS_SIZEBOX,
                                                                    100, //窗口所在屏幕上的 x 坐標
                                                                    100, //窗口所在屏幕上的 y 坐標
                                                                    300, //窗口的寬度
                                                                    300, //窗口的高度
                                                                    NULL,
                                                                    NULL,
                                                                    hInstance,
                                                                    NULL)
            但是沒有標題欄的窗口不能被用戶移動,也不能比較方便地關閉.
            在 Windows下,每一個鼠標信息都是由 WM_NCHITTEST 消息產生的,這個參數包含了鼠標位置的信息,通常情況下,這個消息都交給 DefWindowProc 函數處理,這個函數會返回一個值來表示鼠標按下的部分,如果鼠標單擊窗口標題欄,處理 WM_NCHITTEST 消息的 DefWindowProc 函數會返回 HTCAPTION ,然后 Windows 會向該窗口發送 WM_NCLBUTTONDOWN 消息,如果 DefWindowProc 返回值是 HTCLIENT ,Windows 就將屏幕坐標轉化成窗戶區坐標,并且通過 WM_LBUTTONDOWN 消息傳遞給用戶,為了能在窗戶區移動窗口,必須讓 Windows 認為是在標題欄移動窗口,實現代碼如下:

             

            #include <windows.h>
             
             
            LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
             
            int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
            {
                 
            char *szClassName = "WndClass";
                 WNDCLASSEX wndclass;
                 wndclass.cbSize 
            = sizeof(wndclass);
                 wndclass.style 
            = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
                 wndclass.lpfnWndProc 
            = WndProc;
                 wndclass.cbClsExtra 
            = 0;
                 wndclass.cbWndExtra 
            = 0;
                 wndclass.hIcon 
            = ::LoadIcon(NULL,IDI_APPLICATION);
                 wndclass.hCursor 
            = ::LoadCursor(NULL,IDC_ARROW);
                 wndclass.hbrBackground 
            = (HBRUSH)::CreateSolidBrush(RGB(255,255,255));
                 wndclass.hInstance 
            = hInstance;
                 wndclass.lpszClassName 
            = szClassName;
                 wndclass.lpszMenuName 
            = NULL;
                 wndclass.hIconSm 
            = NULL;
                 
                 ::RegisterClassEx(
            &wndclass);
                 HWND hwnd 
            = ::CreateWindowEx(0,
                                                 szClassName,
                                                 
            "移動窗口",
                                                 WS_POPUP 
            | WS_SYSMENU | WS_SIZEBOX,
                                                 
            100,
                                                 
            100,
                                                 
            300,
                                                 
            300,
                                                 
            0,
                                                 
            0,
                                                 hInstance,
                                                 NULL);
                 
            if(hwnd == NULL)
                 {
                     ::MessageBox(NULL,
            "創建窗口出錯","error",MB_OK);
                     
            return -1;
                 }
                 ::ShowWindow(hwnd,nCmdShow);
                 ::UpdateWindow(hwnd);
                 MSG msg;
                 
            while(::GetMessage(&msg,NULL,0,0))
                 {
                     ::TranslateMessage(
            &msg);
                     ::DispatchMessage(
            &msg);
                 }
                 ::DeleteObject(wndclass.hbrBackground);
                 
            return msg.wParam;
            }
             
            LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
            {
                 
            switch(msg)
                 {
                 
                 
            case WM_PAINT:
                     {
                          PAINTSTRUCT ps;
                          HDC hdc 
            = ::BeginPaint(hwnd,&ps);
                          ::EndPaint(hwnd,
            &ps);
                          
            return 0;
                     }
                 
            case WM_NCHITTEST:
                     {
                          UINT nHitTest;
                          nHitTest 
            = ::DefWindowProc(hwnd,msg,wParam,lParam);
                          
            //如果鼠標左鍵按下, GetAsyncKeyState 的返回值小于0
                          if(nHitTest == HTCLIENT && ::GetAsyncKeyState(MK_LBUTTON) < 0)
                          {
                               nHitTest 
            = HTCAPTION;
                          }
                          
            return nHitTest;
                     }
             
                 
            case WM_DESTROY:
                     {
                          ::PostQuitMessage(
            0);
                          
            return 0;
                     }
                 }
                 
            return ::DefWindowProc(hwnd,msg,wParam,lParam);
            }

             

            久久久国产精华液| 欧美久久久久久午夜精品| 久久久久人妻精品一区二区三区| 欧美大香线蕉线伊人久久| 99久久亚洲综合精品成人| 国产精品久久久久a影院| 99久久精品毛片免费播放| 国产精品久久新婚兰兰| 久久er99热精品一区二区| 亚洲国产成人精品无码久久久久久综合 | 亚洲综合久久夜AV | avtt天堂网久久精品| 亚洲国产视频久久| 久久精品夜色噜噜亚洲A∨| 国产精品久久亚洲不卡动漫| 亚洲精品乱码久久久久久蜜桃| 91精品国产91久久久久福利| 久久久无码精品亚洲日韩蜜臀浪潮| 色综合合久久天天综合绕视看| 人妻精品久久久久中文字幕一冢本| 国产精品久久久久乳精品爆| 国内精品久久久久久99蜜桃 | 少妇久久久久久被弄到高潮| 色综合久久综精品| 精品久久777| 成人国内精品久久久久影院| 久久人人爽爽爽人久久久| 97精品国产97久久久久久免费| 久久精品桃花综合| 99久久免费国产精品特黄| 国产精品久久婷婷六月丁香| 亚洲中文字幕伊人久久无码| 久久受www免费人成_看片中文| 久久久久久国产精品美女| 久久中文字幕无码专区| 久久99热这里只有精品66| 精品综合久久久久久98| 亚洲午夜无码久久久久| 亚洲成色WWW久久网站| 国产精品美女久久久久久2018| 国产美女久久精品香蕉69|