All articles(网络文学目录) All Pictures(图片目录) All Softwares(软件目录)

 
visual c++中CColorDialog对话框的制作

Writer: qq Article type: Programming skills(编程技巧) Time: 2014/7/9 22:38:46 Browse times: 304 Comment times: 0

visual c++中CColorDialog对话框的制作


Head photo

Go homepage
Upload pictures
Write articles

visual c++中CColorDialog对话框的制作

CColorDialog对话框
CColorDialog是一个比较常用的对话框,它的功能是返回一种用户选择的颜色。CColorDialog对话框界面如图1所示。

图1 CcolorDialo g对话框
CColorDialog类中常用的成员函数如表1所示。

表1 CColorDialog类中常用的成员函数
函 数 名
说 明
GetColor
返回用户在对话框中选择颜色
GetSavedCustomColors
返回用户自定义的颜色
CColorDialog提供了GetColor成员函数,它可以返回用户在对话框中选择颜色。
请看下面的例子,制作一个可以显示用户选择颜色的类。

图2中界面上有很8个小格,每个小格填充了一种颜色,当用户单击某小格时,就会弹出如图1所示的CColorDialog对话框。用户在CColorDialog对话框中选择一种颜色,单击“确定”按钮,界面中的小格便显示出所选颜色。
图2 CColorDialog类的使用
根据对功能的分析,抽象出类的原型:
class CColorButton : public CButton
{
public:
CColorButton(COLORREF color=RGB(255,255,255));
virtual ~CColorButton();
private:
COLORREF m_Color;
//http://www.isstudy.com
};

CColorButton类继承CButton的特征,构造函数CColorButton为面板(小格)默认设置了一种颜色。成员变量m_Color记录当前面板(小格)的颜色。
当用户单击面板(小格)区域时,激活CColorDialog类对象。这需要添加消息响应函数。由于前面已经介绍过如何添加消息响应函数,这里不再重复。
在消息响应函数中添加如下代码:
void CColorButton::OnClicked()
{
CColorDialog ColorDlg;
ColorDlg.DoModal(); //显示颜色选择框
COLORREF thisColor=ColorDlg.GetColor(); //获取选择的颜色
if(thisColor==NULL) //判断是否为空
//http://www.isstudy.com
return;
m_Color=thisColor; //记录新颜色
this->Invalidate(true);
}
重载虚函数DrawItem,重新绘制类的外观。
void CColorButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CRect rect,Clrect;
rect=lpDrawItemStruct->rcItem;
CDC* pDC=::CDC::FromHandle(lpDrawItemStruct->hDC);
CBrush brush;
//http://www.isstudy.com
brush.CreateSolidBrush(m_Color); //将用户选中颜色载入笔刷
Clrect.SetRect(rect.left+2,rect.top+2,rect.right-2,rect.bottom-2);
//绘制3D边框
pDC->Draw3dRect(&rect,GetSysColor(COLOR_3DSHADOW),GetSysColor(COLOR_3DHILIGHT));
pDC->FillRect(&Clrect,&brush); //填充所选颜色
brush.DeleteObject();
}
向对话框资源中添加8个CColorButton类对象,注意,需要将Owner draw设置为True。按Ctrl+F5运行程序即可。





There are 0 records,
Comment:
Must be registered users to comment(必须是注册用户才能发表评论)

Disclaimer Privacy Policy About us Site Map
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.