函式原型:
CWnd::OnCharafx_msg void OnChar( UINT nChar, UINT nRepCnt, UINT nFlags );
afx_msg沒有具體含義。只是為了方便系統找到訊息映射函式。
參數意義:define UINT unsigned int 無符號整數
UINT nChar:鍵盤的字元碼值。
UINT nRepCnt 擊鍵的次數
nFlags 包含掃描碼,轉換碼等。
意義如下圖所示:
Value | Meaning |
0-15 | Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user holding down the key. |
16-23 | Specifies the scan code. The value depends on the original equipment manufacturer (OEM) |
24 | Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0. |
25-28 | Used internally by Windows. |
29 | Specifies the context code. The value is 1 if the ALT key is held down while the key is pressed; otherwise, the value is 0. |
30 | Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is 0 if the key is up. |
31 | Specifies the transition state. The value is 1 if the key is being released, or it is 0 if the key is being pressed. |
參數: (中文)
nChar 包含了鍵的字元代碼值。 nRepCnt 包含了重複計數,當用戶按下鍵時重複的擊鍵數目。 nFlags 包含了掃描碼,鍵暫態碼,以前的鍵狀態以及上下文代碼,如下面的列表所示: 值 含義 0--15 指定了重複計數。其值是用戶按下鍵時重複的擊鍵數目 16--23 指定了掃描碼。其值依賴於原始設備製造商(OEM) 24 指明該鍵是否是擴展鍵,如增強的101或102鍵盤上右邊的ALT或CTRL鍵如果它是個擴展鍵,則該值為1;否則,值為0 25--28 Windows內部使用 29 指定了上下文代碼。如果按鍵時ALT鍵是按下的,則該值為1;否則,值為0 30 指定了以前的鍵狀態。如果在傳送訊息前鍵是按下的,則值為1;如果鍵是彈起的,則值為0 31 指定了鍵的暫態。如果該鍵正被放開,則值為1,如果鍵正被按下,則該值為0 |
說明:
當擊鍵被轉換為非系統字元時,框架調用這個成員函式。這個函式是在OnKeyUp成員函式之前,OnKeyDown成員之後調用的。OnChar包含了被按下或放開的鍵值。
由於按鍵和產生的OnChar調用不必是一一對應的,因此nFlags中的信息對應用程式通常是沒有用的。NFlags中的信息僅對最近在OnChar之前調用的OnKeyUp成員函式或OnKeyDown成員函式有用。
對於IBM增強型101和102鍵鍵盤,鍵盤的主體部分的增強鍵是右邊的ALT和CTRL鍵;還有數字鍵盤左側的INS,DEL,HOME,END,PAGE UP,PAGE DOWN以及箭頭鍵等;以及數字鍵盤上的斜槓(/)和ENTER鍵。其它鍵盤可能會支持nFlags中的擴展鍵位。
注意:
框架調用這個成員函式以允許你的應用程式處理一個Windows訊息。傳遞給你的成員函式的參數反映了接收到訊息時框架接收到的參數。如果你調用了這個函式的基類實現,則該實現將使用最初傳遞給訊息的參數(而不是你提供給這個函式的參數)。
請參閱:WM_CHAR, WM_KEYDOWN, WM_KEYUP