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

             

            久久国产精品无码HDAV| 久久国产亚洲高清观看| 久久精品中文字幕大胸| 亚洲AV无码1区2区久久| 91久久精品国产91性色也| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 99久久精品国产高清一区二区| 久久亚洲国产精品一区二区| 伊人久久亚洲综合影院| 久久久久中文字幕| 久久亚洲精品国产亚洲老地址| 久久精品国产亚洲AV高清热| 久久精品18| 亚洲国产精品久久久久婷婷老年| 国内精品九九久久精品| 久久久久久综合一区中文字幕| 99精品久久久久久久婷婷| 91精品日韩人妻无码久久不卡| 色偷偷偷久久伊人大杳蕉| 日日狠狠久久偷偷色综合0| 久久成人影院精品777| 午夜不卡久久精品无码免费| 亚洲欧美精品一区久久中文字幕| 91精品国产91久久久久久| 99久久精品日本一区二区免费| 久久国产欧美日韩精品| 久久香综合精品久久伊人| 久久这里有精品视频| 久久亚洲国产成人精品无码区| 国产精品VIDEOSSEX久久发布| AAA级久久久精品无码片| 久久天天躁狠狠躁夜夜躁2O2O| 亚洲αv久久久噜噜噜噜噜| 99蜜桃臀久久久欧美精品网站| 性做久久久久久久久老女人| 亚洲国产精品一区二区三区久久| 精品水蜜桃久久久久久久| 国内精品久久久久久久影视麻豆| 亚洲国产精品久久久久婷婷老年| 国产激情久久久久影院小草| 久久精品二区|