• <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>

            天行健 君子當自強而不息

            把鼠標問題解決了!

            很簡單,就是在WinProc函數里增加一個WM_ACTIVATE消息處理,然后調用ClipCursor來限制鼠標的可移動范圍.
            好像WIN32沒有直接將RECT從client坐標轉換成screen坐標的,所以我自己寫了這么個函數.
            當然這里給出的代碼并不是高效的,GetSystemMetrics不應該在WinProc里調用,但這里只是給出了一種解決方案,暫不考慮代碼執行效率的問題.

            //-------------------------------------------------------------------------
            // Translates rect from client coordinate to screen coordinate.
            //-------------------------------------------------------------------------
            void RectFromClientToScreen(LPRECT rect)
            {
            ????POINT tmp;
            ?
            ????tmp.x = rect->left;
            ????tmp.y = rect->top;

            ????ClientToScreen(g_mainWindowHandle, &tmp);

            ????rect->left = tmp.x;
            ????rect->top? = tmp.y;

            ????tmp.x = rect->right;
            ????tmp.y = rect->bottom;

            ????ClientToScreen(g_mainWindowHandle, &tmp);

            ????rect->right? = tmp.x;
            ????rect->bottom = tmp.y;
            }

            //-------------------------------------------------------------------------
            // Main windows event procedure.
            //-------------------------------------------------------------------------
            LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
            {
            ??? PAINTSTRUCT ps;???? // used in WM_APINT
            ??? HDC hdc;??????????? // handle to a device context

            ????int screenWidth? = GetSystemMetrics(SM_CXSCREEN);
            ????int screenHeight = GetSystemMetrics(SM_CYSCREEN);
            ?
            ????RECT screenRect = {0, 0, screenWidth, screenHeight};
            ????RECT clientRect;?
            ?
            ????// what is the message
            ????switch (msg)
            ????{
            ????case WM_CREATE:
            ????????// do initialization stuff here
            ????????return 0;
            ????case WM_PAINT:
            ????????// start painting
            ????????hdc = BeginPaint(hwnd, &ps);
            ????????// end painting
            ????????EndPaint(hwnd, &ps);
            ????????return 0;
            ????case WM_ACTIVATE:
            ???????if(LOWORD(wParam) == WA_ACTIVE)
            ???????{
            ??????????GetClientRect(g_mainWindowHandle, &clientRect);???
            ??????????RectFromClientToScreen(&clientRect);???
            ??????????ClipCursor(&clientRect);
            ???????}
            ??? else if(LOWORD(wParam) == WA_INACTIVE)
            ?????? ClipCursor(&screenRect);
            ???????break;
            ????case WM_DESTROY:
            ??????? // kill the application
            ??????? PostQuitMessage(0);
            ??????? return 0;
            ??? }

            ??? // process any messages that we did not take care of
            ??? return DefWindowProc(hwnd, msg, wParam, lParam);
            }

            posted on 2007-03-14 23:48 lovedday 閱讀(216) 評論(0)  編輯 收藏 引用

            公告

            導航

            統計

            常用鏈接

            隨筆分類(178)

            3D游戲編程相關鏈接

            搜索

            最新評論

            国产福利电影一区二区三区,免费久久久久久久精 | 性做久久久久久久久浪潮| 99久久无码一区人妻| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 久久久久亚洲精品天堂久久久久久| 欧美一区二区精品久久| 久久影视综合亚洲| 亚洲性久久久影院| 热re99久久精品国99热| 国产精品青草久久久久福利99 | 久久亚洲2019中文字幕| 亚洲国产成人久久一区WWW| 日日噜噜夜夜狠狠久久丁香五月| 青青草国产成人久久91网| 合区精品久久久中文字幕一区 | 久久无码AV一区二区三区| 精品久久久无码人妻中文字幕豆芽 | 性高湖久久久久久久久AAAAA| 久久天天躁狠狠躁夜夜avapp| 欧美无乱码久久久免费午夜一区二区三区中文字幕| 久久久久亚洲国产| 亚洲午夜精品久久久久久人妖| 久久久无码精品亚洲日韩京东传媒 | 国产亚洲综合久久系列| 亚洲精品久久久www| 久久综合综合久久97色| 亚洲精品无码成人片久久| 色8激情欧美成人久久综合电| 久久久91精品国产一区二区三区 | 久久久久人妻一区精品| 久久99久久99精品免视看动漫| 伊人情人综合成人久久网小说| 国产精品一区二区久久精品无码 | 99久久精品免费看国产| 成人妇女免费播放久久久| 久久夜色精品国产网站| 亚洲色欲久久久综合网东京热| 久久中文字幕无码专区| 日批日出水久久亚洲精品tv| 久久久WWW成人免费毛片| 久久久人妻精品无码一区|