資源描述:
《VC隨筆鼠標(biāo)鍵盤(pán)消息》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、VC隨筆鼠標(biāo)鍵盤(pán)消息添加左鍵按下鼠標(biāo)消息處理的步驟:1、Ctrl+W打開(kāi)MFCClassWizard對(duì)話框2、在MessageMaps選項(xiàng)卡中,在ClassName下拉列表中選擇CMy2DCADView視圖類,在ObjectIds列表框中選擇第一個(gè)列表項(xiàng)CMy2DCADView,雙擊WM_LBUTTONDOWN消息,就為樹(shù)突類添加上了鼠標(biāo)左鍵按下的消息處理函數(shù)OnLButtonDown了3、單擊MFCClassWizard對(duì)話框中的EditCode按鈕,編輯OnLButtonDown函數(shù)如下:voidCMy2DCADView::OnLButtonDown
2、(UINTnFlags,CPointpoint){?//TODO:Addyourmessagehandlercodehereand/orcalldefault?CClientDCdc(this);?//在視圖區(qū)中輸出文本“鼠標(biāo)左鍵按下”?dc.TextOut(100,100,"鼠標(biāo)左鍵按下");?CView::OnLButtonDown(nFlags,point);}注意:若想知道在按下鼠標(biāo)左鍵的同時(shí)某個(gè)按鈕是否被按下,可以用對(duì)應(yīng)的常量標(biāo)志與nFlags參數(shù)作按位邏輯“與”運(yùn)算,所得結(jié)果若為非零值,則表示按鈕被按下。如對(duì)于Shift按鈕,可以在OnLBu
3、ttonDown函數(shù)中添加下面的代碼:?if(nFlags&MK_SHIFT)?{//檢查在按下鼠標(biāo)左鍵的同時(shí),Shift鍵是否被按下??dc.TextOut(100,50,"Shift鍵被按下");?}?用鼠標(biāo)畫(huà)點(diǎn)和畫(huà)線以簡(jiǎn)單總結(jié)為以下4步:1、分析交互過(guò)程2、添加成員變量。注意成員變量需要初始化3、使用ClassWizard向視圖類中添加相應(yīng)的鼠標(biāo)消息處理函數(shù)4、在函數(shù)中添加代碼畫(huà)點(diǎn):畫(huà)點(diǎn)是一步交互工程,只需要處理鼠標(biāo)左鍵按下的消息WM_LBUTTONDOWN,并在消息處理函數(shù)里面添加相應(yīng)的代碼就可以了。需要注意的是,需要有一個(gè)變量來(lái)標(biāo)志程序是否出于
4、畫(huà)點(diǎn)狀態(tài),前面已經(jīng)添加了一個(gè)BOOL變量m_bIsPoint,因此無(wú)須重新添加,直接使用就可以了。修改視圖類的OnLButtonDown函數(shù)如下:voidCMy2DCADView::OnLButtonDown(UINTnFlags,CPointpoint){?//TODO:Addyourmessagehandlercodehereand/orcalldefault?CClientDCdc(this);//獲取設(shè)備環(huán)境?////////////////////////////////////////////?//以下的代碼在視圖區(qū)中畫(huà)點(diǎn)//?///////
5、/////////////////////////////////////?if(m_bIsPoint)//如果程序處于畫(huà)點(diǎn)狀態(tài)?{??//調(diào)用CDC::Ellipse函數(shù)以點(diǎn)為中心,畫(huà)一個(gè)小的圓圈??dc.Ellipse(point.x-2,point.y-2,point.x+2,point.y+2);?}?CView::OnLButtonDown(nFlags,point);}注意:由于使用CDC::SetPixel函數(shù)畫(huà)的點(diǎn)太小,只有一個(gè)象素大,不利于觀察,因此使用CDC::Ellipse函數(shù)畫(huà)一個(gè)小圓圈代替。若使用CDC::SetPixel函數(shù),
6、只需把dc.Ellipse(point.x-2,point.y-2,point.x+2,point.y+2);代碼替換為dc.SetPixel(point,RGB(0,0,255));畫(huà)線:(兩次單擊鼠標(biāo)左鍵的方式)同畫(huà)點(diǎn)類似,除了需要有一個(gè)標(biāo)志畫(huà)線狀態(tài)的BOOL變量m_bIsLine以外,還需要一個(gè)操作步數(shù)變量來(lái)標(biāo)志鼠標(biāo)左鍵按下時(shí)定義的是線段的起點(diǎn)還是終點(diǎn),如果是起點(diǎn),則將該點(diǎn)坐標(biāo)值記錄下來(lái),供后續(xù)操作中畫(huà)線段用;如果是終點(diǎn),就將線段畫(huà)出。因此,還需要有兩個(gè)變量來(lái)記錄線段的起點(diǎn)X和Y坐標(biāo)值。具體步驟如下:1、在ClassView窗口中的CMy2DCAD
7、View上單擊鼠標(biāo)右鍵,選擇AddMemberVariable...項(xiàng),添加兩個(gè)記錄線段起點(diǎn)坐標(biāo)值的整型公有成員變量m_nStartX和m_nStartY,然后再添加一個(gè)記錄畫(huà)線段操作步數(shù)的整型公有成員變量m_nStep(第一步為起點(diǎn),第二步為終點(diǎn))。此時(shí)CMy2DCADView類的定義頭文件中應(yīng)該有如下的代碼:public:?intm_nStep;?intm_nStartY;?intm_nStartX;2、在視圖類的構(gòu)造函數(shù)中為新增加的成員變量賦初始值,添加如下代碼:?m_nStep=0;//操作步數(shù)初始為0?m_nStartX=m_nStartY=0
8、;//坐標(biāo)值初始也為03、在視圖類的OnLButtonDown函數(shù)中添加具體的畫(huà)