Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/9 22:38:46
visual c++中CColorDialog对话框的制作

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运行程序即可。


If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759