• <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>
            Dragon  
            Dragon
            日歷
            <2008年9月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011
            統計
            • 隨筆 - 58
            • 文章 - 0
            • 評論 - 55
            • 引用 - 0

            導航

            常用鏈接

            留言簿(3)

            隨筆分類(58)

            隨筆檔案(58)

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

             

            PreTranslateMessage和GetKeyState的一點理解:
                MSDN上的:如果消息完全由PreTranslateMessage就返回非零值,并不再進一步處理.如果消息將以正常的方式處理,就返回零值.
                當我新建一個基于對話框的工程,并加了OnkeyDown函數,再加如下代碼想要實現Ctrl+left組合鍵,但沒有任何反應.
             

             if(nChar==VK_LEFT && ::GetKeyState(VK_CONTROL)<0)   
             
            {   
              MessageBox(
            "left","test",MB_OK);   
             }

             

                上網查了資料都是在PreTranslateMessage對消息進行判斷,雖然最好的方法是在這里實現,但我比較喜歡嘗試,想在這里實現.
            網上都說在PreTranslateMessage實現,我就在我的工程中去看看PreTranslateMessage函數,當我查了MSDN后終于明白了,我的消息
            全由默認的函數處理了,到OnkeyDown函數中就處理不了了,我把PreTranslateMessage函數改成下面的樣子就可以了!

            BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) 
            {
             
            // TODO: Add your specialized code here and/or call the base class
               
             
            return 0;//CDialog::PreTranslateMessage(pMsg);
            }

             


                這里還有一個問題,關于GetKeyState的,查MSDN后知道它的返回值有三種狀態的,有按下和彈起以及類似于大小寫轉鍵的觸發態.
            但在這里我們不用到觸發態,按下返回負值,彈起返回正值,如果上面我們沒有對GetKeyState的返回值判斷正負:
            當你第一次按左鍵時,也會彈出一個對話框,原因是GetKeyState返回非零值;
            若你第一次按Ctrl+left時也會彈出對話框,但第二次不用按Ctrl只按左鍵也會彈出對話框,因為你那時已經觸發了Ctrl鍵,再按一次
            Ctrl+left;下次按left就不會彈出對話框了,那時Ctrl失效了!(這里是失效還是彈起分不清代,調試看它的返回值,應該是彈出,因為
            按下Ctrl的值時它的值都在-127和-128兩值變化,即最高位(the high-order bit)是1,最低位(the low-order bit)恒為1)
            但感覺上還是失效,不然也不用第二次來恢復Ctrl的使用!!!!!!!
            所以上面的GetKeyState必須判斷返回值的正負!

            posted on 2008-10-28 16:21 Dragon 閱讀(2179) 評論(0)  編輯 收藏 引用 所屬分類: VC
             
            Copyright © Dragon Powered by: 博客園 模板提供:滬江博客
            亚洲精品99久久久久中文字幕| 要久久爱在线免费观看| 7777久久亚洲中文字幕| 久久美女人爽女人爽| 狠狠精品久久久无码中文字幕| 欧美久久天天综合香蕉伊| 久久久SS麻豆欧美国产日韩| 色婷婷综合久久久久中文一区二区| 热99re久久国超精品首页| 久久人做人爽一区二区三区| 狠狠久久亚洲欧美专区| 2020久久精品亚洲热综合一本| 久久亚洲精品国产精品| 人妻系列无码专区久久五月天| 老色鬼久久亚洲AV综合| 久久青青草原精品国产软件| 99国产欧美精品久久久蜜芽| 中文字幕精品久久| 久久精品国产精品亚洲人人| 99热成人精品热久久669| 蜜桃麻豆WWW久久囤产精品| 99久久婷婷国产综合精品草原| 亚洲精品无码久久久久sm| 青青久久精品国产免费看| 日韩精品国产自在久久现线拍 | 91久久精品国产成人久久| 久久天天躁狠狠躁夜夜avapp | 精品国产一区二区三区久久久狼| 久久成人精品| 99久久精品国产综合一区| 久久久青草青青亚洲国产免观| 99国产欧美久久久精品蜜芽| 久久久久久久亚洲Av无码| 久久精品国产色蜜蜜麻豆| 久久婷婷国产剧情内射白浆| 一本一本久久a久久精品综合麻豆| 久久高清一级毛片| 久久精品中文字幕第23页| 久久久精品久久久久久 | 亚洲美日韩Av中文字幕无码久久久妻妇| 久久伊人精品青青草原高清|