C++: Windows KeyBoard MSG Parsing

Posted: 一月 11, 2008 in 技術相關
標籤:,

要 Parse KeyBoard 輸入的按鍵時…

舉例來說 要擋掉使用者按下 “ESC" or “ENTER" 時視窗會被關掉

首先在 .h 檔內定義

virtual BOOL PreTranslateMessage(MSG* pMsg);

而後於 .cpp 檔中 加入如下 function


BOOL CxxxxxDlg::PreTranslateMessage(MSG* pMsg)
{
    if(pMsg->message == WM_KEYDOWN)
    {
        switch(pMsg->wParam)
        {
        case VK_ESCAPE:
            return TRUE;
            break;
        case VK_RETURN:
            return TRUE;
            break;
        }
    }
    return CDialog::PreTranslateMessage(pMsg);
}

此 Function 會抓 Windows Message …故程式在抓到 鍵盤按下指令(WM_KEYDOWN)時 …會去判斷是否為 “ESC" or “ENTER" 鍵 然後擋掉

相對應之 VK_XXXXX 都定義在 WINUSER.H 這個 std:header 中 …

因此利用此技巧 可以做許多變化….

迴響
  1. po 說道:

    感激不盡~~
    相當受用的分享

  2. brain 說道:

    不客氣囉 ~
    有意見 也歡迎多交流 ^^

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s