翻译来源:https://www.codeproject.com/Articles/5242/XColorStatic-a-colorizing-static-control

XColor Static是一个简单的基于静态框的控件,它提供字体更改,文本和背景颜色以及图标显示。

介绍

XColor Static是一种通用控件,允许在对话框中显示漂亮的文本。该演示向您展示了可能的文本和图标显示类型:

XColorstatic API

以下是完整的方法列表:CXColorStatic

 
void SetBackgroundColor(COLORREF rgb, BOOL bRedraw = TRUE);
void SetTextColor(COLORREF rgb, BOOL bRedraw = TRUE);
void SetBold(BOOL bFlag, BOOL bRedraw = TRUE);
void SetFont(LPCTSTR lpszFaceName, int nPointSize, BOOL bRedraw = TRUE);
void SetFont(LOGFONT *pLogFont, BOOL bRedraw = TRUE);
void SetFont(CFont *pFont, BOOL bRedraw = TRUE);
void SetIcon(HICON hIcon, BOOL bRedraw = TRUE);
void SetMargins(int x, int y) { m_nXMargin = x; m_nYMargin = y; }

如何使用

要将XColor Static集成到应用程序中,首先需要将以下文件添加到您的项目中:

  • XColorstatic.cpp
  • XColor static.h
  • FontSize.cpp
  • FontSize.h

然后使用资源编辑器将静态控件添加到对话框中,并使用类向导将成员变量附加到该控件。请注意,添加静态控件时,您必须将其命名为除。IDC_STATIC

接下来,包含头文件XColor static .H在对话框的头文件。然后用。现在你准备开始使用XColor Static

用法

  1. BOOL CXColorStaticTestDlg::OnInitDialog()
  2. {
  3. CDialog::OnInitDialog();
  4. // Add "About..." menu item to system menu.
  5. // IDM_ABOUTBOX must be in the system command range.
  6. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  7. ASSERT(IDM_ABOUTBOX < 0xF000);
  8. CMenu* pSysMenu = GetSystemMenu(FALSE);
  9. if (pSysMenu != NULL)
  10. {
  11. CString strAboutMenu;
  12. strAboutMenu.LoadString(IDS_ABOUTBOX);
  13. if (!strAboutMenu.IsEmpty())
  14. {
  15. pSysMenu->AppendMenu(MF_SEPARATOR);
  16. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  17. }
  18. }
  19. // Set the icon for this dialog.  The framework does this automatically
  20. //  when the application's main window is not a dialog
  21. SetIcon(m_hIcon, TRUE);         // Set big icon
  22. SetIcon(m_hIcon, FALSE);        // Set small icon
  23. m_Banner.SetTextColor(RGB(0,0,255), FALSE);
  24. m_Banner.SetBackgroundColor(RGB(155,115,255), FALSE);
  25. m_Banner.SetBold(TRUE, FALSE);
  26. m_Banner.SetFont(_T("Comic Sans MS"), 20, FALSE);
  27. HICON hIcon = AfxGetApp()->LoadIcon(IDI_SHERLOCK);
  28. m_Icon.SetIcon(hIcon);
  29. m_Icon.SetBackgroundColor(RGB(201,201,255), FALSE);
  30. m_Text1.SetWindowText(
  31. _T("To Sherlock Holmes she is always THE woman.  I have seldom heard ")
  32. _T("him mention her under any other name.  In his eyes she eclipses ")
  33. _T("and predominates the whole of her sex.  It was not that he felt ")
  34. _T("any emotion akin to love for Irene Adler."));
  35. m_Text1.SetMargins(15, 0);
  36. m_Text1.SetFont((LPCTSTR)NULL, 10, FALSE);
  37. m_Text2.SetBold(TRUE, FALSE);
  38. m_Text2.SetFont(_T("Arial"), 14, FALSE);
  39. m_Text2.SetWindowText(_T("But wait...  There's MORE!!!"));
  40. m_Text2.SetMargins(15, 0);
  41. m_Text3.SetFont((LPCTSTR)NULL, 10, FALSE);
  42. m_Text3.SetWindowText(
  43. _T("One night -- it was on the twentieth of March, 1888 -- I was ")
  44. _T("returning from a journey to a patient (for I had now returned to ")
  45. _T("civil practice), when my way led me through Baker Street.  As I ")
  46. _T("passed the well-remembered door, which must always be associated ")
  47. _T("in my mind with my wooing, and with the dark incidents of the ")
  48. _T("Study in Scarlet, I was seized with a keen desire to see Holmes ")
  49. _T("again, and to know how he was employing his extraordinary powers."));
  50. m_Text3.SetMargins(15, 0);
  51. m_Text3.SetFont((LPCTSTR)NULL, 10, FALSE);
  52. m_Text4.SetMargins(15, 0);
  53. LOGFONT lf;
  54. CFont *pFont = m_Text4.GetFont();
  55. pFont->GetLogFont(&lf);
  56. lf.lfItalic = TRUE;
  57. _tcscpy(lf.lfFaceName, _T("Verdana"));
  58. m_Text4.SetFont(&lf, FALSE);
  59. return TRUE;  // return TRUE  unless you set the focus to a control
  60. }

该软件发布到公共领域。您可以随意使用任何您喜欢的方式。如果您修改它或扩展它,请考虑发布新的代码在这里供大家分享。该软件按“原样”提供,没有明示或默示的保证。对于此软件可能导致的任何损坏或业务损失,我不承担任何责任。

修订记录

版本1.0 - 2003年10月17日

  • 首次公开发布。
 

评论和讨论

全透明背景 wlburgess 20-Oct-05 6:54 

感谢Hans为优秀的静态框控制。

透明度是我在许多演示类型Dialog Apps中的一个目标。

以前的解决方案有效,但在某些情况下需要太多的背景知识。

这是一个简单的解决方案,让文本画在已经存在的背景上。

要打开“静态”控件的“透明度”,请使用“对话框编辑器”将“透明度”的“扩展样式”复选框设置为“true” - 将“关闭”默认为具有完整背景的常规“不透明”文本。

首先在OnPaint中,成员函数的顶部现在将如下所示:
void CXColorStatic :: OnPaint()

CPaintDC dc(this); //设备上下文绘制

dc.SaveDC();

dc.SetTextColor(m_rgbText); 
if(!(GetExStyle()&
WS_EX_TRANSPARENT)) { 
dc.SetBkColor(m_rgbBackground); 
dc.SetBkMode(TRANSPARENT); 

else 

dc.SetBkMode(TRANSPARENT); 

dc.SelectObject(m_pBrush);

CRect rect; 
GetClientRect(RECT);

...(其余与以前一样)

第二个设置EraseBackground :
BOOL CXColorStatic :: OnEraseBkgnd(CDC * pDC)

if(!(GetExStyle()&WS_EX_TRANSPARENT))

CRect cr; 
GetClientRect(CR); 
pDC-> FillRect(&cr,m_pBrush); 
}

return TRUE; //的CStatic :: OnEraseBkgnd(PDC); 
}

Wayne L. Burgess 

 

译者见解:

实现透明度以上方法在属性框设置 TRANSPARENT=TRUE,这就需要一个一个控件去修改;如果是动态创建,可以增加WS_EX_TRANSPARENT,在

void CXColorStatic::PreSubclassWindow() 
{
TRACE(_T("in CXColorStatic::PreSubclassWindow\n"));
  ModifyStyleEx(0, WS_EX_TRANSPARENT);
// get current font

已修改的源码案例:http://download.csdn.net/detail/greless/9898892

http://download.csdn.net/detail/greless/9897974

http://blog.csdn.net/greless/article/category/6970425

一个字体,大小,颜色可定义的自绘静态框控件-XColorStatic 类(比较好看,一共19篇自绘文章)的更多相关文章

  1. MFC 可以设置背景色、字体、字体颜色、透明背景的 Static 静态文本控件

    MFC库里没有符合这个条件的控件,于是我自己写了一个,初步测试有效. 注:可以设置透明背景,但还不能做到透明度设置(如50%透明度) 如果设置了背景色,就不保留透明背景 默认背景色是透明的 [cpp] ...

  2. 利用NSMutableAttributedString实现label上字体大小颜色行间距的改变

    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.si ...

  3. 用c/c++混合编程方式为ios/android实现一个自绘日期选择控件(一)

    本文为原创,如有转载,请注明出处:http://www.cnblogs.com/jackybu 前言 章节: 1.需求描述以及c/c++实现日期和月历的基本操作 2.ios实现自绘日期选择控件 3.a ...

  4. Android一个炫酷的树状图组织架构图开源控件实现过程

    Android一个炫酷的树状图组织架构图开源控件 文章目录 [1 简介] [2 效果展示] [3 使用步骤] [4 实现基本布局流程] [5 实现自由放缩及拖动] [6 实现添加删除及节点动画] [7 ...

  5. 『Asp.Net 组件』第一个 Asp.Net 服务器组件:自己的文本框控件

    代码: using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace DemoWebControl ...

  6. 给easyui datebox时间框控件扩展一个清空的实例

    给easyui datebox扩展一个清空的实例 步骤一:拓展插件 /** * 给时间框控件扩展一个清除的按钮 */ $.fn.datebox.defaults.cleanText = '清空'; ( ...

  7. MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应

    MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文:  http://blog.csdn.net/supermanking/article/detail ...

  8. putty字体大小颜色、全屏/退出全屏快捷键 保存session设置[转]

    字体大小设置 Window->Appearance->Font settings->Change按钮设置(我的设置为16)字体为(Consolas) 字体颜色设置 Window-&g ...

  9. Android-修改TabWidget字体大小颜色及对齐

    在Android中,我们可以定义TabWidget来分页.在上一篇文章中有说到使用TabWidget定义Tab分页布局,但大部分用户可能会觉得默认的字体有点小,但Tab选项卡默认又不能设定字体大小,如 ...

随机推荐

  1. 辛星浅析yaf框架中的类的自己主动载入问题

    因为公司非常多项目都是基于yaf的,而非常多刚接触yaf的朋友问的第一个问题就是:yaf的自己主动载入是依照什么规则来的. 鉴于此.于是我特别开了一篇博文来记录一下. 首先在yaf中.models文件 ...

  2. [Angular] Export directive functionalities by using 'exportAs'

    Directive ables to change component behaives and lookings. Directive can also export some APIs which ...

  3. MySql批量drop table

    原文:MySql批量drop table 今天发现数据库中很多没用的表,想清理掉. 发现mysql好像不支持类似这样的写法:drop table like "%r" 在oracle ...

  4. 【Unity Shaders】Lighting Models —— 灯型号Lit Sphere

    考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同一时候会加上一点个人理解或拓展. 这里是本书全部的插图.这里是本书所需的代码和资源(当然你 ...

  5. erlang中如何调试程序

    学习一门语言,当学习那些基本语法的时候,我们常常会忽略它的程序调试,当程序稍微复杂一点的时候,我们不能保证程序的完全正确,我们会为其发愁,这时,程序的调试就变得相当重要了.    在erlang环境搭 ...

  6. linux下Java程序中插入DB中国的数据乱码问题

    首先,插入到DB数据,在Linux在查询时,现场展示??. 再次,在windows连接到db上,查看的结果并非乱码. 改动Eclipse软件中的编码:如上图:windows菜单->prefere ...

  7. Python 第三方库 cp27、cp35 等文件名的含义

    What does version name 'cp27' or 'cp35' mean in Python? 如对于 gensim-0.12.4-cp27-none-win_amd64.whl文件名 ...

  8. Android经常使用UI包裹 - EditText

    EditText的信息接受用户输入是最重要的Android UI包裹,您可以使用EditText.getText()获取它的文本内容. 实例:EditTextDemo 执行效果: watermark/ ...

  9. 【MySQL案例】error.log的Warning:If a crash happens thisconfiguration does not guarantee that the relay lo

    1.1.1. If a crash happens thisconfiguration does not guarantee that the relay log info will be consi ...

  10. Android能够获取到唯一的设备ID吗?

    Android是否有唯一的设备ID,如果有的话,该怎样快速有效获取? Settings.Secure#ANDROID_ID 返回Android ID ,是一个64位的16进制字符串 1 2 3 imp ...