使用VC自绘美化通用控件

VC之美化界面篇 白乔原创:VC之美化界面篇转载地址:http://www.vcer.net/showTip.jsp?tipid=10465954826431. 美化界面之开题篇相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面:   图1 瑞星杀毒软件的精美界面程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友 阅读详情

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;

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

 

 

VC++使用画刷绘图 简单画刷 FillRect函数 位图画刷 透明画刷 目录 使用画刷绘图 简单画刷 FillRect函数 位图画刷 透明画刷 接上:VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor 接下: 使用画刷绘图 MFC提供了一个CBrush类,可以用来创建画刷对象。画刷通常用来填充一块区域。 简单画刷 如下所示代码实现的功能是利用一个红色画刷填充鼠标拖曳过程中形成的一块矩形区域。 void CDrawView::OnLButtonUp(UINT 阅读详情

相关推荐

MFC桌面应用现代化改造:从Win32基础到现代UI实践

Windows桌面开发的核心在于理解其底层消息机制与窗口系统。Win32 API作为Windows操作系统的原生接口,通过消息循环驱动应用程序响应事件,而MFC(Microsoft Foundation Classes)则是对Win32 API的C++类库封装,提供了更面向对象的编程模型。这一技术组合的价值在于能够构建高性能、资源可控的原生应用,尤其适用于工业控制、金融交易等对实时性要求极高的场景。随着现代开发工具链的演进,基于MFC的应用也能融入高DPI适配、现代控件样式等UI现代化特性。本文聚焦于如何为

weixin_33851429的博客 487

VC++绘图中映像模式的了解和使用

MARK : Windows 程序设计这部分我从Windows 程序设计中单独摘出来,方便查看!!!使用映像模式:SetMapMode(hdc, iMapMode);iMapMode = GetMapMode(hdc);映像模式就是进行一种将逻辑单位转换为设备单位

yacper的专栏 1360

VC++与MFC实战:从零开发电话本程序,掌握Windows桌面应用开发精髓

桌面应用开发是软件工程的基础领域,其核心在于构建与操作系统深度交互、提供本地化服务的图形界面程序。其原理通常基于事件驱动和消息循环模型,通过框架管理用户界面、处理输入事件并执行业务逻辑。掌握桌面开发技术对于理解软件与硬件的协同、提升系统级编程能力具有重要价值,广泛应用于企业管理工具、办公软件、工业控制等场景。本文聚焦于使用经典的VC++与MFC框架,通过实现一个功能完整的电话本程序,系统讲解图形界面设计、数据存储管理及增删改查等核心功能的工程实践。项目将深入探讨MFC的对话框数据交换(DDX)机制和文档/视

diaogan4202的博客 423

VC 图像控件的加载绘制图像的使用总结

(一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID)(二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基于对话框的工程,名为Ttest,对话框类为CTestDlg (一)vc picture控件非动态载入图片. 方法1.先从最简单的开始,用picture 控件来实现.步骤:先在资源里Import一张图片,ID为 IDB_B...

weixin_30780649的博客 226

C/C++实现窗口重绘美化!改用个人风格「VC++源码」

窗口重绘 VC++源码 美化窗体的例子,类似于换肤,不过本例子中只介绍了一种窗口重绘的方法,把窗口美化的更漂亮一些,如示例图所示,和默认的窗口相比,这种窗口确实漂亮哦。 这是我这次的项目源码: 项目源码测试截图: 部分主要源码: skin++,SkinH_VB6美化程序界面,确实挺好的,如果你是初学,建议你先把C语言学好,在黑糊糊的控制台调试好了再学VC。大家...

1958

MFC窗口重绘实战:从原理到自定义皮肤实现

在Windows桌面开发中,GDI绘图和消息机制是构建图形用户界面的基础技术。GDI(图形设备接口)提供了底层的绘图能力,而消息循环机制则负责响应用户交互。理解窗口绘制的分层原理,特别是非客户区与客户区的划分,对于实现高度自定义的界面至关重要。这项技术的核心价值在于能够突破系统默认主题的限制,实现像素级的界面控制,从而打造独特品牌风格或适配特定业务场景的应用。通过处理WM_NCPAINT、WM_ERASEBKGND等关键消息,并结合双缓冲绘图技术,开发者可以高效地重绘窗口的各个部分,包括标题栏、边框和控件。

weixin_30664615的博客 334

VC自绘美化通用控件

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

徐冬明的专栏 1197

VS2019 MFC计算器开发:从环境搭建到表达式解析的完整实践

Windows桌面应用开发是C++程序员的核心技能之一,其关键在于理解图形用户界面(GUI)的事件驱动编程模型。MFC(Microsoft Foundation Classes)作为微软经典的C++框架,通过封装Win32 API,为开发者提供了构建Windows应用程序的高效工具集。在工程实践中,掌握MFC的对话框编程、消息映射机制和控件数据交换(DDX)技术,能够显著提升开发效率。计算器项目作为经典的教学案例,完美融合了界面设计、业务逻辑与算法实现,是学习MFC的理想切入点。通过实现从基础四则运算到复杂

weixin_30756499的博客 415

VC通用控件背景透明的方法:让界面设计更美观的解决方案

VC通用控件背景透明的方法:让界面设计更美观的解决方案 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发中,用户界面(UI)设计的美观与否,直接关系到用户体验和产品的成功。VC通用控件背景透明的方法,为开发者提供了一种简洁高效的方式来优化界面,它支持Static、Edit、Check Box、Radio等常用控件透明处理,无需重写控件类,即可实现界面元素与...

gitblog_06746的博客 571

VC++软件界面风格简单美化

附件中的资源详细介绍了VC++软件开发中所用到的两种软件界面风格简单美化的方法:1.采用OnCtlColor函数对软件界面在背景颜色、控件颜色、字体等方面做简单的美化;2.使用SkinMagic插件,对软件的整体界面风格进行改变和美化。资源中包含两个VC++工程:Point11和Point12,其中Point11实现第一种方法,Point12实现第二种方法。此外:Point12中除了包含了所必须的SkinMagicLib.h、SkinMagicTrial.lib和SkinMagicTrial.dll三个文件之外,还在Point12\Debug\smf目录下为你提供了22种软件皮肤资源,免去了你自己再去下载的麻烦,你可以自己选择不同的皮肤使用。一定值得你学习和参考。

VC-MFC CListCtr列表控件美化

在MFC项目的时候常用到列表控件不好美化的问题。这个源码里可修改列表控件的大小、背景色、字体、字体色,很实用!vc和vs的都有,还有简要说明文档。都是自己的经验,分享给大家!

VC++界面美化---模仿MS Office 选项对话框

---把时髦的技术挂在嘴边,还不如把过时的技术记在心里。 先来看看两幅图: 下幅图一是早期的Windows系统中常见的用于选项设置的窗体 下图二是MS Office Word的选项对话框 默认情况下用MFC的CPropertySheet和CPropertyPage创建的属性页就如图一的样子,要实现图二的样子需要做一些额外的工作: 技术及工具集:VS2

Leo-软件开发 2412

美化vc6.0控件样式

一般而言,我们可以很明显的看出VC6.0与VS2003及以上版本开发出的软件在样式上的差异(后者的软件中的控件应用了xp的默认样式,而前者则没有)。下面则举例说明二者的差异,以及如何让VC6.0开发出的软件中的控件也具有xp的样式。

VC使用VCLSkin美化界面

在网上曾经看过一篇文章,说是使用Delphi的皮肤控件VCLSkin制作成DLL,让VC调用美化窗体。感觉蛮有新意的,故自己实验一下。

无幻 6950

MFC界面控件美化

MFC控件的美化 包括,Button、List、Radio、Combox...等

mfc列表控件美化

环境:window 语言:c++ 此mfc列表控件美化类包含ListCtrlCl.h,ListCtrlCl.cpp以及一个txt的类使用实例并一行一注解。 ①在工程目录.h文件中添加引用#include “ListCtrlCl.h” 添加实例化CListCtrlCl m_listctrl; 再在某个列表初始化函数中添加相关代码即可。 ②资源中含有一个操作实例,可直接使用或更改相应表头后使用 ③相关注意事项(初学者容易犯的错误也已经在txt使用说明中做了注意) ④列表美化,主要对表头颜色,字体,扩展风格做了更改

CDC::FillRect功能

void FillRect(LPCRECT lpRect,CBrush* pBrush ); 参数:1.指向一个CRECT结构体或CRect对象的指针 2.指向一个画刷的指针 功能:用pBrush指向的画刷填充lpRect指向的区域 实例应用1:用位图填充矩形区域 CBitmap bitmap; bitmap.LoadBitmap(位图资源标志符); CBrush brush(&bi

梦想博客 7407

几个漂亮的VC++按钮及美化类库

内容索引:VC/C++源码,界面编程,按钮控件  自己动手制作的几个漂亮的VC++按钮,都是彩色的,比一般的按钮好看多了,虽然没有什么实质功能,不过按钮是我们比较常见的窗体元素,漂亮的按钮会给你的应用程序界面增色不少。本代码中还附有几个按钮创建类,我们很方便的就可以用到自己的项目中。

上一篇: c#中将数据库数据导出到EXCEL中
下一篇: VC中使用自定义消息在进程间通讯
lujunql
博客等级 码龄19年 156粉丝 124原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lujunql

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值