VC++MFC編程2.ppt_第1頁
VC++MFC編程2.ppt_第2頁
VC++MFC編程2.ppt_第3頁
VC++MFC編程2.ppt_第4頁
VC++MFC編程2.ppt_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、VC+MFC編程(2),文本顯示,Windows可以顯示很多數(shù)據(jù),包括在窗口中顯示文本信息。由于文本是以圖像的形式顯示在窗口中的,因此需要處理設(shè)備描述表(DC),另外還需要對文本字體的處理,包括:文本的顯示、文本的顏色、字符的間距和文本的對齊方式等。,(1)文本顯示 在擁有一個(gè)設(shè)備描述表以后,就可以調(diào)用TextOut()函數(shù)來顯示文本行。例如: pDC-TextOut(20,20,This is a line of text.); TextOut()函數(shù)的三個(gè)參數(shù)分別是輸出文本的X坐標(biāo)和Y坐標(biāo)以及輸出文本串。,(2)設(shè)置文本顏色 在默認(rèn)情況下,Windows繪制黑色文本??梢酝ㄟ^SetText

2、Color()函數(shù)改變文本的顏色。例如: CDC *pDC=GetDC(); /聲明一個(gè)設(shè)備描述表pDC pDC-SetTextColor(RGB(0,255, 0); /設(shè)置文本顏色為綠色 可以通過GetTextColor()函數(shù)檢索到當(dāng)前文本的顏色,例如: COLORREF color=pDC-GetTextColor(); SetBkColor()和GetBkColor()函數(shù)用于設(shè)置背景顏色和獲取當(dāng)前的背景顏色。,(2)設(shè)置字符間距 SetTextCharacterExtra()函數(shù)用來設(shè)置文本字符的間距,GetTextCharacterExtra()用來獲得當(dāng)前文本字符的間距,函數(shù)說

3、明如下: pDC- SetTextCharacterExtra(space); int space=pDC- GetTextCharacterExtra(); 其中,space表示在文本字符之間使用的額外空間的像素?cái)?shù)。,(3)設(shè)置文本的對齊方式 SetTextAlign()函數(shù)用于設(shè)置顯示文本的對齊方式,函數(shù)說明如下: pDC-SetTextAlign(alignment); 其中,alignment參數(shù)取值:TA_LEFT、TA_CENTER和TA_RIGHT,分別表示左對齊、居中方法和右對齊。Alignment參數(shù)取值:TA_TOP、TA_BOTTOM和TA_BASELINE分別表示文本在

4、垂直方向的對齊方式,上對齊、下對齊和字符的基線對齊。,鼠標(biāo)編程,在圖形操作系統(tǒng)中,鼠標(biāo)是最重要的輸入設(shè)備之一。Windows系統(tǒng)為用戶提供了統(tǒng)一的鼠標(biāo)編程接口,而不必過多了解其底層的知識。Windows是基于消息傳遞、事件驅(qū)動(dòng)的操作系統(tǒng),當(dāng)用戶移動(dòng)鼠標(biāo)、按下或釋放鼠標(biāo)鍵時(shí)都會(huì)產(chǎn)生鼠標(biāo)消息。應(yīng)用程序可以接收10種鼠標(biāo)消息,下表列出了這些鼠標(biāo)消息和它們的描述。,鼠標(biāo)消息處理 MFC把鼠標(biāo)消息處理函數(shù)封裝在CView類中,它們分別是: OnMouseMove(UINT nFlags, CPoint point); OnLButtonDblclk(UINT nFlags, CPoint point);

5、 OnLButtonDown(UINT nFlags, CPoint point); OnLButtonUp(UINT nFlags, CPoint point);,分別對應(yīng)上表中10個(gè)鼠標(biāo)消息。在鼠標(biāo)處理函數(shù)中,point參數(shù)代表鼠標(biāo)熱點(diǎn)處的坐標(biāo)位置,point.x為橫坐標(biāo),point.y為縱坐標(biāo)。默認(rèn)坐標(biāo)原點(diǎn)(0,0)位于窗口的左上角。,nFlags參數(shù)中包含了鼠標(biāo)按鈕和鍵盤組合使用標(biāo)志,用來描述鼠標(biāo)按鈕和鍵盤上的Shift鍵和Ctrl鍵的組合狀態(tài)。nFlag參數(shù)取值范圍: MK_LBUTTON:鼠標(biāo)左鍵被按下; MK_RBUTTON:鼠標(biāo)右鍵被按下; MK_MBUTTON:鼠標(biāo)中鍵被按下

6、; MK_SHIFT:鍵盤上的Shift鍵被按下; MK_CONTROL:鍵盤上的Ctrl鍵被按下; 如果想知道某個(gè)鍵是否被按下,可用對應(yīng)的位屏蔽值與nFlags參數(shù)作按位邏輯“與”運(yùn)算,所的結(jié)果若為非零值,則表示該按鈕被按下,例如: if (nFlags 如何區(qū)分兩次單擊和一次雙擊,這取決于兩次按下按鈕之間的時(shí)間間隔,只有當(dāng)時(shí)間間隔小于一定值時(shí)才被認(rèn)為是一次雙擊。Windows默認(rèn)的時(shí)間為500ms。可以用SetDoubleClickTime()函數(shù)來重新設(shè)置時(shí)間間隔值。,捕捉鼠標(biāo),在交互式圖形程序設(shè)計(jì)中,經(jīng)常要使用鼠標(biāo)的位置拾取、拖動(dòng)或拖放,這些動(dòng)作必須進(jìn)行鼠標(biāo)的捕捉。 鼠標(biāo)捕捉只需要調(diào)用

7、CWnd:SetCapture()函數(shù)。用戶完成鼠標(biāo)捕捉工作后一般是響應(yīng)一個(gè)鼠標(biāo)按下信息,要釋放鼠標(biāo)捕捉則是調(diào)用CWnd:ReleaseCapture()函數(shù)。釋放被捕捉鼠標(biāo)的最好時(shí)間是在響應(yīng)鼠標(biāo)彈起的時(shí)候(WM_LBUTTON)。,鼠標(biāo)編程綜合示例,示例1:在窗口中以文本的形式給出鼠標(biāo)的狀態(tài),即當(dāng)鼠標(biāo)移動(dòng)時(shí),給出鼠標(biāo)的位置;當(dāng)鼠標(biāo)按下鼠標(biāo)左、右鍵時(shí)顯示出鼠標(biāo)按鍵狀態(tài)。例如,當(dāng)鼠標(biāo)左鍵按下時(shí),顯示“LBUTTON DOWN!”。,第一步:建立一個(gè)myMouse工程文件; 第二步:添加鼠標(biāo)事件處理函數(shù) 鼠標(biāo)右擊視圖類(如CmyMouseView),選擇“add windows message h

8、andler”,彈出事件處理函數(shù)列表窗口,如圖所示,從左邊事件消息列表中選擇“WM_LBUTTONDOWN”,然后單擊“Add and Edit”按鈕,即加入鼠標(biāo)左鍵按下事件函數(shù),并要求編輯事件處理程序。,第四步:重復(fù)第二步和第三步,分別添加WM_LBUTTONUP,WM_MOUSEMOVE,WM_RBUTTONDOWN,WM_RBUTTONUP,WM_LBUTTONDBCLK, WM_RBUTTONDBCLK鼠標(biāo)事件,并輸入以下程序:,void CMouseView:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message

9、 handler code here and/or call default CDC *pDC=GetDC(); pDC-TextOut(20,40,LButton UP!); CView:OnLButtonUp(nFlags, point); void CMouseView:OnRButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default CDC *pDC=GetDC(); pDC-TextOut(20,60,RButton Down!); CView

10、:OnRButtonDown(nFlags, point); void CMouseView:OnRButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default CDC *pDC=GetDC(); pDC-TextOut(20,40,RButton UP!); CView:OnRButtonUp(nFlags, point); ,void CMouseView:OnMouseMove(UINT nFlags, CPoint point) / TODO: Add

11、 your message handler code here and/or call default CDC *pDC=GetDC(); char tbuf80; sprintf(tbuf,Position:(%3d,%3d),point.x,point.y); / 輸出鼠標(biāo)當(dāng)前位置 pDC-TextOut(20,20,tbuf); CView:OnMouseMove(nFlags, point); void CMouseView:OnLButtonDblClk(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default CDC *pDC=GetDC(); pDC-TextOut(20,80,LButton is double clicked!); CView:OnLButtonDblClk(nFlags, point); void CMouseView:OnRButtonDblClk(UINT nFlags, CPoint point) /

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論