青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

面對現實,超越自己
逆水行舟,不進則退
posts - 269,comments - 32,trackbacks - 0

MSDN中解釋:
Determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.

Syntax

SHORT WINAPI GetAsyncKeyState(   _In_  int vKey );

Parameters

vKey [in]

Type: int

The virtual-key code. For more information, see Virtual Key Codes.

You can use left- and right-distinguishing constants to specify certain keys. See the Remarks section for further information.

Return value

Type: SHORT

If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last behavior; for more information, see the Remarks.

The return value is zero for the following cases:

  • The current desktop is not the active desktop
  • The foreground thread belongs to another process and the desktop does not allow the hook or the journal record. 


    以下轉自:http://bingtears.iteye.com/blog/663149

    0x8000 & GetKeyState(VK_SHIFT); 這句是判斷是否有按下shift鍵 

    為什么GetAsyncKeyState()& 

    首先說明,有好多程序或書上是0x8000f,這個f不是十六進制的f而是代表浮點數。其實& 8000才是本質。小魚我整理后自己寫了點東西,總結一下 


    首先介紹一下幾個概念: 
    按位與運算符"&":是雙目運算符,其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。例如:0x11 & 0x12(即0001 0001 & 0001 0010)的結果是0x10(0001 0000);(關于vs取反參考附) 
    虛鍵:指的是非字母可以明確表示的鍵.(例如ESC BS TAB NumLock 等,虛鍵列表見附); 
    物理鍵狀態:在操作系統的控制面板中設置鼠標左右鍵的映射(實際的鼠標左鍵可以映射成右鍵點擊事件),或者通過程序也可以這樣設置,這樣就產生了(實際的)物理鍵狀態; 
    邏輯鍵狀態:使用 GetKeyState,GetKeyboardState,等函數得到的邏輯鍵狀態,模擬按下按鍵; 
    GetAsyncKeyState函數功能:讀取的是物理鍵狀態,也是就是不管你怎么鼠標鍵盤映射,它只讀取實際的按鍵狀態。MSDN上給出了例子很恰當For example, the call GetAsyncKeyState(VK_LBUTTON) always returns the state of the left physical mouse button, regardless of whether it is mapped to the left or right logical mouse button.也就是說如果你重新設置了映射,GetAsyncKeyState還是只讀取物理狀態; 
    GetAsyncKeyState的返回值:表示兩個內容,一個是最高位bit的值,代表這個鍵是否被按下,按下為1,抬起為0;一個是最低位bit的值,在windowsCE下要忽略(參考自MSDNIf the most significant bit is set, the key is down. The least significant bit is not valid in Windows CE, and should be ignored.) 
    Asynchronous:英文意思是異步的 

    實際當中GetAsyncKeyState的返回值是什么呢?小魚我寫了個程序來獲取返回值: 
    #include <Windows.h> 
    #include <stdio.h> 

    void main() 

    while(1) 

    short a = ::GetAsyncKeyState(VK_LSHIFT) 
    printf( "0x%x",a); 
    sleep(10); 


    當然,用MessageBox可以這樣寫: 
    if(short a = ::GetAsyncKeyState(VK_LSHIFT)) 

    char buffer[30]; 
    sprintf(buffer, "0x%x",a); 
    MessageBox(0, buffer, "a的值", MB_OK); 


    GetAsyncKeyState按鍵不按或抬起后不按的返回值0x0        即0000 0000 0000 0000 0000 0000 0000 0000 
    GetAsyncKeyState按鍵被按下后的返回值    返回0xffff8001 即1111 1111 1111 1111 1000 0000 0000 0001   (這里并不是返回4字節,而是%x打印出32位,前十六位補f) 
    0x8000 即0000 0000 0000 0000 1000 0000 0000 0000 
    GetAsyncKeyState(VK_LSHIFT) & 0x8000    返回0x1          即0000 0000 0000 0000 1000 0000 0000 0000 

    那么為什么GetAsyncKeyState要 ‘與’上 0x8000這個常數呢? 
    答案是:獲取按鍵狀態,屏蔽掉其他的可能狀態,按照MSDN上說低位should ignore。 
    網上有人這樣寫,意思很明確: 
    #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) 
    #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1) 

    程序應該是: 
    if(GetAsyncKeyState(VK_LSHIFT)&&0x8000) 
    對于虛鍵而言下面這樣寫邏輯是不對的,雖然結果一樣: 
    if(GetAsyncKeyState(VK_LSHIFT)) 

    所以讓鍵盤的"上下左右"出發事件可以這樣寫: 
    if( ::GetAsyncKeyState(VK_LEFT) & 0x8000 ) 
    code... 
    if( ::GetAsyncKeyState(VK_RIGHT)& 0x8000 ) 
    code... 
    if( ::GetAsyncKeyState(VK_UP) & 0x8000 ) 
    code... 
    if( ::GetAsyncKeyState(VK_DOWN) & 0x8000 ) 
    code... 

    關于GetAsyncKeyState與GetKeyState區別: 
    GetAsyncKeyState上面已經講差不多了,關于GetAsyncKeyState與GetKeyState二者最大區別:GetAsyncKeyState在按鍵不按的情況下為0,而GetKeyState在按鍵不按的情況下開始為0,當一次‘按下抬起’后變為1,依次循環。 

    SHORT GetKeyState(int nVirtKey   // virtual-key code); 
    作用:返回鍵的狀態,按下、釋放或鎖定(down、up or toggled) 
    參數:虛擬鍵代碼(VK_)。如果是字母a-z、A-Z 或數字0-9, 則為其對應的ASCII碼(比如字母O的ASCII碼為十六進制的0x4F) 
    返回值:返回碼的高位顯示當前是否有鍵被按下,低位(0位)則顯示NumLock、CapsLock、ScrollLock的狀態(ON或OFF,為ON時鍵盤指示燈亮)。即高位為1,返回值小于0,說明有鍵按下;最低位為1表示處于鎖定(ON)狀態(參考MSDN:If the high-order bit is 1, the key is down; otherwise, it is up. 
    If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is turned on. The key is off and untoggled if the low-order bit is 0. A toggle key's indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled. ) 
    注:此函數不應該在鍵盤消息處理程序以外使用,因為它返回的信息只有在鍵盤消息從消息隊列中被檢索到之后才有效。若確實需要,請使用GetAsyncKeyState 

    ---------------------------------------- 
    網上還找到了一些資料: 

    關于和其他的幾個函數的區別: 
    SHORT GetKeyState(int nVirtKey); 
    SHORT GetAsyncKeyState(int vKey); 
    BOOL GetKeyboardState(PBYTE lpKeyState); 

    三個取key status的函數的最大區別是: 
    第一個:是從windows消息隊列中取得鍵盤消息,返回key status. 
    第二個:是直接偵測鍵盤的硬件中斷,返回key status. 
    第三個:是當從windows消息隊列中移除鍵盤消息時,才返回key status. 

    keybd_event函數,是模擬鍵盤擊鍵,一次完整的擊鍵模擬事件,是"按下"和"彈起"兩個消息,所以 keybd_event(VK_F12,0,0,0);keybd_event(VK_F12,0,KEYEVENTF_KEYUP,0); 完成了一次完整的點擊 F12 的事件。 

    GetAsyncKeyState()函數,是直接偵測鍵盤的硬件中斷。(有些人說,是一種“實時性”的偵測,這種說法,感覺不對,比如你調用 Sleep(),就算是中斷一年的時間,只要在這期間程序還在運行,它都可以把那個鍵的狀態偵測出來)。自上一次調用GetAsyncKeyState()函數以來(在某些循環中,N次調用GetAsyncKeyState(),它每次檢查的,都是自上次調用之后,鍵的狀態),若鍵已被按過,則返回1,否則,返回0;有些資料顯示:倘若輸入焦點從屬于與調用函數的輸入線程不同的另一個線程,則返回零(例如,在另一個程序擁有輸入焦點時,應該返回零)。實驗證明,這種說法并不完全,函數實際是在大部份范圍內工作的,只有少數是另外)。 
posted on 2012-11-23 15:55 王海光 閱讀(1948) 評論(0)  編輯 收藏 引用 所屬分類: MFC
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            免费一区视频| 久久性天堂网| 国产精品私房写真福利视频 | 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲一区亚洲二区| 亚洲性夜色噜噜噜7777| 亚洲欧美日韩精品综合在线观看| 亚洲一区二区三区乱码aⅴ| av成人免费在线| 午夜精品久久久久久久白皮肤 | 久久青草久久| 欧美高清在线观看| 99视频一区二区三区| 亚洲久久成人| 亚洲桃色在线一区| 久久福利一区| 国产精品亚洲精品| 亚洲一区三区视频在线观看| 久久本道综合色狠狠五月| 免费中文字幕日韩欧美| 欧美偷拍另类| 激情综合亚洲| 一区二区高清在线| 久久久亚洲国产美女国产盗摄| 久久这里只有| 亚洲影院免费观看| 欧美日本乱大交xxxxx| 国产日本亚洲高清| 亚洲精品一二三| 久久人体大胆视频| 夜夜夜久久久| 欧美成人有码| 黄网动漫久久久| 欧美一区网站| 99香蕉国产精品偷在线观看| 久久久久一区二区三区| 国产精品手机在线| 99精品热视频| 亚洲高清自拍| 久久国产精品色婷婷| 国产精品亚洲综合| 国产精品99久久久久久久久久久久| 免费观看国产成人| 欧美一级在线亚洲天堂| 国产精品久久久久久久久久久久久| 亚洲激情专区| 久久综合九色欧美综合狠狠| 亚洲在线成人| 国产精品乱码妇女bbbb| 亚洲图片欧美一区| 亚洲乱码日产精品bd| 欧美电影免费观看高清完整版| 激情久久久久久久| 米奇777超碰欧美日韩亚洲| 久久精品国产精品 | 欧美韩国在线| 最新国产乱人伦偷精品免费网站| 久久久久久久久久看片| 亚洲欧美日韩一区二区三区在线 | 国产伦精品一区二区三区在线观看 | 久久色在线观看| 国产专区综合网| 久久精品国产视频| 欧美一区二区日韩一区二区| 亚洲激情欧美激情| 欧美激情导航| 久久超碰97人人做人人爱| 国产精品日本精品| 性欧美在线看片a免费观看| 亚洲一二区在线| 国产精品久久久久久久久动漫| 亚洲欧美色婷婷| 香蕉尹人综合在线观看| 红杏aⅴ成人免费视频| 老司机免费视频一区二区三区| 久久日韩精品| 一区二区国产日产| 99天天综合性| 国产欧美一区二区精品婷婷| 欧美在线影院在线视频| 久久福利一区| 日韩亚洲欧美中文三级| 亚洲无线一线二线三线区别av| 国产视频亚洲精品| 欧美激情第六页| 欧美日韩亚洲不卡| 久久精品国产精品亚洲综合| 久久综合久久综合这里只有精品| 一本色道久久综合一区 | 久久国产天堂福利天堂| 久久久久**毛片大全| 亚洲日韩欧美一区二区在线| 99精品视频网| 精品电影一区| 亚洲乱码日产精品bd| 国产一区二区三区精品久久久| 欧美激情一区二区久久久| 国产精品久久久久久久久免费樱桃 | 亚洲国产精品123| 国产精品色网| 91久久夜色精品国产九色| 国产精品美女久久久浪潮软件| 女人香蕉久久**毛片精品| 国产精品v亚洲精品v日韩精品| 久久久青草青青国产亚洲免观| 欧美日韩成人精品| 欧美黄色aa电影| 国语精品中文字幕| 一区二区欧美在线| 亚洲美女毛片| 久久精品99| 欧美一级大片在线观看| 欧美另类99xxxxx| 免费h精品视频在线播放| 国产精品网站视频| 亚洲乱码国产乱码精品精可以看| 亚洲国产精品传媒在线观看| 午夜视黄欧洲亚洲| 中文无字幕一区二区三区| 免费观看成人www动漫视频| 久久精品九九| 国产欧美日韩精品丝袜高跟鞋| 国产精品卡一卡二| 精品动漫一区| 亚洲欧美日韩人成在线播放| 亚洲一区二区三| 欧美精品成人一区二区在线观看| 久久午夜视频| 狠狠综合久久| 久久精品国产99精品国产亚洲性色 | 亚洲人成网站色ww在线| 亚洲高清不卡在线| 久久视频一区二区| 蜜桃久久av一区| 伊人精品视频| 欧美波霸影院| 亚洲黄色成人网| 亚洲免费观看高清完整版在线观看熊| 久久亚洲私人国产精品va| 老色鬼久久亚洲一区二区 | 国产精品美女久久久浪潮软件| 日韩视频一区二区三区在线播放免费观看 | 国产在线日韩| 欧美影院成人| 久久全国免费视频| 亚洲高清毛片| 欧美激情久久久久久| 亚洲欧洲另类| 午夜国产不卡在线观看视频| 国产精品日韩一区二区| 亚洲欧美日韩一区二区三区在线| 久久精品视频在线观看| 亚洲激情在线激情| 国产精品福利av| 亚洲嫩草精品久久| 久久综合九色九九| 99在线精品视频| 国产日本欧美一区二区三区| 乱码第一页成人| av成人福利| 久久人人爽人人| 日韩一级在线观看| 国产精品蜜臀在线观看| 久久精品视频导航| 亚洲欧洲精品一区二区精品久久久 | 亚洲伦理自拍| 在线一区二区三区四区五区| 国产麻豆综合| 久久久亚洲国产天美传媒修理工| 亚洲人成免费| 久久久噜噜噜久久中文字幕色伊伊 | 日韩亚洲精品视频| 国产性色一区二区| 欧美精品久久99| 欧美网站在线观看| 91久久精品www人人做人人爽| 中文成人激情娱乐网| 国产亚洲欧洲997久久综合| 欧美精品久久久久a| 欧美专区在线| 一本久久综合| 欧美成人性网| 欧美在线观看视频在线| 亚洲精品国产视频| 国产自产精品| 国产精品视频导航| 欧美激情精品久久久久久免费印度| 午夜精品婷婷| 9久re热视频在线精品| 欧美成人亚洲| 久久一日本道色综合久久| 亚洲专区一区二区三区| 亚洲精品一区中文| 亚洲成色精品| 国内精品久久久久久久果冻传媒| 欧美性色视频在线| 欧美裸体一区二区三区| 免费91麻豆精品国产自产在线观看| 午夜精品久久久久久久男人的天堂| 99re6这里只有精品|