




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)五 MFC 鼠標(biāo)和鍵盤編程實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?1) 掌握在Visual Studio 的程序調(diào)試方法。(2) 掌握MFC 消息映射的操作步驟;(3) 掌握在MFC 程序中處理鍵盤和鼠標(biāo)消息的方法;二、實(shí)驗(yàn)內(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 鍵時,顯示一個消息框,提示用戶按下的是哪個鍵。三、消息處理程序代碼清單1.頭文件#include "afxwin.h"class CDemoWnd
2、 :public CFrameWndpublic:CDemoWnd();CDemoWnd();public:LRESULT OnPaint(WPARAM wParam, LPARAM lParam);LRESULT OnMouseMove(WPARAM wParam, LPARAM lParam);LRESULT OnKeyDown(WPARAM wParam, LPARAM lParam);DECLARE_MESSAGE_MAP();class CDemoApp :public CWinApppublic:BOOL InitInstance();CDemoApp theApp;2.源文件#i
3、nclude "Demo.h" CDemoWnd:CDemoWnd() / 構(gòu)造函數(shù) CDemoWnd:CDemoWnd() / 析構(gòu)函數(shù)BEGIN_MESSAGE_MAP(CDemoWnd, CFrameWnd)ON_MESSAGE(WM_PAINT, OnPaint)ON_MESSAGE(WM_MOUSEMOVE, OnMouseMove)ON_MESSAGE(WM_KEYDOWN, OnKeyDown)END_MESSAGE_MAP()LRESULT CDemoWnd:OnPaint(WPARAM wParam, LPARAM lParam)CPaintDC dc(t
4、his);dc.Rectangle(50, 50, 450, 450);dc.MoveTo(50, 250);dc.LineTo(450, 250);dc.MoveTo(250, 50);dc.LineTo(250, 450);return 0;LRESULT CDemoWnd:OnMouseMove(WPARAM wParam, LPARAM lParam)int x = 0;int y = 0;x = LOWORD(lParam);y = HIWORD(lParam);HCURSOR hCursor;CString Buffer0, Buffer1;Buffer0.Format("
5、;( %d,%d ", x, y);Buffer1.Format("( %d,%d ) ", x, y);CClientDC dc(this);dc.TextOut(50, 20, Buffer0);dc.TextOut(50, 20, Buffer1);if (x>50 && x<250 && y>50 && y<250)hCursor = theApp.LoadStandardCursor(IDC_IBEAM);SetCursor(hCursor);else if (x>250 &a
6、mp;& x<450 && y>50 && y<250)hCursor = theApp.LoadStandardCursor(IDC_SIZENS);SetCursor(hCursor);else if (x>50 && x<250 && y>250 && y<450)hCursor = theApp.LoadStandardCursor(IDC_SIZENWSE);SetCursor(hCursor);else if (x>250 && x
7、<450 && y>250 && y<450)hCursor = theApp.LoadStandardCursor(IDC_ARROW);SetCursor(hCursor);return 0;LRESULT CDemoWnd:OnKeyDown(WPARAM wParam, LPARAM lParam)CString a1 = "按下CTRL"CString a2 = "按下SHIFT"switch (wParam) case VK_CONTROL:AfxMessageBox(a1, MB_OK, 0
8、);break;case VK_SHIFT:AfxMessageBox(a2, MB_OK, 0);break;return 0;BOOL CDemoApp:InitInstance()CDemoWnd *pMainWnd = new CDemoWnd();pMainWnd->Create(NULL, "Demo Mini-MFC");pMainWnd->ShowWindow(m_nCmdShow);pMainWnd->UpdateWindow();m_pMainWnd = pMainWnd;return TRUE;四、運(yùn)行結(jié)果1.在屏幕上繪制一個矩形,并
9、將舉行內(nèi)部劃分成4 個矩形區(qū)域,在屏幕左上角顯示光標(biāo)坐標(biāo);2. 在矩形內(nèi)移動鼠標(biāo)時,在上面劃分的4 個區(qū)域中顯示不同的光標(biāo),并在屏幕左上角顯示光標(biāo)坐標(biāo);a.鼠標(biāo)在第一個區(qū)域時,顯示I型文本光標(biāo)b. 鼠標(biāo)在第二個區(qū)域時,顯示帶有指向北方和南方箭頭的光標(biāo) c. 鼠標(biāo)在第三個區(qū)域時,顯示帶有指向西北方和東南方箭頭的光標(biāo)d. 鼠標(biāo)在第四個區(qū)域時,顯示箭頭光標(biāo)3.按下CTRL 鍵4.按下SHIFT鍵五、總結(jié)鼠標(biāo)消息、按鍵消息和字符消息的字參數(shù)和長字參數(shù)包含信息的意義以及處理方法按鍵消息:按下或松開一個鍵時就產(chǎn)生了一按鍵消息。字符消息:一個按鍵的組合產(chǎn)生了一個可以顯示的字符時,就產(chǎn)生了一個字符消息。1.
10、鼠標(biāo)消息長字參數(shù)lParam:包含了鼠標(biāo)位置(相當(dāng)于窗口的左上角為原點(diǎn)的坐標(biāo)值)。 低位包含鼠標(biāo)位置的x 坐標(biāo)值,高位包含鼠標(biāo)位置的y 坐標(biāo)。字參數(shù)wParam:包含了指示各種虛鍵狀態(tài)的值對于鼠標(biāo)消息的處理:監(jiān)測Shift 和Ctrl 鍵case WM_LBUTTONDOWN: / 按下鼠標(biāo)左鍵if(wParam&MK_CONTROL)&&(wParam&MK_SHIFT) / Shift 和Ctrl 鍵都被按下break;case WM_LBUTTONUP: / 釋放鼠標(biāo)左鍵break; 2. 按鍵消息字參數(shù)wParam:包含了識別按下的鍵的虛鍵碼。長字參數(shù)l
11、Param(32 位的變量):重復(fù)計(jì)數(shù)位(015 位)、OEM 掃描碼(1623 位)、擴(kuò)展鍵標(biāo)志(24 位)、保留位(2528 位)、關(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)消息。六、實(shí)驗(yàn)總結(jié)通過本次實(shí)驗(yàn),我進(jìn)一步的熟悉了Visual Studio 軟件的開發(fā)環(huán)境,對這個軟件有了更深的了解。熟悉了 Visual Studio開發(fā)環(huán)境, 學(xué)習(xí)和掌握了 MFC消息映射的操作步驟,并且
12、掌握在MFC 程序中處理鍵盤和鼠標(biāo)消息的方法,進(jìn)一步掌握了在Visual Studio中調(diào)試程序的方法。在本次實(shí)驗(yàn)中,我理解了按鍵消息、字符消息、鼠標(biāo)消息的概念,掌握了它們的字參數(shù)和長字參數(shù)包含信息的意義以及處理方法。也學(xué)習(xí)了幾種預(yù)定義光標(biāo)常量的用法,如箭頭光標(biāo)、十字光標(biāo)、I 形文本光標(biāo)、空圖標(biāo)、十字箭頭光標(biāo)、帶有指向東北方和西南方箭頭的光標(biāo)、帶有指向北方和南方箭頭的光標(biāo)、帶有指向西北方和東南方箭頭的光標(biāo)、帶有指向東方和西方箭頭的光標(biāo)、垂直箭頭光標(biāo)、計(jì)時光標(biāo)(也稱沙漏光標(biāo))。在實(shí)驗(yàn)中我也復(fù)習(xí)了以前的實(shí)驗(yàn)中學(xué)到的在Visual Studio 開發(fā)環(huán)境調(diào)試程序的方法,并且可以更加熟練的應(yīng)用其來修改程序。在實(shí)驗(yàn)過程中,我也遇到了一些困難,比如不夠
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 超速行駛與交通安全管理培訓(xùn)課件
- 肺全切除術(shù)護(hù)理常規(guī)
- 銷售助理培訓(xùn)總結(jié)
- 面肌痙攣治療
- 風(fēng)濕性心臟病患者的護(hù)理
- AIGC商業(yè)應(yīng)用實(shí)戰(zhàn)教程 課件 6-2 AIGC商業(yè)圖像衍生應(yīng)用
- 膽道殘余結(jié)石治療
- 康復(fù)行業(yè)研究報(bào)告
- 資產(chǎn)相關(guān)業(yè)務(wù)培訓(xùn)
- 零售商業(yè)環(huán)境分析表格
- 珍珠的質(zhì)量分級及評估
- 低壓電器基礎(chǔ)-固態(tài)繼電器(電氣控制課件)
- 港口散裝液體危險(xiǎn)化學(xué)品港口經(jīng)營人的裝卸管理人員從業(yè)資格考試
- 供應(yīng)商年度評價(jià)內(nèi)容及評分表
- 公務(wù)用車申請表
- 分層過程審核(LPA)檢查表
- 學(xué)生信息登記表
- 標(biāo)準(zhǔn)作業(yè)指導(dǎo)書模板(SOP)
- 四川省抗菌藥物臨床應(yīng)用分級管理目錄2022年版
- 五年級道德與法治下冊 (我參與我奉獻(xiàn))新課件
- 我的家鄉(xiāng)湖北宜昌介紹宜昌城市介紹課件
評論
0/150
提交評論