为了让软件能在视觉上给用户带来一种清新的感觉,从而避免潜在的用户视觉疲劳和审美疲劳,软件一般都要经过专业的界面设计和美化。但是,我们不是也没有专业的界面设计美化人员,所以只能对软件的界面和风格进行初步的简单美化,主要是色调的搭配、图片、字体的简单美化处理等基本工作。
下面结合实例,详细介绍一下之前的软件开发中所用到的两种软件界面风格简单美化的方法:
(1)采用OnCtlColor函数,对软件的界面进行简单的美化。(**完整的实例程序可在我的CSDN资源中下载:[http://download.csdn.net/detail/margin1988/4241231](http://download.csdn.net/detail/margin1988/4241231)**)
采用这种方式,只能对软件界面在背景颜色、控件颜色、字体等方面做简单的美化。其主要的操作步骤如下:
1)在相应的.h文件中添加OnCtlColor函数:
~~~
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
~~~
2)在相应的.cpp文件中添加消息映射宏:
~~~
BEGIN_MESSAGE_MAP(CPoint11Dlg, CDialog)
ON_WM_CTLCOLOR()//OnCtlColor函数的消息映射宏
END_MESSAGE_MAP()
~~~
3)在相应的.cpp文件中编写OnCtlColor函数的实现体:
~~~
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch (nCtlColor)
{
case CTLCOLOR_STATIC: //静态文本
{
pDC->SetBkMode(TRANSPARENT);
HBRUSH B = CreateSolidBrush(RGB(191,219,255)); //控件背景颜色
pDC->SetTextColor(RGB(0,0,0)); //控件中的文字的颜色
return (HBRUSH) B;
}
break;
case CTLCOLOR_DLG : //对话框背景
{
pDC->SetBkMode(TRANSPARENT);
HBRUSH B = CreateSolidBrush(RGB(191,219,255));
pDC->SetTextColor(RGB(0,0,0));
return (HBRUSH) B;
}
break;
default:
return hbr;
break;
}
~~~
※需要注意的一点是:当对话框背景颜色和静态文本的背景色设置一样时,软件界面中的静态文本产生的阴影将消失,使得界面更加整洁。
![](https://box.kancloud.cn/2016-08-31_57c6b4a48ceeb.jpg)
(2)使用SkinMagic插件,对软件的整体界面风格进行改变和美化。(**完整的实例程序可在我的CSDN资源中下载**)
使用这种方式,可以改变软件的整体风格,从而也改变了软件中所有细节的风格,可以达到比较好的整体美化效果。但是,使用这种方式也有它自己的缺点,那就是虽然SkinMagic插件是一个免费的插件,但是它所提供的界面风格是相当有限的,而且这其中的界面风格比较清新好看的更是少之又少。SkinMagic插件的使用步骤如下:
1)将SkinMagicLib.h,SkinMagicTrial.lib,SkinMagicTrial.dll三个文件copy到程序目录中。
2)将SkinMagicLib.h添加到工程的“头文件”中;在工程“属性”页的“配置属性-链接器-输入”的“附加依赖项”中输入SkinMagicTrial.lib。
3)在stdafx.h中添加:
~~~
#include "SkinMagicLib.h"
#pragma comment(lib,"SkinMagicTrial.lib")
~~~
4)在"工程名App.cpp"或者"工程名.cpp"中的InitInstance()函数中添加:
~~~
VERIFY(1==InitSkinMagicLib(AfxGetInstanceHandle(),_T("Demo"),NULL, NULL));
CString str;
str.Format("%ssmf\\corona.smf",g_BasePath);
VERIFY(1==LoadSkinFile(_T(str)));
SetDialogSkin(_T("Dialog"));
~~~
5)在项目的配置属性中改为使用“使用多字节字符集”字符集,否则编译时会出现函数名无法解析的错误。
![](https://box.kancloud.cn/2016-08-31_57c6b4a4a0799.jpg)
- 前言
- VC++中自定义热键及响应
- CFileDialog文件对话框
- VC++中客户区保存为BMP图片
- VC++读、写注册表
- VC++播放音频文件和音频数据的方法
- VC++调用Matlab编写的DLL(混合编程)
- VC++中文件读、写和其他相关操作汇总
- VC++获取系统当前时间
- VC++按钮控件字体设置
- VC++软件界面风格简单美化
- VC++中一些常用的数据类型之间的相互转化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及随机相关
- VC++中结构体的定义及使用
- VC++中List Control控件的使用方法介绍
- VC++中窗口过程函数及其消息发送、响应机制介绍
- VC++中Ribbon编程架构及SDI架构多视图切换介绍
- 串口通信基础知识及VC++实现
- VC++中单个键盘按键的响应
- VC++中的计时器及多媒体高精度计时器
- VC++编写DLL导出函数及其调用方法
- VC++对话框(CDialog)的全屏显示及控件居中显示
- VC++对话框(CDialog)添加背景图片
- VC++图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的方法
- VC++对Access数据库的操作(查询、插入、更新、删除等)