轉(zhuǎn)帖|使用教程|編輯:鮑佳佳|2021-02-18 09:24:31.937|閱讀 529 次
概述:在上一節(jié)中為大家講解了字體對話框的使用方法,熟悉了字體對話框,本節(jié)繼續(xù)講另一種通用對話框--顏色對話框。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在上一節(jié)中為大家講解了字體對話框的使用方法,熟悉了字體對話框,本節(jié)繼續(xù)講另一種通用對話框--顏色對話框。
顏色對話框大家肯定也不陌生,我們可以打開它選擇需要的顏色,簡單說,它的作用就是用來選擇顏色。MFC中提供了CColorDialog類封裝了顏色對話框的所有操作,我們可以通過它顯示顏色對話框,并獲取顏色對話框中選擇的顏色。顏色對話框跟字體對話框一樣,也是一種模態(tài)對話框。Xtreme Toolkit Pro:是屢獲殊榮的VC界面庫,是MFC開發(fā)中最全面界面控件套包,它提供了Windows開發(fā)所需要的11種主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。
點(diǎn)擊下載Xtreme Toolkit Pro最新版
CColorDialog類的構(gòu)造函數(shù)
CColorDialog(
COLORREF clrInit = 0,
DWORD dwFlags = 0,
CWnd* pParentWnd = NULL
);
參數(shù)說明:
clrInit:默認(rèn)選擇顏色的顏色值,類型為COLORREF,實際上就是unsigned long類型。如果沒有設(shè)置它的值,則默認(rèn)為RGB(0,0,0),即黑色。
注:RGB(r,g,b)是宏,可以計算顏色值。括號中的三個值分別為紅、綠、藍(lán)分量的值。
dwFlags:自定義顏色對話框功能和外觀的屬性值。詳情可在MSDN中查閱。
pParentWnd:顏色對話框的父窗口的指針。
獲取顏色對話框中所選顏色值
我們使用顏色對話框的最終目的還是要獲得在顏色對話框中選擇的顏色值。為此CColorDialog類的成員函數(shù)GetColor()能夠很好的實現(xiàn)我們的要求。GetColor()函數(shù)的原型為:
COLORREF GetColor( ) const;
它返回所選顏色的COLORREF值。
如果我們想獲得R、G、B各分量的值呢?可以根據(jù)GetColor得到的COLORREF顏色值,通過使用GetRValue、GetGValue和GetBValue三個宏獲得。GetRValue的語法形式為:
BYTE GetRValue(DWORD rgb);
參數(shù)rgb就是COLORREF顏色值,返回值即是R分量值。其他兩個宏的形式與之類似。例如,GetColor()函數(shù)返回的COLORREF為10000,則R分量值就是GetRValue(10000)。
顏色對話框應(yīng)用實例
雞啄米下面給大家做一個顏色對話框的小例子。此例要實現(xiàn)的功能簡單介紹下:生成一個對話框,對話框中放置一個“顏色選擇”按鈕,四個靜態(tài)文本框和四個編輯框。四個靜態(tài)文本框分別顯示Color:、R:、G:、B:,每個靜態(tài)文本框后面跟一個編輯框,分別用來顯示顏色對話框中選擇的顏色值和所選顏色值的紅色分量、綠色分量、藍(lán)色分量。
以下是實例創(chuàng)建的步驟:
1.創(chuàng)建一個基于對話框的MFC工程,名字為“Example19”。
2.在自動生成的主對話框IDD_EXAMPLE19_DIALOG的模板中,刪除“TODO: Place dialog controls here.”靜態(tài)文本框,添加一個按鈕,ID設(shè)為IDC_COLOR_BUTTON,Caption設(shè)為“顏色選擇”,用于顯示顏色對話框來選擇顏色。再添加四個靜態(tài)文本框,ID分別為IDC_COLOR_STATIC、IDC_R_STATIC、IDC_G_STATIC、IDC_B_STATIC,Caption分別設(shè)為“Color:”、“R:”、“G:”、“B:”,然后每個靜態(tài)文本框后添加一個編輯框,四個編輯框的ID分別為IDC_COLOR_EDIT、IDC_R_EDIT、IDC_G_EDIT、IDC_B_EDIT,分別用來顯示顏色對話框中選擇的顏色值和所選顏色值的紅色分量、綠色分量、藍(lán)色分量。
3.為按鈕IDC_COLOR_BUTTON添加點(diǎn)擊消息的消息處理函數(shù)CExample19Dlg::OnBnClickedColorButton()。
4.修改消息處理函數(shù)CExample19Dlg::OnBnClickedColorButton()如下:
C++代碼
void CExample19Dlg::OnBnClickedColorButton() { // TODO: Add your control notification handler code here COLORREF color = RGB(255, 0, 0); // 顏色對話框的初始顏色為紅色 CColorDialog colorDlg(color); // 構(gòu)造顏色對話框,傳入初始顏色值 if (IDOK == colorDlg.DoModal()) // 顯示顏色對話框,并判斷是否點(diǎn)擊了“確定” { color = colorDlg.GetColor(); // 獲取顏色對話框中選擇的顏色值 SetDlgItemInt(IDC_COLOR_EDIT, color); // 在Color編輯框中顯示所選顏色值 SetDlgItemInt(IDC_R_EDIT, GetRValue(color)); // 在R編輯框中顯示所選顏色的R分量值 SetDlgItemInt(IDC_G_EDIT, GetGValue(color)); // 在G編輯框中顯示所選顏色的G分量值 SetDlgItemInt(IDC_B_EDIT, GetBValue(color)); // 在B編輯框中顯示所選顏色的B分量值 } }
5.最后編譯運(yùn)行程序,在結(jié)果對話框中點(diǎn)擊“顏色選擇”按鈕,彈出顏色對話框。初始狀態(tài)下,選擇框在紅色上,我們選另一種顏色,此時的顏色對話框如下:
點(diǎn)“確定”,主對話框上的四個編輯框中分別顯示了選擇的顏色值、R分量、G分量和B分量:
我們在實際開發(fā)中,可以用獲取到的顏色值來設(shè)置其他對象的顏色,使用還是很方便的。
關(guān)于顏色對話框就講到這里了。其實各種對話框的使用都有很多相似之處,相信大家越來越熟悉了。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn