資源描述:
《vc++實驗五 mfc 鼠標(biāo)和鍵盤編程實驗》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、實驗五MFC鼠標(biāo)和鍵盤編程實驗一、預(yù)備知識1、鍵盤在應(yīng)用程序中的應(yīng)用(1)鍵盤消息按鍵消息:按下或松開一個鍵時就產(chǎn)生了一按鍵消息。字符消息:一個按鍵的組合產(chǎn)生了一個可以顯示的字符時,就產(chǎn)生了一個字符消息。消息類型含義WM_KEYDOWN非系統(tǒng)按下了非系統(tǒng)鍵消息WM_KEYUP非系統(tǒng)按下了非系統(tǒng)鍵消息WM_SYSKEYDOWN系統(tǒng)按下了系統(tǒng)鍵消息WM_SYSKEYUP系統(tǒng)松開了系統(tǒng)鍵消息(2)按鍵消息的兩個參數(shù)wParam:包含了識別按下的鍵的虛鍵碼。lParam(32位的變量):重復(fù)計數(shù)位(0~15位)、OEM掃描碼
2、(16~23位)、擴展鍵標(biāo)志(24位)、保留位(25~28位)、關(guān)聯(lián)碼(29位)、鍵的先前狀態(tài)(位30)、轉(zhuǎn)換狀態(tài)(31位)。(3)字符消息系統(tǒng)字符消息:WM_SYSKEYDOWN和WM_SYSKEYUP按鍵消息只能產(chǎn)生系統(tǒng)消息。非系統(tǒng)字符消息:WM_KEYDOWN和WM_KEYUP的按鍵消息只能產(chǎn)生非系統(tǒng)消息。消息類型含義WM_CHAR非系統(tǒng)按下了非系統(tǒng)鍵消息WM_DEADCHAR非系統(tǒng)按下了非系統(tǒng)鍵消息WM_SYSCHAR系統(tǒng)按下了系統(tǒng)鍵消息WM_SYSDEADCHAR系統(tǒng)松開了系統(tǒng)鍵消息2、鼠標(biāo)在應(yīng)用程序中的應(yīng)
3、用鼠標(biāo)作為定位輸入設(shè)備,通過鼠標(biāo)單擊、雙擊和拖動功能,用戶可以很容易地操作基于Windows圖形界面的應(yīng)用程序。Windows中通過光標(biāo)來指示當(dāng)前鼠標(biāo)的位置,在Windows操作系統(tǒng)中預(yù)定義了15幾種光標(biāo),并在相關(guān)頭文件中加以定義。代表預(yù)定義光標(biāo)的常量光標(biāo)屬性描述IDC_ARROW箭頭光標(biāo)IDC_CROSS十字光標(biāo)IDC_IBEAMI形文本光標(biāo)IDC_ICON空圖標(biāo)IDC_SIZEALL十字箭頭光標(biāo)IDC_SIZENESW帶有指向東北方和西南方箭頭的光標(biāo)IDC_SIZENS帶有指向北方和南方箭頭的光標(biāo)IDC_SIZE
4、NWSE帶有指向西北方和東南方箭頭的光標(biāo)IDC_SIZEWE帶有指向東方和西方箭頭的光標(biāo)IDC_UPARROW垂直箭頭光標(biāo)IDC_WAIT計時光標(biāo)(也稱沙漏光標(biāo))(1)鼠標(biāo)消息鼠標(biāo)消息的長字參數(shù)lParam包含了鼠標(biāo)位置(相當(dāng)于窗口的左上角為原點的坐標(biāo)值)。低位包含鼠標(biāo)位置的x坐標(biāo)值,高位包含鼠標(biāo)位置的y坐標(biāo)。字參數(shù)wParam包含了指示各種虛鍵狀態(tài)的值值含義MK_CONTROL按下鍵按上的Ctrl鍵MK_LBUTTON按下了鼠標(biāo)左鍵,等同與WM_LBUTTONDOWNMK_MBUTTON按下了鼠標(biāo)中鍵,等同與WM_
5、MBUTTONDOWNMK_RBUTTON按下了鼠標(biāo)右鍵,等同與WM_RBUTTONDOWNMK_SHIFT按下鍵盤上的Shift鍵(2)對于鼠標(biāo)消息的處理監(jiān)測Shift和Ctrl鍵caseWM_LBUTTONDOWN://按下鼠標(biāo)左鍵if((wParam&MK_CONTROL)&&(wParam&MK_SHIFT))…//Shift和Ctrl鍵都被按下break;caseWM_LBUTTONUP://釋放鼠標(biāo)左鍵…break;…二、實驗?zāi)康?1)掌握在VisualStudio的程序調(diào)試方法。(2)掌握MFC消息映射
6、的操作步驟;(3)掌握在MFC程序中處理鍵盤和鼠標(biāo)消息的方法;三、實驗內(nèi)容請編寫程序,要求如下:(1)在屏幕上繪制一個矩形,并將舉行內(nèi)部劃分成4個矩形區(qū)域;(2)在矩形內(nèi)移動鼠標(biāo)時,在上面劃分的4個區(qū)域中顯示不同的光標(biāo),并在屏幕左上角顯示光標(biāo)坐標(biāo);(3)當(dāng)用戶按下SHIFT和CTRL鍵時,顯示一個消息框,提示用戶按下的是哪個鍵。四、實驗結(jié)果(1)列出消息處理程序代碼清單頭文件Demo.h:#include"afxwin.h"classCDemoWnd:publicCFrameWnd{public:CDemoWnd()
7、;~CDemoWnd();public:LRESULTOnPaint(WPARAMwParam,LPARAMlParam);LRESULTOnMouseMove(WPARAMwParam,LPARAMlParam);LRESULTOnKeyDown(WPARAMwParam,LPARAMlParam);DECLARE_MESSAGE_MAP()public://定義兩個整形變量,用來記錄鼠標(biāo)的位置intm_nX0;intm_nY0;};classCDemoApp:publicCWinApp{public:BOOLIn
8、itInstance();};CDemoApptheApp;源文件Demo.cpp:#include"Demo.h"http://構(gòu)造函數(shù)CDemoWnd::CDemoWnd(){intm_nX0=0;intm_nY0=0;}//析構(gòu)函數(shù)CDemoWnd::~CDemoWnd(){}//消息映射宏聲明要處理的消息BEGIN_MESSAGE_MAP(CDe