VC通用控件都是灰色,当对程序界面进行美化时,使用通用控件就和美化后的程序界面不搭配,在VB,C#中,可以很方便的更改控件背景颜色,但在VC中就不能,需要我们自己来完善这方面的功能。我在这只简单的介绍一些,大家有兴趣的话,可以到http://www.vbkbase.com(VC知识库)中去搜索查看相关内容。

在VC60中新建一个对话框工程,添加一个新类,根据你要美化的控件选择对应的基类,如我要美化STATIC控件,就选择CStatic做为基类,新类名为CStaticEx。

在新类中添加两个类成员变量,一个为控件的背景色,一个为文字的颜色:

private:

COLORREF m_BackColor;

COLORREF m_TextColor;

在构造函数中对这两个变量进行初始化,我初始化为黑底白字

m_BackColor=RGB(0,0,0);

m_TextColor=RGB(255,255,255);

为CStaticEx加入WM_PAINT消息,在WM_PAINT消息处理函数OnPaint中加入美化控件的代码

{

CPaintDC dc(this); // device context for painting

CDC memdc;

CBrush m_Brush,*m_Oldbrush;

CBitmap bitmap;

CRect rect;

CString strWindowText;

int x,y;

CSize size;

//得到区域

GetClientRect(&rect);

//得到文本

this->GetWindowText(strWindowText); 

//创建兼容的内存位图句柄 

memdc.CreateCompatibleDC(&dc); 

bitmap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());

memdc.SelectObject( &bitmap );

//得到文字尺寸

size=memdc.GetTextExtent(strWindowText); 

//创建画刷,画背景色

m_Brush.CreateSolidBrush(m_BackColor);

m_Oldbrush=memdc.SelectObject(&m_Brush);

memdc.FillRect(&rect,&m_Brush);

memdc.SelectObject(m_Oldbrush); 

m_Brush.DeleteObject(); 

//文字

y=rect.top;

x=rect.right/2-size.cx/2 ; 

memdc.SetBkColor(m_BackColor); 

memdc.SetTextColor(m_TextColor); 

memdc.TextOut(x,y,strWindowText); 

//画图

dc.BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &memdc, rect.left, rect.top, SRCCOPY);

}

在对话框上添加一个STATIC控件,命名为IDC_STATICTEST,为其添加一个成员变量CStatic m_StaticTest;

将CStaticEx类的头文件添加到对话框类的头文件中;

将CStatic m_StaticTest

更改为CStaticEx m_StaticTest;

编译,运行就可以看到效果了! 

文章出处:http://www.diybl.com/course/3_program/vc/vc_js/200878/132216.html

静态文本框控件的美化CStatic的更多相关文章

  1. wxpython 支持python语法高亮的自定义文本框控件的代码

    在研发闲暇时间,把开发过程中比较重要的一些代码做个珍藏,下面的代码内容是关于wxpython 支持python语法高亮的自定义文本框控件的代码,应该是对大家也有用. import keywordimp ...

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

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

  3. 继承的文本框控件怎么响应EN_CHANGE等消息

    继承的文本框控件如何响应EN_CHANGE等消息?我从CEdit继承了一个CMyEdit类,想在这个类里填写它的一些消息.我在消息映射表里写的是MESSAGE_HANDLER(EN_CHANGE, O ...

  4. css input checkbox复选框控件 样式美化的多种方案

    checkbox复选框可能是网站中常用的html元素,但大多数人并不满意它的默认样式,这篇文章就讲讲如何实现input checkbox复选框控件 样式美化效果. 资源网站大全 https://55w ...

  5. Android控件之EditText(输入文本框控件)

    一.EditText控件概述 EditText是一个非常重要的组件,可以说他是用户和Android应用进行数据传输窗口  有了他就等于有了一扇和Android应用传输的门,通过他用户可以把数据传输给A ...

  6. Android控件_TextView(显示文本框控件)

    一.TextView控件的常用属性  1.android:id——控件的id   2.android:layout_width——设置控件的宽度 wrap_content(包裹实际文本内容) fill ...

  7. .Net Core使用视图组件(ViewComponent)封装表单文本框控件

    实例程序的界面效果如下图所示: 在表单中的搜索条件有姓名,学号,成绩.他们在一行中按照水平三等分排列. 在cshtml中用html实现上述表单效果的的代码如下: <form class=&quo ...

  8. jquery cleditor 光标经常点不进去问题解决方法 bootstrap 富文本框 控件

    cleditor 光标点不进去,原因是内嵌的html代码段 body没有赋值默认高度. 解决方法1.赋值options.bodyStyle  设置min-height值.缺点:不能跟随设备更新最低高度 ...

  9. AJAX 控件集之TextBoxWatermark(水印文本框)控件

    功能:       可以让TextBox控件初始化的时候拥有水印文字.属性:    TargetControlID :要使用具有水印效果的TextBox控件ID.    WatermarkCssCla ...

随机推荐

  1. Mono for Android 设计器错误:Disconnected from layout renderer

        今早打开vs2012 android 项目的时候出现如下错误提示:     查了半天,终于在官方网站得到答案.(http://forums.xamarin.com/discussion/143 ...

  2. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:9.观察者模式

    欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 前言 在一个程序的迭代过程中,复杂度渐渐上升,可能会出现一些跨模块的调用的需求,若是直接得到引用来进行使用,会导致模 ...

  3. LeetCode Count and Say 数数字

    class Solution { public: string countAndSay(int n) { ) "; "; int i,t,count; char c='*'; ;i ...

  4. Coursera_Learn how to learn笔记

    番茄工作法,隔20分钟休息一次. 构建组块步骤:1.集中注意力. 2.理解基本概念. 3.进行练习. 获得专业知识的第一步是创建概念组块,能够将分散的信息集合到一起. Recall(回顾)比反复阅读更 ...

  5. MVC文件下载和webform也能使用的下载方法

    public ActionResult Index() { DownloadMethod("text/plain", "C:/Users/sunny/Pictures/S ...

  6. POJ 2385 Apple Catching(01背包)

    01背包的基础上增加一个维度表示当前在的树的哪一边. #include<cstdio> #include<iostream> #include<string> #i ...

  7. void (*signal(int sig, void (*func) (int))) (int)理解

    http://blog.csdn.net/sever2012/article/details/8281271 1.signal( int sig, void (*func)(int))signal是一 ...

  8. PMP(第六版)中的沟通方法总结与对比

  9. tmux 用z关闭之后的恢复

    ctrl+b 然后z是全屏 但是如果是ctrl+z就是关闭窗口了 tmux ls看所有窗口 然后 tmux attach -t 2或者3就恢复

  10. Python求包含数字或字母最长的字符串及长度

    一.求包含数字或字母最长的字符串及长度 org = 'ss121*2222&sdfs2!aaabb' result = [] #保存最终要输出的字符串 result_temp = [] #保存 ...