您的位置:首页 > 其它

颜色、字体对话框使用实例

2008-07-11 17:58 344 查看
1. 实例说明

单文档MFC工程。程序初始时,在客户区窗口显示一行文字和一个圆。当执行“设置”→“颜色”时,会弹出颜色对话框,选择颜色关闭后,圆的颜色将改变。当执行“字体”时,会弹出字体对话框,选择字体大小、颜色等,确定后将改变文字。

运行结果:













2. 实现代码

class CCommonDlgDemoView : public CView

{

……

// Attributes

public:

CCommonDlgDemoDoc* GetDocument();

COLORREF crColor; // 圆的颜色

COLORREF fntColor; // 字体颜色

LOGFONT fnt; // 字体结构

}

CCommonDlgDemoView::CCommonDlgDemoView()

{

crColor = RGB(255, 0, 0); // 圆的初始颜色红色

fntColor = RGB(0, 0, 255); // 字体的初始颜色蓝色

memset( &fnt, 0, sizeof(LOGFONT) );

fnt.lfHeight = 30; // 字体初始高度30

fnt.lfWeight = 400; // 初始字体浓淡

strcpy(fnt.lfFaceName, "Arial"); // 初始字体名称

}

void CCommonDlgDemoView::OnDraw(CDC* pDC)

{

CCommonDlgDemoDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

CPen mypen;

CPen* oldPen;

mypen.CreatePen(PS_SOLID, 3, crColor); // 创建画笔

oldPen = pDC->SelectObject(&mypen); // 载入画笔

pDC->Ellipse(100, 100, 250, 250); // 画圆

pDC->SelectObject(oldPen);

CFont myfont;

CFont* oldFont;

myfont.CreateFontIndirect(&fnt); // 创建字体

oldFont = pDC->SelectObject(&myfont); // 载入字体

pDC->SetTextColor(fntColor); // 字体的颜色

pDC->TextOut(50, 50, "字体对话框设置字体"); // 输出文字

pDC->SelectObject(oldFont);

}

void CCommonDlgDemoView::OnColor()

{

// TODO: Add your command handler code here

CColorDialog colordialog(crColor, CC_FULLOPEN); // 初始化颜色对话框对象

if(colordialog.DoModal() == IDOK) // 创建颜色对话框

{

crColor = colordialog.m_cc.rgbResult;

Invalidate(TRUE); // 重绘窗口

}

}

void CCommonDlgDemoView::OnFont()

{

// TODO: Add your command handler code here

CFontDialog fontdialog(&fnt); // 初始化字体对象

fontdialog.m_cf.rgbColors = fntColor; // 字体对话框初始化

if(fontdialog.DoModal() == IDOK) // 显示字体对话框

{

fontdialog.GetCurrentFont(&fnt); // 获取字体信息

fntColor = fontdialog.GetColor(); // 获取字体颜色

Invalidate(TRUE); // 重绘窗口

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐