中國石油大學(xué)(華東)VC實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)五_MFC_鼠標(biāo)和鍵盤編程實(shí)驗(yàn) (1)_第1頁
中國石油大學(xué)(華東)VC實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)五_MFC_鼠標(biāo)和鍵盤編程實(shí)驗(yàn) (1)_第2頁
中國石油大學(xué)(華東)VC實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)五_MFC_鼠標(biāo)和鍵盤編程實(shí)驗(yàn) (1)_第3頁
中國石油大學(xué)(華東)VC實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)五_MFC_鼠標(biāo)和鍵盤編程實(shí)驗(yàn) (1)_第4頁
中國石油大學(xué)(華東)VC實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)五_MFC_鼠標(biāo)和鍵盤編程實(shí)驗(yàn) (1)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論