CColorDialog 對象是具有用於顯示系統定義顏色的列表的對話框。
基本介紹
- 中文名:CColorDialog
- 性質:對話框
- 用途:用於的結構自定義對話框的設定
- 調用方式:使用 m_cc
數據成員,備註,示例,構造函式,參數,示例,操作函式,屬性,備註,
數據成員
CColorDialog::m_cc
CHOOSECOLOR m_cc;
用於的結構自定義對話框的設定。
備註
在構造 CColorDialog 對象之後,可以使用 m_cc 在調用 DoModal 成員函式之前設定對話框的各個方面。
示例
// The code below uses CColorDialog::m_cc data member to
// customize the settings of CColorDialog. The CColorDialog will
// be shown as full open and with red as the selected color.
CColorDialog dlg;
dlg.m_cc.Flags |= CC_FULLOPEN | CC_RGBINIT;
dlg.m_cc.rgbResult = RGB(255, 0, 0);
dlg.DoModal();
構造函式
CColorDialog::CColorDialog
CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL );
構造 CColorDialog 對象。
參數
- lrInit 默認顏色選擇。 如果未指定任何值,則默認值為RGB (0,0,0) (黑色)。
- dwFlags 自定義對話框的功能和外觀的設定標誌。 有關更多信息,請參見 Windows SDK的 CHOOSECOLOR 結構。
- pParentWnd 指針到對話框的父級或所有者視窗。
示例
// Show the Color dialog with all the default settings.
CColorDialog dlg1;
dlg1.DoModal();
// Show the fully opened Color dialog with red as the selected color.
CColorDialog dlg2(RGB(255, 0, 0), CC_FULLOPEN);
dlg2.DoModal();
操作函式
1 、CColorDialog::DoModal
virtual int DoModal( );
顯示顏色對話框以及允許用戶進行選擇。
返回值
IDOK 或 IDCANCEL。 如果 IDCANCEL 返回,則調用Windows CommDlgExtendedError 函式確定是否發生了錯誤。IDOK 和 IDCANCEL 是指示的常數用戶是否選擇了"或"取消"按鈕。
備註
如果要通過設定 m_cc 結構的成員初始化各種顏色對話框選項,則應在調用 DoModal 之前執行此操作,但在對話框中,構造對象之後。
在調用 DoModal後,可以調用其他成員函式由用戶設定或檢索信息輸入到對話框。
2、CColorDialog::GetColor
COLORREF GetColor( ) const;
返回包含選定顏色的值 COLORREF 結構。
返回值
包含顏色的RGB信息的 COLORREF 值在顏色對話框中選定的。
示例
/ Get the selected color from the CColorDialog.
CColorDialog dlg;
if (dlg.DoModal() == IDOK)
{
COLORREF color = dlg.GetColor();
TRACE(_T("RGB value of the selected color - red = %u, ")
_T("green = %u, blue = %u\n"),
GetRValue(color), GetGValue(color), GetBValue(color));
}
3、CColorDialog::GetSavedCustomColors
static COLORREF * GetSavedCustomColors( );
檢索用戶創建的自定義顏色。
返回值
若要存儲自定義顏色的指針16個RGB顏色值由用戶創建的。
備註
GetSavedCustomColors 成員函式提供對這些顏色。 在 DoModal 返回 IDOK後,這些顏色可以檢索。
在返回的數組的16個RGB每個值都初始化為RGB (255,255,255) (白色)。 用戶選擇的自定義顏色僅保存在應用程式中的對話框調用之間。 如果希望保存在應用程式調用之間的這兩種顏色,必須將它們以某種其他方式,例如初始化(.INI)檔案。
示例
// Get a pointer to an array of 16 RGB color values that stores
// custom colors created by the user from CColorDialog.
CColorDialog dlg;
if (dlg.DoModal() == IDOK)
{
COLORREF* ccolor = dlg.GetSavedCustomColors();
for (int i=0; i < 16; i++)
{
TRACE(_T("RGB value of the selected color - red = %u, ")
_T("green = %u, blue = %u\n"),
GetRValue(ccolor[i]),
GetGValue(ccolor[i]),
GetBValue(ccolor[i]));
}
}
4、CColorDialog::SetCurrentColor
void SetCurrentColor( COLORREF clr );
強制當前顏色選擇到指定的顏色。
參數
- clr RGB顏色值。
備註
此功能稱為從訊息處理程式或 OnColorOK的內部。 對話框將自動更新基於 clr 參數值的用戶的選擇。
屬性
CColorDialog::OnColorOK
virtual BOOL OnColorOK( );
驗證顏色的重寫聯接對話框。
返回值
非零,如果對話框不應關閉;否則接受輸入顏色為0。
備註
重寫此函式,只有在要為用戶提供在顏色對話框中選擇顏色的自定義驗證。
用戶可以通過以下兩種方法之一選擇顏色:
- 單擊顏色調色板上。 選定的顏色的RGB值在適當的RGB然後反映編輯框。
- 在RGB的輸入的值編輯框
重寫 OnColorOK 可以拒絕用戶輸入任何特定的原因常用顏色對話框的顏色。
通常,不需要使用此功能,因為框架提供顏色的默認驗證並顯示訊息框,如果一個無效的顏色進行編碼。
可以調用 SetCurrentColor 從 OnColorOK 強制顏色選擇。 在 OnColorOK 會激發時(即用戶單擊接受顏色更改的 好 ),則可以調用 GetColor 獲取新顏色的RGB值。
示例
// Override OnColorOK to validate the color entered to the
// Red, Green, and Blue edit controls. If the color
// is BLACK (i.e. RGB(0, 0,0)), then force the current color
// selection to be the color initially selected when the
// dialog box is created. The color dialog won't close so
// user can enter a new color.
BOOL CMyColorDlg::OnColorOK()
{
// Value in Red edit control.
COLORREF clrref = GetColor();
if (RGB(0, 0, 0) == clrref)
{
AfxMessageBox(_T("BLACK is not an acceptable color. ")
_T("Please enter a color again"));
// GetColor() returns initially selected color.
SetCurrentColor(GetColor());
// Won't dismiss color dialog.
return TRUE;
}
// OK to dismiss color dialog.
return FALSE;
}
備註
CColorDialog 對象是具有用於顯示系統定義顏色的列表的對話框。 當對話框退出時,用戶可以從列表中選擇或創建特殊顏色,然後報告回應用程式。
構造一個CColorDialog對象可以使用類中的構造函式,也可以從類CColorDialog派生一個子類,然後定義自己的構造函式。
在構造了CColorDialog對象後,可以設定或者修改m_cc結構中的任一個值以初始化對話框控制項的值。m_cc是一個CHOOSECOLOR類型的結構。
初始化對話框控制項之後,就可以調用成員函式DoModal來顯示對話框並允許用戶選擇顏色了。DoModal返回用戶對按鈕OK或Cancel的選擇(返回值依次為IDOK,IDCANCEL)。
如果DoModal返回了IDOK,則可以調用CColorDialog的一個成員函式來檢索用戶選擇的顏色信息。
可以使用Windows函式CommDlgExtendedError來檢測對話框初始化時是否發生了錯誤,並取得錯誤的相關信息。
類CColorDialog需要使用Windows3.1或更高版本提供的COMMDLG.DLL檔案。
定製對話框,可以從CColorDialog派生一個子類,提供一個定製的對話框模板,並增加一個訊息映射來處理擴展的控制項發來的通知。所有懸掛的訊息將被送到基類。
不需要定製鉤子函式。
注意:
在某些版本中,如果在框架中使其它的CDialog對象變灰色,CColorDialog對象將不會以灰色背景顯示。
所需頭檔案:#include <afxdlgs.h>