MFC应用实例:[56]自定义窗口设置字体颜色

 时间:2026-02-12 12:23:14

1、新建一个基于对话框的应用程序,工程名为ControlFont。

MFC应用实例:[56]自定义窗口设置字体颜色

2、界面设计如下,添加三个按钮

MFC应用实例:[56]自定义窗口设置字体颜色

3、新建一个Dialog设计如下:

MFC应用实例:[56]自定义窗口设置字体颜色

4、双击“单击我,设置我的颜色。”按钮添加响应函数,响应函数中添加一下代码:

void CControlFontDlg::OnButton1() 

{

// TODO: Add your control notification handler code here

COLORDATE dlg;

if(dlg.DoModal() == IDOK)

{

m_TextColor = RGB(dlg.m_rText, dlg.m_gText, dlg.m_bText);

m_BKColor = RGB(dlg.m_rBG, dlg.m_gBG, dlg.m_bBG);

}

Invalidate(TRUE) ;

}

MFC应用实例:[56]自定义窗口设置字体颜色

5、为CControlFontDlg类添加OnDrawItem()函数,绘制自定义字体的按钮。

在OnDrawItem()函数中添加一下代码:

void CControlFontDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 

{

if(nIDCtl==IDC_BUTTON1) //绘制按钮

{

CDC dc;

RECT rect;

dc.Attach(lpDrawItemStruct ->hDC); // 获取按钮设备描述符

rect = lpDrawItemStruct->rcItem; //保存按钮区域坐标

dc.Draw3dRect(&rect,RGB(255,0,255),RGB(0,0,0)); 

dc.FillSolidRect(&rect,RGB(100,100,255)); //设定按钮背景色

UINT state=lpDrawItemStruct->itemState; //设置按钮状态

if((state & ODS_SELECTED))

dc.DrawEdge(&rect,EDGE_SUNKEN,BF_RECT);

else

dc.DrawEdge(&rect,EDGE_RAISED,BF_RECT);

dc.SetBkColor(m_BKColor); //设置字体背景颜色

dc.SetTextColor(m_TextColor); //设置字体颜色

TCHAR buffer[MAX_PATH]; //绘制字体

ZeroMemory(buffer,MAX_PATH);

::GetWindowText(lpDrawItemStruct->hwndItem,buffer,MAX_PATH);

dc.DrawText(buffer,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE); dc.Detach();

}

}

MFC应用实例:[56]自定义窗口设置字体颜色

6、程序运行如下:

MFC应用实例:[56]自定义窗口设置字体颜色

MFC应用实例:[56]自定义窗口设置字体颜色

  • 怎样在启动Excel时即打开指定的工作薄
  • 图示EXCEL表格vba系列93之编写代码显示等号=
  • Python编程:正则表达式怎么匹配非“大写”字母
  • 如何将记事本的内容变成各种搞怪的图形文字
  • WiFi模块EVB测试板怎么使用?
  • 热门搜索
    龙井茶的功效与作用 紫水晶的功效与作用 防溺水知识 三年级运动会作文 什么叫帽子戏法 公共安全知识 营业员是做什么的 什么是校本研修 什么是职务犯罪 税务知识