VC之美化界面篇

-
你想使用VC来开发漂亮的界面程序吗?这个文档将教会您如何在VC中使用MFC来开发很美观的界面程序,使你脱离控制台程序!
其他一些图形对象用来储存绘图特征。这些附加的功能包括从画线的宽度和颜色到画文本时 所用的字体。图形对象类封装了所有六个图形对象。 面的表格列出了MC的图形对象类 MFC类图形对象句柄图形对象目的 CBitmap HBITMAP内存中的位图 Brush brush画刷特性一填充某个图形时所使用的颜色和模式 CFont font字体特性一写义本时所使用的字体 CPalette palette调色板颜色 CPen hen画笔特性一画轮廓时所使用的线的粗细 CRgn hrgn区域特性一包括定义它的点 表1图形对象类和它们封装的句柄 使用CDC和图形对象类,在 Windows里绘图还算是很简单的。观察以下的画面 无标题CDc 回风 文件@)编辑①)查看)帮助0 自圖的舀 Hello. Cfan 就绪 图2使用CDC绘制出的按钮 该画面通过以下代码自行绘制的假按钮: BOOL CUilView:: PreCreate Window(CREATESTRUCT& cs) //设置背景色 //CBrush CUi lView: m Back m Back. Create SolidBrush(:: Get SysColor(COLOR 3DFACE)) cs. lpszClass= AfxRegisterWndC lass(0, 0, m Back, NULL) return CView:: PreCreate Window(cs) int CUilView:: OnCreate (LpCreatestruct lpCreateStruct f(CView:: On Create(lpCreateStruct)--1 return -1 /创建字体 CFont cuilvicw:: m Font m Font. CreatePoint Font(120,"Impact") return o void CUilView:: OnDraw(CDC k pDC) //绘制按钮框架 oDC->DrawFrame Control(CRect(100, 100, 220, 160), DFC BUTTON, DFCS BUTTONPUSH) //输出文字 pDC->SetBKMode(TRANSPARENT) pDC->Text Out(120, 120,Hello, CFan! 呵呵,不好意思,这并不是真的 Windows按钮,它只是一个假的空框子,当用户在按钮 上点击鼠标时,放心,什么事情都不会发生。 22 Windows的幕后绘图操作 在 Window中,如果所有的界面操作都由用户代码来实现,那将是·个很浩大的⊥程 笔者曾经在D0S设计过窗口图形界面,代码上千行,但实现的芥面还是很古板、难看,除了 我那个对编程一窍不通的女友,没有一个人欣赏它L;而且,更要命的是,操作系统,包括 别的应用程序并不认认你的界面元素,这才是真正悲哀的。认识这些界面的只有你的程序, 图2中的按钮永远只是一个无用的框子。 有了 Windows,切都好办了, Windows将诸如按钮、菜单、L具栏等等这些通用界面 的绘制及动作都交给∫系统,程序员就不用花心思再画那些按钮了,可以将史多的精力放在 程序的功能实现方面。 所有的标准界面元索都被 Windows封装好了。 Windows知道怎么画你的菜单以及你的标注着 Hello,cfan!”的按钮。当CFan某个快乐的小编(譬如:小飞)点击这个按钮的时候, Windows也明白按钮按下去的时候该有的模样,甚至,当这个友好的按钮获取焦点时, Windows也会个失时机地为它准备一个虚框…… 有利必有弊。你的不满这时候产生了:你既想使用 Windows的 True button,可也嫌它 的界面不够好看,譬如,你喜欢用监色的粗体表达你对Cian的无限情怀(正如图2那样) 人心不足,有办法吗?有的 3美化界面之实现篇 Windows还是给程序员留下了很多后门,通过一些途径还是可以美化界面的。本章节我 们系统学习下 Windows界面美化的实现。 31美化界面的途径 如何以合法的于段来达到美化界面的效果?一般美化界面的方法包括 1.使用MFC类的既有函薮,设定界面属性 2.利用 Windows的消息机制,截获有用的 Windows的消息。通过MFC的消息映射 Message Mapping)和反射 Message reflecting)机制,在 Windows准备或者正在绘该元素时, 偷偷修改它的状态和行为,彎如:让按钮的边框为红色; 3.利用MFC类的虚函数机制,重载有用的虚函数。在MC框架调用该函数的时候,重新定 义它的状态和行为 般来说,应用程序可以通过以下两种途径来灾现以上的方法 在父窗口里,截获自身的或者由子元素(包括控件和菜单等元素)传递的关于界面绘制的 消息; 2.子类化子元素,或者为子元素准备一个新的类(一般来说该类必须继承于MFC封装的某 个标准类,如: CBut ton)。在该了元素里,截获自身的或者从父窗∏反射过来的关于界 血绘制的消息。譬如:用户可以创建一个 CXPButton类来实现只有XP风格的按钮, CXPButton继承于 CButton。 对于应用程序,使用 CXPButton类的途径相对」对话框窗口和普通窗口分成两种 ①对话框窗口中,直接将原先绑定按钮的 CBut ton类替换成 CXPBut ton类,或者在绑定变 量吋直接指定 Control类型为 CXPButton,如图3所示 Add Member Variable Member variable name. OK m ok Cancel Category: Control Variable type CXPButton CButton CXPButton Description: map to CXPButton member (user-defined class) 图3为按钮指定 CXPButton类型 ②2在普通窗口中,直接创建一个 CXPBut ton类对象,然后在 On Create(中调用 CXPBut ton 的 Create方法; 以下的章节将综合地使用以上的方法,请读者朋友留心观察 32使用MFC类的既有函数 在界面美化的专题中,MFC也并非一无是处。MFC类对于界面美化也做了部分的努力, 以下是一些可以使用的,参数说明略去 CWinApp: SetDialogBk Color void Set Dialoghkcolor( colorref c lBk=RGB (192, 192, 192), COlORREF cIrltIText= RGB (0, 0 0)) 指定对话框的背景色和文本颜色。 CListctrl:: SetBkcolor CReBarCtrl:: SetBkColor Cstatusbarltrl.. setbkcolor trl:: SetBkcolor COLORREF SetBkColor( COloRREF clr 设定背景色。 CListCtrl:: SetTextcolor CReBarctrl:: SetTextcolor CTreeCtrl:: SetTextColor COLORREF SetTextColor( ColORREF clr 设定文本颜色。 CListCtrl:: SetBkimage BOOL SetBk Image( LVBKIMAGE* plvbk Image BOOL SetBk Image( HBItMAP hbm, BOOL fIle= TRUe, int xOffsetPercent=0, int yOffsetPercent BOOL SetBk Image( LPTSTR pszUrl, BOOL fIle= TRUE, int xOffsetPercent =0, int yOffsetPercent 0) 设定列表控件的背景图片 CComboBoxEx: SetExtendedStyle CListCtrl: SetExtendedSty le CTabCtrl: SetExtendedStyle CToolBarCtrl: SetExtendedS ty le DWORD SctExtendcdStylc( DWORD dwExMask, DWORD dwExStylcs 设置控件的扩展属性,例如:设置列衣控件属性带有衣格线。 图4是个简单应用MFC类的既有函数来改善 Windows界面的例子: MFC 昵称 56s4165 白乔 「682364 Satan c Radiol M Check 指定背景色的窗口 匚确定 图4使用MFC类的既有函数美化界面 相关实现代码如下: BOOL CUi2App: InitInstance o //设置对话框背景色和字体颜色 SetDialogBk Color(RGD(128, 192, 255), RGB(0, 0, 255)) BOOL CUi2D1g:: OnInit Dialogo //设置列表控件属性带有表格线 DWORD NewStyle =m List. GetExtendedStyle( NewStyle= LVS EX GRIDLINES m List. SetExtendedStyleewStyle) //设置列表控件字体颜色为红色 m List. SetTextColor(RGB(255, 0, 0)) /填允数据 m List. Insert Column(, QQ", LVCFMT LEFT, 100) m list. InsertColumn(1,"昵称”", LVCFMT LEFT,100) m List. InsertItem(0,5851165) list. Setltemtext(,1,"自乔) m List. InsertItem(1,6823864) m List. SetItemText(l, 1,Satan) 嗯,这样的界面还算不错吧? 3.3使用 Windows的消息机制 使用MFC类的既有函数来美化界面,其功能是有限的。既然 Windows是通过消息机制进 行通讯的,那么我们就可以通过截获一些有用的消息来美化我们的界面,以下是一些有用的 Windows消息: WM ERASEBKGND WM CTLCOLOR: MM DRAWITEM WM MEASUREITEMK NM CUSTOMDRAW* 注意,标注*的消息是子元素发送给父窗口的通知消息,其它的为窗口或者子元素自身的消 3.31 WM PAINT MPAN消息相信大家都很熟悉,个窗∏要重绘了,就会有个 WM PAINT消息发送给窗 可以响应窗口的WMPAⅠNT,以更改它们的模样。 WM PAINT的映射函数原型如下 afx msg void OnPaint) 控件也是窗口,所以控件也有 WM PAINT消息,通过消息映射我们完全可以定义控什的界面 如图5所示 NM PAINT -态的文本 正常的文本 图5利用 WM PAIN消息美化界面 实现代码也很简单 void CLazy Static:: OnPaint( CPaintdc dc(this);// device context for painting //什么都不输出,仅仅画一个矩形框 GetClicnt Rcct(&rc dc Rectangle(rc) 哈哈,简单吧?不过 WM PAINT确实绝了点,它要求应用程序完成元素界面的所有绘制 过程,想象·下如何画岀个完整的列友控件?太烦了吧。般来说,很少有人喜欢使用 MM PAINT,还有其它更细致的消息。 3.3.2 WM ERASEBKGND Windows在向窗口发送 WM PAINT消息之前,总会发送一个 WM ERASEBKGND消息通知该 窗凵擦除背景,默认情况下, Windows将以窗凵的背景色清除该窗口。 可以响应窗口(包括子元素)的 WM ERASEBKGND,以史改它们的背景。 WM ERASEBKGND的映射 函数原型如下 afx msg BOOL OnEraseBkgnd( CDC** pDC 返回值: 指定背景是否已清除,如果为FALS,系统将自动清除 参数: pDC指定了绘制操作所使用的设备环境。 图6是个简单的例了,通过 nErasebkgnd为对话框加载了副位图背景: WM ERASEBKGND 带有背景色的对话框:) 厂 Cheek C Radiol 确定 图6利用 WM ERASEBKGND消息美化界面 实现代码也很简单: BOOL CLi4D1g:: OnInitDialog( //加载位图 //CBi tmap m Back m Back. LoadBitmap(IDb back BOOL CLi4D1g:: On EraseBkgnd(CDC* pDC) cdC dc dc. CreateCompatibleDC (pDC) dc SelectObject( &m Back) //获取 BITMAP对象 BITMAP hb m Back. GetBitmap( &hb) //获取窗口大小 GetClient Rect(&rt) /显示位图 pIC:>StretchBlt(0, 0, rt Width, rt. He O tdc, 0,0, hb. bnmWidth, hb. bmHeight, SRCCOPY) return true HBRUSH CUi4D1g: OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor /设置透明背景模式 pDC->SetBkMode TRansParent //设置背景刷子为空 return(HBRUSH): GetStock Object(HOLLOW BRUSH 同时别心了响应 OnCtlcolor,否则窗口里面的控件就不透明了。0 nCtlcolor的内容 3.33 WM CTLCOLOR 在控件显示之前,每一个控件都会向父对话框发送一个 WM CTLCOLOR消息要求获取绘制 所需要的颜色。 WM CTLCOLOR消息缺省处理函数CWnd:: OnCtlcolor返回一个 HBRLSH类型的

-
2013-01-01
405KB
VC之美化界面篇本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:
2009-06-17VC之美化界面篇 作者:白乔 链接:http://vcer.net/1046595482643.html 本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础: 1.
10.39MB
VC6.0和VC的skinse的换肤非常经典 可以美化界面
2011-07-27VC6.0和VC的skinse的换肤非常经典 可以美化界面
1.35MB
VC++软件界面风格简单美化
2012-04-20附件中的资源详细介绍了VC++软件开发中所用到的两种软件界面风格简单美化的方法:1.采用OnCtlColor函数对软件界面在背景颜色、控件颜色、字体等方面做简单的美化;2.使用SkinMagic插件,
26KB
VC6.0MFC界面美化
2012-03-031.对话框背景为一幅图 2.列表控件的背景 3.改变全部界面的背景颜色
598KB
简单好用的c++皮肤库 vc美化 界面库 含示例代码
2012-10-07一套很简单好用的皮肤库 含示例代码和皮肤文件
2.28MB
VC 皮肤 美化程序界面
2009-06-15VC写出来的程序很难看,利用这个东西可以做出非常漂亮的VC界面程序,用法很简单,参见程序里面的readme
1.65MB
VC漂亮按钮代码包 美化界面
2010-06-03VC按钮代码包,可美化你的界面。应该都能用上的
1.5MB
VC2010 开发的界面程序 很美观
2013-05-24VC2010 开发的界面美化程序 很美观 有很多种不同的风格
978KB
VC6风格界面
2013-07-11VC6界面类编程小实例\A Drag and Drop List Control.doc ...................\MFC窗口位置管理详细分析及实例.doc ..............
22.19MB
MFC界面控件美化
2013-10-19MFC控件的美化 包括,Button、List、Radio、Combox...等
298KB
一个美化窗口实例 VC 漂亮界面.rar
2019-07-10一个美化窗口实例 VC 漂亮界面,比如在窗体中使用贴图实现渐变背景的菜单、美化List网格等,都是相当实用的技巧,推荐给大家本款源码。
1.24MB
VC Office2007界面对话框
2012-10-23在之前一篇《VC Office2007界面对话框实现》,写道可以用单文档来模拟对话框,来实现Office2007风格的对话框,这一次用不同的方法来实现,MFC的Ribbon功能包只对单文档/多文档有效
1.47MB
VC界面美化换肤程序源代码
2008-12-17VC换肤演示程序源代码,内含7种皮肤文件
2.54MB
C++MFC界面美化实例源代码
2014-09-09C++MFC界面美化实例源代码 .
40.90MB
VC 作界面库 美化 设计开发必备库BCGControlBarPro.v12.00完整源代码(破解版)
2013-01-11BCGControlBarPro.v12.00完整源代码(含资源汉化帮助文件和VS2008中文向导)第三部分 使用方法: 1、解压至C:\Program Files目录下(密码:xiaoqing);
46KB
基于窗体美化控件实现的漂亮登录窗口【VC 】.rar
2019-07-10基于窗体美化控件实现的漂亮登录窗口【VC 】,在VC6.0环境下可直接编译,VC自带控制实现的窗口特效,可用于VC 开发的信息管理系统作为管理员和用户的登录界面。
35.60MB
VC 作界面库 美化 设计开发必备库Xtreme Toolkit Pro v15破解版
2013-01-11Xtreme Toolkit Pro v15破解版 安装说明:执行setup.exe进行软件的安装,安装的过程中要求输入Serial Number,运行keygen.exe,选择Products中Xt
30KB
VC漂亮按钮源码帮助美化界面VS2005
2012-07-19一组漂亮的圆角按钮附源代码,编译环境VS2005,可以编译通过,看着挺舒服,可以为你的窗体增添一些灵动,用到你的软件中肯定会增色不少,希望VC的朋友能够喜欢。
70KB
VC 用bmp美化菜单一例.rar
2019-07-10VC 用bmp美化窗口菜单一例,画红框处即为使用BMP背景填充后的效果,是不是比原来的默认菜单漂亮多了?
345KB
VC Office2007界面对话框(KofPack0.1)
2018-09-06VC Office2007界面对话框 对VC2008SP1中Ribbon界面加强,让对话框也和多文档、单文档一样有相同的Office样式。
1KB
MFC 上位机上位机界面设计
2011-05-06基于VC的MFC上位机界面的设计,包含各式各样的控件,单选按钮 多选按钮 列表框等
39KB
VC 圆角按钮 按钮美化类库及效果演示.rar
2019-07-10一个专用于VC 美化按钮的类库代码,可实现圆角按钮,推拉式按钮的美化效果演示,已给出了部分按钮美化的效果演示,作者:风林。你可学习一下本实例,了解一个这个按钮美化类库的用法。提供的示例程序中,仿造Dr
1.76MB
VC 开源Windows XP风格界面库.rar
2019-07-10VC 适用的Windows XP风格的免费界面库,里面包括有不少的应用实例,用这些界面库可生成类似Office风格、XP风格的多种窗口界面,并可对窗体工具栏、文本框、进度条、按钮、Lable等做自定义
4KB
DLEdit非常漂亮的编辑框美化
2012-08-15DLEdit非常漂亮的编辑框美化,使编辑框也有移入高亮效果
29KB
VC 多风格按钮美化集.rar
2019-07-10VC 多风格按钮美化集,一个源码,展示了多种按钮效果,有平面的,有立体的,有阴影的,还有带背景图像的按钮,还有带图标的按钮,相信这么多按钮制作的例子,会让你学会更多VC 在按钮美化方面的技巧。
108KB
VC SkinLoad.dll控件美化窗口按钮的例子.rar
2019-07-10VC 使用SkinLoad.dll控件美化按钮的例子,可将默认的灰色按钮美化成带有渐变色的立体按钮,鼠标滑过按钮和点击按钮的时候,各个状态的颜色变化都不一样,你可以在对话框、弹出窗口中使用这一技巧,美
1.94MB
一个漂亮的登录界面源代码
2010-07-28一个MFC应用程序实例:一个漂亮的登录界面。用VC开发出来的界面很不好看。现在实现了窗口重画功能
6.20MB
VC++程序界面美化(xpstyle.Manifest)
2010-04-20让程序更加美观,具有WINDOWS风格..........
110KB
VC 窗体边框、按钮、标题栏美化例子.rar
2019-07-10VC 窗体边框、按钮、标题栏美化例子,有种水晶的风格,不过与现在的平板风格似乎有点不符了,不过学习一下VC 的窗体美化方法还是有价值的。改变用户界面的风格,可有效提升用户对软件的好感,现在很多程序的界
35.60MB
VC++界面美化工具Xtreme Toolkit 15(支持VC6.0~VS2010,带源码)
2012-08-11Xtreme Toolkit是一套MFC源代码界面组件,分为标准版和专业版两种,主要用于开发类似于Visual Studio .NET、Visual Studio 6.0、Microsoft®
-
下载
A算法求解八数码难题.pdf
A算法求解八数码难题.pdf
-
学院
23种JAVA设计模式
23种JAVA设计模式
-
下载
人口增长模型.rar
人口增长模型.rar
-
下载
rabbitmq-server-3.8.9.exe
rabbitmq-server-3.8.9.exe
-
下载
信号的采样及采样定理.pdf
信号的采样及采样定理.pdf
-
学院
(新)备战2021软考网络工程师顺利通关培训套餐
(新)备战2021软考网络工程师顺利通关培训套餐
-
学院
易语言开发通达信DLL公式接口
易语言开发通达信DLL公式接口
-
博客
2018 ICPC Nanjing Regional Contest(M待补)
2018 ICPC Nanjing Regional Contest(M待补)
-
学院
C#文件传输、Socket通信、大文件断点续传
C#文件传输、Socket通信、大文件断点续传
-
学院
Java学习路线,好的学习路线和好的方法,能让我们少走些弯路
Java学习路线,好的学习路线和好的方法,能让我们少走些弯路
-
学院
【数据分析-随到随学】Python语法强化与数据处理
【数据分析-随到随学】Python语法强化与数据处理
-
下载
史上最全!北大青鸟java学士后第二单元超市账单管理系统(包含oracle数据库创建的SQL代码)只要配置好JNDI就可以运行
史上最全!北大青鸟java学士后第二单元超市账单管理系统(包含oracle数据库创建的SQL代码)只要配置好JNDI就可以运行
-
博客
三、Linux中的输入输出管理
三、Linux中的输入输出管理
-
学院
云计算基础-Linux系统管理员
云计算基础-Linux系统管理员
-
博客
【linux】【 adb error】:no permissions (user in plugdev group; are your udev rules wrong?
【linux】【 adb error】:no permissions (user in plugdev group; are your udev rules wrong?
-
学院
转行做IT-第2章 HTML入门及高级应用
转行做IT-第2章 HTML入门及高级应用
-
博客
php实现简单的用户注册,登录,修改个人信息接口
php实现简单的用户注册,登录,修改个人信息接口
-
下载
T+V15专属云库存核算数据流
T+V15专属云库存核算数据流
-
下载
屏幕颜色拾取器.zip
屏幕颜色拾取器.zip
-
下载
visual studio professional 2017 2019
visual studio professional 2017 2019
-
学院
(新)备战2021软考网络规划设计师培训学习套餐
(新)备战2021软考网络规划设计师培训学习套餐
-
博客
2021-01-19
2021-01-19
-
下载
基于SEIR模型的新冠肺炎预测
基于SEIR模型的新冠肺炎预测
-
学院
(新)备战2021软考网络工程师分类强化培训套餐
(新)备战2021软考网络工程师分类强化培训套餐
-
学院
前端架构师-速成
前端架构师-速成
-
学院
【数据分析-随到随学】数据可视化
【数据分析-随到随学】数据可视化
-
下载
07 Python编程语言基础技术框架(3)之print输出.mp4
07 Python编程语言基础技术框架(3)之print输出.mp4
-
学院
(新)备战2021软考网络工程师培训学习套餐
(新)备战2021软考网络工程师培训学习套餐
-
博客
NSL-KDD多分类(pytorch版)
NSL-KDD多分类(pytorch版)
-
下载
09 Python编程风格(1).mp4
09 Python编程风格(1).mp4