CColorDialog
具有用于显示系统定义颜色的列表的对话框
CColorDialog 对象是具有用于显示系统定义颜色的列表的对话框
数据成员
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 对象。
参数
示例
// 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();
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++)
{
GetRValue(ccolor[i]),
GetGValue(ccolor[i]),
GetBValue(ccolor[i]));
}
}
4、CColorDialog::SetCurrentColor
void SetCurrentColor( COLORREF clr );
强制当前颜色选择到指定的颜色。
参数
备注
此功能称为从消息处理程序或 OnColorOK的内部。 对话框将自动更新基于 clr 参数值的用户的选择。
属性
CColorDialog::OnColorOK
virtual BOOL OnColorOK( );
验证颜色的重写联接对话框。
返回值
非零,如果对话框不应关闭;否则接受输入颜色为0。
备注
重写此函数,只有在要为用户提供在颜色对话框中选择颜色的自定义验证。
用户可以通过以下两种方法之一选择颜色:
重写 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)
{
// 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
最新修订时间:2023-07-08 16:41
目录
概述
数据成员
参考资料