版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年通過客戶體驗(yàn)優(yōu)化提高房地產(chǎn)銷售額
- 2026年電氣傳動(dòng)控制系統(tǒng)的項(xiàng)目案例分享
- 2026年年房地產(chǎn)行業(yè)的重要法律法規(guī)
- 2026春招:物流專員面試題及答案
- 貨車司機(jī)安全培訓(xùn)例會(huì)課件
- 貨梯安裝培訓(xùn)課件
- 2026年電子科技大學(xué)成都學(xué)院單招綜合素質(zhì)考試備考題庫帶答案解析
- 2026年德州科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考題庫帶答案解析
- 2026年鶴壁職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試模擬試題帶答案解析
- 賬務(wù)知識講解課件模板
- 飛機(jī)結(jié)構(gòu)與系統(tǒng)專業(yè)復(fù)習(xí)考試題庫 (530題)
- 2024年新疆中考數(shù)學(xué)試卷試題解讀及答案講解課件
- 迎接期末+做自己的英雄 高二上學(xué)期心理健康教育主題班會(huì)
- 招標(biāo)代理服務(wù)服務(wù)方案
- 初一數(shù)學(xué)上冊有理數(shù)加減混合運(yùn)算練習(xí)題及答案(共100題)
- 《檳榔的危害》課件
- 正畸口腔健康宣教課件
- 人工智能在檢驗(yàn)醫(yī)學(xué)中的應(yīng)用
- DB42T2043-2023既有住宅和社區(qū)適老化改造技術(shù)規(guī)范
- 單位消防安全教育培訓(xùn)記錄表
- 江蘇省工程質(zhì)量安全手冊實(shí)施細(xì)則房屋建筑工程篇(2022年版)上冊:質(zhì)量分冊
評論
0/150
提交評論