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

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);     // 重绘窗口

         }

     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值