1. 程式人生 > >《MFC如何遮蔽ESC和Enter按鍵退出應用程式》

《MFC如何遮蔽ESC和Enter按鍵退出應用程式》

問題描述

建立MFC應用程式的時候,通常可以通過ESC按鍵退出應用程式程式,Enter按鍵來執行當前選中的操作,有時候ESC和Enter有其他的功能,需要遮蔽掉,該怎麼辦呢?MFC其實已經為我們準備好了,我們只需要新增PreTranslateMessage()訊息函式就行了,另外還需要知道按鍵的虛擬鍵值表。

 

新增PreTranslateMessage()訊息函式

1、選擇當前專案的專案名稱,點選滑鼠右鍵,選擇中間的“類嚮導”選項

2、點選類嚮導選項,進入類嚮導頁面,依次選擇虛擬函式PreTranslateMessage

新增函式應用確定,訊息函式就新增到程式碼中去了,注意看下是不是新增錯了,有的時候會新增到CAboutDlg裡面去。

 

3、然後找到 PreTranslateMessage的函式程式碼段,新增程式碼,VK_RETURN為Enter按鍵,VK_ESCAPE為ESC按鍵,VK_TAB為Tab按鍵,VK_PRIOR為Page Up按鍵,這段程式碼的功能是遮蔽掉Enter按鍵、ESC按鍵、Tab按鍵,然後使用Page Up按鍵來控制實驗的停止,如有不同需求,可以參照修改,還有很多按鍵的鍵值請看下面的詳細鍵值表:

/************************************************************************
@函式功能:遮蔽ESC和Enter按鍵退出對話方塊
@建立者:
************************************************************************/
BOOL CFCT200Dlg::PreTranslateMessage(MSG* pMsg)
{
	// TODO: 在此新增專用程式碼和/或呼叫基類
	if ((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_RETURN))
	{
		return TRUE;
	}
	if ((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_ESCAPE))
	{
		return TRUE;
	}
	if ((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_TAB))
	{
		return TRUE;
	}
	if ((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_PRIOR))
	{
		OnBnClickedButtonStopexperiment();          
	}
	return CDialogEx::PreTranslateMessage(pMsg);
}

 

鍵盤鍵值表

常數名稱 十六進位制值 十進位制值 對應按鍵
VK_LBUTTON 01 1 滑鼠的左鍵
VK_RBUTTON 02 2 滑鼠的右鍵
VK-CANCEL 03 3 Ctrl+Break(通常不需要處理)
VK_MBUTTON 04 4 滑鼠的中鍵(三按鍵滑鼠)
VK_BACK 08 8 Backspace鍵
VK_TAB 09 9 Tab鍵
VK_CLEAR 0C 12 Clear鍵(Num Lock關閉時的數字鍵盤5)
VK_RETURN 0D 13 Enter鍵
VK_SHIFT 10 16 Shift鍵
VK_CONTROL 11 17 Ctrl鍵
VK_MENU 12 18 Alt鍵
VK_PAUSE 13 19 Pause鍵
VK_CAPITAL 14 20 Caps Lock鍵
VK_ESCAPE 1B 27 Ese鍵
VK_SPACE 20 32 Spacebar鍵
VK_PRIOR 21 33 Page Up鍵
VK_NEXT 22 34 Page Domw鍵
VK_END 23 35 End鍵
VK_HOME 24 36 Home鍵
VK_LEFT 25 37 LEFT ARROW 鍵(←)
VK_UP 26 38 UP ARROW鍵(↑)
VK_RIGHT 27 39 RIGHT ARROW鍵(→)
VK_DOWN 28 40 DOWN ARROW鍵(↓)
VK_Select 29 41 Select鍵
VK_PRINT 2A 42  
VK_EXECUTE 2B 43 EXECUTE鍵
VK_SNAPSHOT 2C 44 Print Screen鍵(抓屏)
VK_Insert 2D 45 Ins鍵(Num Lock關閉時的數字鍵盤0)
VK_Delete 2E 46 Del鍵(Num Lock關閉時的數字鍵盤.)
VK_HELP 2F 47 Help鍵
VK_0 30 48 0鍵
VK_1 31 49 1鍵
VK_2 32 50 2鍵
VK_3 33 51 3鍵
VK_4 34 52 4鍵
VK_5 35 53 5鍵
VK_6 36 54 6鍵
VK_7 37 55 7鍵
VK_8 38 56 8鍵
VK_9 39 57 9鍵
VK_A 41 65 A鍵
VK_B 42 66 B鍵
VK_C 43 67 C鍵
VK_D 44 68 D鍵
VK_E 45 69 E鍵
VK_F 46 70 F鍵
VK_G 47 71 G鍵
VK_H 48 72 H鍵
VK_I 49 73 I鍵
VK_J 4A 74 J鍵
VK_K 4B 75 K鍵
VK_L 4C 76 L鍵
VK_M 4D 77 M鍵
VK_N 4E 78 N鍵
VK_O 4F 79 O鍵
VK_P 50 80 P鍵
VK_Q 51 81 Q鍵
VK_R 52 82 R鍵
VK_S 53 83 S鍵
VK_T 54 84 T鍵
VK_U 55 85 U鍵
VK_V 56 86 V鍵
VK_W 57 87 W鍵
VK_X 58 88 X鍵
VK_Y 59 89 Y鍵
VK_Z 5A 90 Z鍵
VK_NUMPAD0 60 96 數字鍵0鍵
VK_NUMPAD1 61 97 數字鍵1鍵
VK_NUMPAD2 62 98 數字鍵2鍵
VK_NUMPAD3 62 99 數字鍵3鍵
VK_NUMPAD4 64 100 數字鍵4鍵
VK_NUMPAD5 65 101 數字鍵5鍵
VK_NUMPAD6 66 102 數字鍵6鍵
VK_NUMPAD7 67 103 數字鍵7鍵
VK_NUMPAD8 68 104 數字鍵8鍵
VK_NUMPAD9 69 105 數字鍵9鍵
VK_MULTIPLY 6A 106 數字鍵盤上的*鍵
VK_ADD 6B 107 數字鍵盤上的+鍵
VK_SEPARATOR 6C 108 Separator鍵
VK_SUBTRACT 6D 109 數字鍵盤上的-鍵
VK_DECIMAL 6E 110 數字鍵盤上的.鍵
VK_DIVIDE 6F 111 數字鍵盤上的/鍵
VK_F1 70 112 F1鍵
VK_F2 71 113 F2鍵
VK_F3 72 114 F3鍵
VK_F4 73 115 F4鍵
VK_F5 74 116 F5鍵
VK_F6 75 117 F6鍵
VK_F7 76 118 F7鍵
VK_F8 77 119 F8鍵
VK_F9 78 120 F9鍵
VK_F10 79 121 F10鍵
VK_F11 7A 122 F11鍵
VK_F12 7B 123 F12鍵
VK_NUMLOCK 90 144 Num Lock 鍵
VK_SCROLL 91 145 Scroll Lock鍵
       
上面沒有提到的:(都在大鍵盤)      
VK_LWIN   91 左win鍵
VK_RWIN   92 右win鍵
VK_APPS   93 右Ctrl左邊鍵,點選相當於點選滑鼠右鍵,會彈出快捷選單
    186 ;(分號)
    187 =鍵
    188 ,鍵(逗號)
    189 -鍵(減號)
    190 .鍵(句號)
    191 /鍵
    192 `鍵(Esc下面)
    219 [鍵
    220
    221 ]鍵
    222 ‘鍵(引號)