VC模仿超炫QQ界面的实现必赢娱乐网址

 

前几日在vckbase上边见到这么生机勃勃篇小说 未来参考一下来兑现一下这些成效 [quote] 随着Computer手艺的升华与推广,Computer逐步走进了人人的平时生活个中。大家由此它来学学,娱乐,消息的相互等等.并且对应需而生的精彩纷呈的软件出品的渴求也许有了自然的增高。除了底蕴用外,对软件易操作性,分界面包车型客车雅观性等也是叁当中标软件不可能缺少的最首要因素。雅观个性化的分界面是多个软件吸引和留住客户的国粹之大器晚成,通信软件QQ/MSN便是那类产物中的二个第一名的象征,下边将用VC 对QQ的界面举办模拟完结,供广大朋友参照他事他说加以考察。
  相信各位对QQ已经十分熟习,由此对其外观特点等不作累叙.大家将接纳Visual C 来张开实行落实。在从此以后边,有必不可缺向读者介绍一下大概情形。
  其实,整个经过最注重的片段是特性化分界面自绘部分,也是难度最大的大器晚成部分。关于分界面编程方面包车型地铁学识,诚然那是二个相当的大的系统布局,我们不可能奢求通过简单的篇幅就会对它实行比较周全的陈述,而且今后软件开垦行当也可能有缩水开辟周期,升高支付作用的方向,于是将那生机勃勃难度标题借用外在控件支持大家做到。
  关于换肤控件的抉择,这里也向大家简要介绍一下,当然那只是个人的眼光,仅供仿照效法理解。当前市情提供八个换肤盛名的换肤成品(SkinMagic,Skin ,USkin,AppFace,SkinCrafte,等卡塔尔国,个中SkinMagic,AppFace,USkin等都以做得相比较含糊的,分界面包车型地铁某个因素效果做得令人不太满足.而Skin 和SkinCrafte在这里方面做得比较卓越.客观的说Skin 前段时间应当说,是境内较为理想的成品,其占领财富消耗比俄联邦出品SkinCrafte要出彩,而俄联邦出品SkinCrafte在外观质量上成功的作用比Skin 要杰出点,CEOL一点。
  固然这么,本达成未有接受以上任何一成品,原因是这里有三个新起之秀SkinBeauty,它不管品质和外观做出的效应都相比狂妄,更甚的是声称提供不错的键盘操作扶助同不经常候并可以称作在Win2K和XP等连串能够做出Vista的玻璃磨沙效果。
  当然,那个都以所谓的比较结实而已,还会有三个选拔SkinBeauty的因由是:SkinBeauty能够接收自带的皮层编辑软件SkinBeauty Studio)落成蓬蓬勃勃套身躯包蕴八种体裁的窗口分界面,开关样式等。那是以上任何贰个出品暂且就像都无法提供的。而笔者辈以此项指标急需也可能有此(主分界面,闲话对话框窗口差异,并有八个不等特色的按键等细节难题卡塔尔。[/quote] 0.筹算职业:   用产物相应的四肢编辑软件SkinBeautyStudio编辑好分界面各因素四肢,平日好看的分界面都以由图片绘制所成这里是到其主站下载本来就有的BeautyQQ.bsk四肢)。将下载好的换肤开垦库SkinBeauty.dll,SkinBeauty.lib)和接口文件SkinBeautyExport.h希图好,下载地址在本文章后有付出,或协和到[url]www.afe-soft.com[/url]上自身下载。 2.加载换肤库   做好基本框架后,分界面仍然很土,运营效果难以令人满足,于是大家接下去能够加载换肤库,初始改造程序的界面外观了。
将早先构思好的skinBeauty.dll库放在项指标运维目录,在项目标目录归入SkinBeautyExport.h文件和SkinBeauty.lib文件,以便稍后引进并调用函数接口。平时DLL库的调用分成静态调用和程序运维时期动态调用2种,关于这两种的区分,可参看其他小说。这里,大家将选取静态调用的法子达成)

DirectUI   

VC模仿超炫QQ分界面包车型大巴贯彻
作者:Elio

在适合的职位增加引进库的注脚,这里大家选拔在stdafx.h文件之中增加:

DirectUI意为直接在父窗口上绘图(Paint on parent dc directly卡塔尔国。即子窗口不以窗口句柄的花样创造(windowless卡塔尔(قطر‎,只是逻辑上的窗口,绘制在父窗口之上。微软的“DirectUI”本事遍及的行使于Windows XP,Vista,Windows 7,如浏览器左侧的TaskPanel,调节面板导航分界面,Media Player播放器,即时通信工具MSN Messager等。   

源代码下载

//inside stdafx.h
//SkinBeauty Lib Call 
#include  "SkinBeautyExport.h"
#pragma   comment(lib,"SkinBeauty.lib")

DirectUI好处在于能够很有利的创设高速,秀丽的,特别轻松扩张的界面。外国如微软,我国如Tencent,百度等集团的顾客端产物多应用这种措施来公司界面,进而很好的将分界面和逻辑抽离,同一时间轻便落到实处各类超炫的分界面效果如换色,换肤,透明等。

  关键字: VC QQ分界面 换肤 自绘控件 透明窗口 Vista样式 无需付费开采包 源码 模拟

  在档案的次序得开始化地点(这里选拔在等级次序的开创实例cpp文件之中,BeautyQQ.cpp的CBeautyQQApp::InitInstance()函数的开端,日常都足以在那加载卡塔尔加入皮肤加载的代码:

DirectUI 目的在于知足顾客端界面连忙支付的内需,同有时候融合业界前沿的肌肤技艺,为客商创立尤其赶快,职业的分界面。   

  随着Computer才干的发展与推广,Computer逐步走进了民众的通常生活个中。大家透过它来上学,娱乐,消息的相互影响等等.何况对应需而生的美妙绝伦的软件出品的 供给也许有了必然的滋长。除了基本成效外,对软件易操作性,分界面包车型大巴雅观性等也是叁个打响软件无法缺少的第大器晚成因素。雅观特性化的分界面是一个软件吸引和留住用户的至宝之意气风发,通信软件QQ/MSN就是那类产物中的一个独立的表示,下边将用VC 对QQ的分界面举办效仿完成,供广大朋友仿照效法。
  相信各位对QQ已经优越熟练,由此对其外观特点等不作累叙.大家将选用Visual C 来举行拓宽落到实处。在此以前,有供给向读者介绍一下大约情状。
  其实,整个经过最注重的片段是特性化分界面自绘部分,也是难度最大的黄金年代部分。关于分界面编制程序方面包车型大巴学识,诚然那是叁个相当大的系统结构,大家不能够奢求通过简 短的篇幅就可以对它进行比较周全的陈说,况兼现在软件开垦行当也是有缩水开垦周期,升高花费功效的趋向,于是将那风流倜傥难度标题借用外在控件扶植大家成功。
  关于换肤控件的选料,这里也向大家简介一下,当然那只是个人的见解,仅供参照他事他说加以侦查精晓。当前市场提供八个换肤知名的换肤成品(SkinMagic,Skin ,USkin,AppFace,SkinCrafte,等卡塔尔(英语:State of Qatar),在那之中SkinMagic,AppFace,USkin等 都以做得比较含糊的,分界面包车型大巴一些因素效果做得令人不太满足.而Skin 和SkinCrafte在此地点做得比较杰出.客观的说Skin 近来应该 说,是境内较为理想的出品,其占用能源消耗比俄国付加物SkinCrafte要过得硬,而俄联邦成品SkinCrafte在外观品质上到位的机能比Skin 要特出点,老总L一点。
  就算那样,本完成未有选择以上任何后生可畏出品,原因是此处有贰个新起之秀SkinBeauty,它不管质量和外观做出的功效都相比狂妄,更甚的是宣称提供不错的键盘操作扶植同不经常候并称为在Win2K和XP等连串能够做出Vista的玻璃磨沙效果。
  当然,那么些都是所谓的可比结实而已,还也是有叁个选拔SkinBeauty的缘由是:SkinBeauty能够接纳自带的身体发肤编辑软件(SkinBeauty Studio)完毕意气风发套身躯包罗各类样式的窗口分界面,按键样式等。那是上述任何一个产品一时半刻就像是都不能够提供的。而我们以此类型的急需也可能有此(主分界面,闲话对话框窗口分裂,并有多少个例外风味的按键等细节难题卡塔尔国。

BOOL CBeautyQQApp::InitInstance()
{
 CString exeFullPath;
 CString strFilename;
 int nLen = GetModuleFileName(NULL, exeFullPath,MAX_PATH);
 CString strPath(exeFullPath);
 strPath = strPath.Left(strPath.ReverseFind('\'));
 strFilename = strPath  _T("\beautyQQ.bsk");
 SkinLoad(THCAR2char(strFilename.GetBuffer(0)));  
 ......
}

2.1 DirectUI 主要特点   

通过了近日的差不离描述,接下去将启幕具体的兑现了。先看一下对象效果,如图:

...

◆ 帮忙皮肤对象的布局   

必赢娱乐网址 1

◆ 支持四肢脚本(JavaScript卡塔尔(英语:State of Qatar)调整,能够让分界面与逻辑深透分手   

必赢娱乐网址 2

◆ 帮衬bmp、png、jpg、gif、tga等图片格式   

0.思谋职业:

◆ 帮忙多图层Alpha混合特效   

  用产物相应的皮层编辑软件SkinBeautyStudio编辑好分界面各因素皮肤,日常雅观的分界面都以由图片绘制所成(这里是到其主站下载已有些BeautyQQ.bsk皮肤)。将下载好的换肤开垦库(SkinBeauty.dll,SkinBeauty.lib)和接口文件 SkinBeautyExport.h准备好,下载地址在本小说后有付出,或和煦到www.afe-soft.com上和煦下载。

◆ 提供分界面设计工具DirectUI Builder,扶持拖拽式分界面设计,让分界面开辟所见即所得   

1.确立项目:

◆ 开放式开拓平台,全数控件均为插件情势管理,扶助顾客自定义控件开拓,与DirectUI平台无缝宽容  

开辟VC ,利用向导援建构造基于MFC的对话框项目BeautyQQ,进度如下
New-> Projects -> MFC AppWizard(exe卡塔尔国 -> Dialoag based 别的暗中认可完毕建构。轻巧的改动一下对话框的大小,标题栏名称等,编写翻译一下,如图:

◆ 补助Windows平台全部的开采工具(VC 、VB6、VS.Net、PowerBuilder、Delphi、C Builder、E语言)  

必赢娱乐网址 3

◆ 支持具备正式控件的换肤   

运维一下着力正常,那就算达成了档案的次序的创导专业了。

◆ 援救四肢对象的导出与导入   

2.加载换肤库

◆ 扶助Windows核心导入,让典型界凉四肢的造作简便便捷   

  做好基本框架后,分界面依旧很土,运转效果难以令人满意,于是大家接下去可以加载换肤库,起头改动程序的分界面外观了。
将原先备选好的skinBeauty.dll库放在项指标运作目录,在品种的目录放入SkinBeautyExport.h文件和 SkinBeauty.lib文件,以便稍后引进并调用函数接口。(经常DLL库的调用分成静态调用和程序运转期间动态调用2种,关于那三种的分化,可参考别的文章。这里,大家将采取静态调用的措施落实)

◆ 让客商端代码精练

在适当的地点增加引进库的扬言,这里大家接纳在stdafx.h文件之中增添:

 

//inside stdafx.h

//SkinBeauty Lib Call 
#include  "SkinBeautyExport.h"
#pragma   comment(lib,"SkinBeauty.lib")

要想深造DirectUI本领,到网络查了瞬间,得先读书好Skin 技艺,所以,先看一下哪些是Skin 吧

  在类型得伊始化地方(这里接受在项指标始建实例cpp文件之中,BeautyQQ.cpp的CBeautyQQApp::InitInstance(卡塔尔函数的起来,平时都能够在这里加载卡塔尔参预皮肤加载的代码:

Skin ,系统软件,接收特殊的软件分界面开荒本领,让原来复杂烦琐的分界面编制程序变得轻松自诺,随着换肤本事的不断进步,Skin 不独有是作用强盛的换肤控件,何况是后生可畏款非常通用的换肤插件。只需求在您的程序中增添一句代码,Skin 就能够让您的分界面焕然豆蔻梢头新,并持有多种主旨风格和颜色的动态切换功用。

BOOL CBeautyQQApp::InitInstance()
{
   CString exeFullPath;
   CString strFilename;
   int nLen = GetModuleFileName(NULL, exeFullPath,MAX_PATH);
  CString strPath(exeFullPath);
  strPath = strPath.Left(strPath.ReverseFind('\'));
 strFilename = strPath  _T("\beautyQQ.bsk");

  SkinLoad(THCAR2char(strFilename.GetBuffer(0)));     
   ......
}

Skin 特性  

  从上边可见,大家先用GetModuleFileName(卡塔尔(英语:State of Qatar)获取加载身躯的门路,然后调用提供的函数接口SkinLoad(卡塔尔(英语:State of Qatar)达成换肤库的加载。而SkinLoad(卡塔尔函数的参数也正如轻易驾驭,正是四肢所谓地点的渠道。它的原型能够在头文件找到:

◆ 换肤通透到底,帮助Windows系统对话框与控件换肤;   

//load the skin with a skin-file from a path.
//[IN]:absolute file path 
BOOL SkinLoad(char* szSkinPath);

◆ 换肤周密,匡助具备的Windows标准控件;   

由来,已经达成换肤库的加载了。运维看看效果是否眩了众多,呵呵。
顺便说一下的是,官方评释,调用完SkinLoad(卡塔尔(قطر‎载入后,在分离程序前并无需调用任何卸载函数,换肤引擎将机关达成库的绝迹拆卸与拼装等操作,除非您程序运维中途意愿性的想去掉四肢外观。

◆ 扶持具备Win32/Win64平台,包蕴.Net应用程序;   

  现在已经变成QQ主界面包车型大巴外观完结与美化了,接下去大家因而VC向导增添一个会话框财富并丰裕相应的类,命名CtalkDlg类,其作用是聊天对话框 的对话窗口,也正是当我们双击客商列表的内部叁个客户后弹出的闲谈窗口.当我们运维的时候发掘,它的窗口背景外观除了大小外,其余跟主分界面是截然意气风发致的, 怎么办呢?未有涉嫌,因为在肌肤文件之中早已编制和计划好另风流倜傥外观的窗口四肢能源,大家只供给将以此闲聊对话框创制后跟那几个皮肤能源绑定则可,重载这个CtalkDlg类的带头化函数,并累积绑定代码,具体贯彻如下:

◆ 使用简便,只需后生可畏行代码完毕全部换肤;   

BOOL CTalkDlg::OnInitDialog() 
{
 CDialog::OnInitDialog();


   //将该对话框绑定某资源ID,让其绘制根据该资源定义来实现
  //bind with the predefine res
  BindRes2CtrlbyHWND(103,m_hWnd);
    ......
}

◆ 可视设计,提供四肢设计工具,所见即所得的布置开采意况;   

  上述代码功效是将开始时期在beautyQQ.bak皮肤里面定义好的对话框图像财富与对话框绑定,能源内部ID号为103(注意,该能源编号是编写皮肤的时候正是由顾客定义的,常常从101上马)。从上边的BindRes2CtrlbyHWND()函数名称以致参数可明白,功效是将窗口句柄为 m_hWnd的窗口外观与能源Id为103的肌肤财富绑定.于是,这就贯彻了差别窗口能够彰显区别的背景皮肤了。
  跟那一个职能相临近的是,大家闲谈对话框有有个别个按键,它们持有不平等的外观,按理也应有绑定钦赐必要的外观皮肤能源,于是,大家能够使用以下函数接口达成:

◆ 色调转变,支持四肢色调转变,每后生可畏套身体发肤都具有N种色调风格;   

BindRes2CtrlbyID(106,IDC_BUTTON_TALK_SERACH);

◆ 帮忙广大的开辟工具, VC/VB/Delphi/C Builder/VS. Net/PowerBuilder/E;   

   以上语句是将四肢能源ID为106的皮肤跟程序能源ID为IDC_BUTTON_TALK_SERACH的索求按键相绑定,该函数接口能够在程序运营前边预先将某控件与钦赐的身躯能源相绑定,提供的是控件财富ID与四肢能源ID。当然也得以用句柄的方法绑定,面前边的 BindRes2CtrlbyHWND(卡塔尔国不一样的是,大比非常多会话框窗口在运营时期未有长久的控件能源ID的概念(不象button,edit等控件),所 以只好利用实时句柄HWND的花样进行绑定。后面七个财富绑定函数的原型在SkinBeautyExport.h头文件之中能够找到,如下:

◆ 支持流行的Windows操作系统;   

//bind a skin_resource with a Ctrl by Ctrl ID or by handle
//[IN]:user resource define in the skin-file; the ID/handle of Ctrl to be set 
void BindRes2CtrlbyID(int nUserResID,DWORD dwCtrlID);
BOOL BindRes2CtrlbyHWND(int nUserResID,HWND hWnd);

◆ 身躯能源海量,提供方便的四肢转变工具,能够将近日主流的皮层大旨转变到Skin 格式;   

  好,经过地点的描述后,对照附属类小零件的源码,对于QQ的美食指南,客户列表等实现已经不是那么狼狈了,顾客只需象通常的美食做法和ListCtrl那样使用就能够了,运营的时候换肤库自动会将她们的外观美化起来。读者可下载源码,看它是怎么绑定达成的。
宗旨全部复杂而超眩的花色就在达成向导创立后调用两到八个第三方接口函数中成功。坦白说,整个换肤开采包提供的接口函数特出轻巧,就10多个,功用与运用 方法亦是一定清楚,相信没有必要多钻研就知道怎么选拔;如若对这多少个接口函数有如何难题,能够参见官方提供的支出文书档案表达书。
  其实上边的例证跟公司提供的源码形似,只是自身将其达成进程解释出来而已,希望对做界面包车型客车对象有参照成效。开端作者是对运用公司分界面换肤付加物的表现比较厌恶,后来察觉效果和频率还凑合,固然了,并在厂商的鞭挞下写了篇小说帮她们介绍给读者认识,换取了四个小卖部版本的开采包。算是“个人受益跟公众受益结 合”吧,的确不错的,大家能够测量试验。可是自个儿想对境内一些顾客不太舒畅的是,前段时间SkinBeauty的利用文书档案是马耳他语著写的,暂风尚未中文版本,那对后生可畏都部队分 不动E文的朋友有一点点不便利罢了。
搞分界面开拓的,建议多下载多少个换肤成品看看其性质,如能源占用,做到的效率,键盘操作性等。

◆ 援救Unicode,提供各种编码格式;   

结语

◆ 扶植静态库链接,与客户程序能够扩充无缝结合;   

  在更为重申功效的时日,无妨设想选拔可靠的第三方控件,将混乱而稳固的贯彻扔给它们来拍卖,深远产物效果业务,站在人家的双肩上,再优化本身,进而走得更加高更远。

◆ 协理第三方控件;   

参照小说

◆ 分界面与专门的学问逻辑深透分手;

  • 动用换肤开垦包SkinBeauty开采商主页:www.afe-soft.com
  • 开拓包(无偿版本)下载地址:
  • 开辟文书档案下载地址:
    (免费版本是无Logo,无弹出窗口限定的,这一点能够给黄金时代部分做分享的相爱的人点方便了,猜度,当然,若是要质量好,不完全受限依旧供给得到集团版本了..天下未有免费的午饭,天下老鸦平时黑?…呵呵,依旧不损得太残酷了卡塔尔国

 

来源:

Skin 实现原理  

 

Skin 归属第二代的外挂式的分界面库。   

 VC 6.0 编译 cannot open file "uafxcwd.lib"

Skin 提供了SkinBuilder 工具将拥有控件的财富总体企划成为三个独门的文书,便于在应用程序外界独立地开展增加和删除改操作。   

 

Skin 首要选择Hook与子类化本事来促成应用程序的全自动换肤。

 

Skin 换肤的大约流程  

多年来在编写翻译三个软件源代码的时候出现叁个难题

1、应用程序运转,加载Skin 库;   

cannot open file "uafxcwd.lib"

2、施行Skin 加载四肢文件API函数;   

小编在英特网采摘相关的解决方案.

3、Skin 安装窗口进程等品种Hook,思谋截获应用程序全部窗口的创始事件;   

1.

4、Skin 收到窗口成立等音信,依据类名、风格等一些标准来判断是还是不是对该窗口进行子类化;   

菜单project-》settnigs-》link-》Object/Library   modules:中添加uafxcwd.lib   
 2.
  假诺依旧极其,选择vc的漫天设置,实际不是默许安装

5、窗口子类化即能够收到该窗口全数的音讯;   

就算是unicode,能够用vc盘修复一下vc,钩选相关项。

6、根据不相同的音讯举办相应的管理。如:WM_PAINT音信,Skin 对其進展绘图的操作;   

自家要好是把vc盘里面包车型客车lib复制到vc mfc lib里面并非重新安装

7、绘图中须求用到图片、文字、字体等能源即依据ID、名称等原则到身躯文件中去寻觅;   

发端写了意气风发篇没封存 那是首次写

8、控件运维进度中,各样分界面行为的变迁均可透过拍卖音信与API函数来开展;   

附属类小零器件里面是供给的"uafxcwd.lib"文件

9、控件销毁时,Skin 即对其進展反子类化,将Skin 换肤前的音信进度地址重新设成当前的消息进度;   

附属类小零部件下载:
  必赢娱乐网址 4uafxcwd.lib
  必赢娱乐网址 5uafxcwd.lib

10、控件全体的音信不再通过Skin 新闻管理函数。控件实践其暗许的窗口音信管理函数;   

 

11、应用程序退出,Skin 库被卸载,在卸载之前Skin 获得通报,Skin 便在此中实行Hook的反开首化与财富文件的清理。

 

 

Skin 扶持的开采工具  

支撑VC 各类本子:VC6,VC二〇〇一,VC二〇〇七,VC二〇一〇;   

支撑VisualStudio. Net各类本子:VisualStudio. Net 二零零二, VisualStudio. Net 二〇〇五, VisualStudio. Net 2009;   

支撑 PowerBuilder 各类版本:PowerBuilder 6.0,7.0,8.0,9.0,10.0,10.5,11.0;   

支撑 Delphi种种本子:Delphi 4,5,6,7,8,二〇〇六,二〇〇五;   

支撑C Builder 各个本子:C Builder 4,5,6,二零零五;   

支撑E语言各个版本。

本文由亚洲必赢娱乐游戏发布于必赢娱乐网址,转载请注明出处:VC模仿超炫QQ界面的实现必赢娱乐网址

TAG标签: 必赢娱乐网址
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。