上一節(jié)中雞啄米主要講的是畫(huà)筆CPen的用法,前面也說(shuō)了,GDI對(duì)象中最常用的就是畫(huà)筆和畫(huà)刷,本節(jié)就講講畫(huà)刷CBrush。
雞啄米依然是通過(guò)實(shí)例的方式來(lái)說(shuō)明畫(huà)刷的用法。此實(shí)例要實(shí)現(xiàn)的功能是,對(duì)話框上有一個(gè)按鈕控件和一個(gè)圖片控件,點(diǎn)擊按鈕彈出顏色對(duì)話框,然后在顏色對(duì)話框中選擇顏色并點(diǎn)擊“確定”后,圖片控件中將顯示選擇的顏色。
其實(shí)此實(shí)例的功能,還可以通過(guò)重載對(duì)話框WM_CTLCOLOR消息的響應(yīng)函數(shù)等方法來(lái)實(shí)現(xiàn),但為講解畫(huà)刷的CBrush的使用,雞啄米采用了下面代碼中的方法。
以下是此實(shí)例的具體實(shí)施步驟:
1、創(chuàng)建一個(gè)基于對(duì)話框的MFC工程,名字設(shè)為“Example51”。
2、在自動(dòng)生成的對(duì)話框模板IDD_EXAMPLE51_DIALOG中,刪除“TODO: Place dialog controls here.”靜態(tài)文本框,添加一個(gè)按鈕控件和一個(gè)Picture控件,ID分別設(shè)為IDC_COLOR_SEL_BUTTON和IDC_COLOR_SHOW_STATIC,按鈕控件的Caption屬性設(shè)為“選擇顏色”,此時(shí)對(duì)話框模板如下圖所示:
3、為Picture控件IDC_COLOR_SHOW_STATIC添加CStatic變量,名稱設(shè)為m_picColor。
4、在對(duì)話框模板中雙擊“選擇顏色”按鈕,為其添加點(diǎn)擊消息的響應(yīng)函數(shù)CExample51Dlg::OnBnClickedColorSelButton(),修改該函數(shù)的實(shí)現(xiàn)如下:
代碼中已經(jīng)加了詳細(xì)的注釋,不過(guò)雞啄米覺(jué)得有必要再簡(jiǎn)單介紹下CClientDC類。CClientDC類是CDC類的派生類,它生成的設(shè)備上下文對(duì)應(yīng)于窗口的客戶區(qū),另一個(gè)類CWindowDC也是CDC類的派生類,它對(duì)應(yīng)的則包括客戶區(qū)和非客戶區(qū),也就是說(shuō),CClientDC只能在客戶區(qū)繪圖,而CWindowDC可在客戶區(qū)和非客戶區(qū)繪圖。
講到這里,有人會(huì)問(wèn),到底什么是客戶區(qū),什么是非客戶區(qū)?非客戶區(qū)包括窗口中的標(biāo)題欄、菜單欄、狀態(tài)欄、滾動(dòng)條、邊框等區(qū)域,客戶區(qū)就是除去非客戶區(qū)之外的區(qū)域。
5、編譯運(yùn)行程序,在結(jié)果對(duì)話框中,點(diǎn)擊“選擇顏色”按鈕彈出顏色對(duì)話框,并選擇顏色后,效果如下圖:
雞啄米提醒大家,如果有什么函數(shù)或類的用法不是很清楚,均可以查閱MSDN。最后祝大家學(xué)習(xí)工作順利,有事沒(méi)事多來(lái)雞啄米逛逛,呵呵。
聯(lián)系客服