WM_KEYDOWN訊息

按下非系統按鍵時,張貼至具有鍵盤焦點的視窗。 非系統按鍵是未按下 ALT 鍵時所按下的按鍵。

#define WM_KEYDOWN                      0x0100

參數

wParam

非系統金鑰的虛擬金鑰代碼。 請參閱 虛擬金鑰代碼

lParam

重複計數、掃描程式碼、擴充金鑰旗標、內容程式碼、先前的索引鍵狀態旗標和轉換狀態旗標,如下所示。

Bits 意義
0-15 目前訊息的重複計數。 值是使用者按住按鍵而自動回復的次數。 如果擊鍵夠長,就會傳送多個訊息。 不過,重複計數不是累計的。
16-23 掃描碼。 此值取決於 OEM。
24 指出按鍵是否為擴充按鍵,例如出現在增強型 101 或 102 鍵鍵盤上的右鍵 ALT 和 CTRL 鍵。 如果它是擴充索引鍵,則值為 1;否則為 0。
25-28 保留;請勿使用 。
29 內容程式碼。 WM_KEYDOWN 訊息的值 一律為 0。
30 上一個索引鍵狀態。 如果索引鍵在傳送訊息之前關閉,則值為 1,如果索引鍵已啟動則為零。
31 轉換狀態。 WM_KEYDOWN 訊息的值 一律為 0。

如需詳細資訊,請參閱 擊鍵訊息旗標

傳回值

如果應用程式處理此訊息,應用程式應該會傳回零。

範例

LRESULT CALLBACK HostWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message) 
    {
    case WM_KEYDOWN:
        if (wParam == VK_ESCAPE)
        {
            if (isFullScreen) 
            {
                GoPartialScreen();
            }
        }
        break;

    // ...
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;  
}

GitHub 上的 Windows 傳統範例

備註

如果按下 F10 鍵, DefWindowProc 函式會設定內部旗標。 當 DefWindowProc收到WM_KEYUP訊息時,函式會檢查是否已設定內部旗標,如果是的話,會將WM_SYSCOMMAND訊息傳送至最上層視窗。 訊息 的 WM_SYSCOMMAND 參數會設定為 SC_KEYMENU。

由於自動回復功能,在張貼 WM_KEYUP 訊息之前,可能會張貼一個以上的 WM_KEYDOWN 訊息。 先前的索引鍵狀態 (位 30) 可用來判斷 WM_KEYDOWN 訊息指出第一個向下轉換或重複向下轉換。

針對增強的 101 和 102 鍵鍵盤,擴充按鍵是鍵盤主要區段的右 ALT 和 CTRL 鍵;數位鍵台左邊叢集中的 INS、DEL、HOME、END、PAGE UP、PAGE DOWN 和方向鍵;和 數位鍵控制板中的除 (/) 和 ENTER 鍵。 其他鍵盤可能支援 lParam 參數中的擴充按鍵位。

應用程式必須將 wParam 傳遞至 TranslateMessage ,而不會完全改變它。

規格需求

需求
最低支援的用戶端
Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限桌面應用程式]
標頭
Winuser.h (包括 Windows.h)

另請參閱