SkinMagic使用的基本方法及高级方法

简介: SkinMagic使用的基本方法及高级方法

1.       SkinMagic使用的方法


1.1    初始化皮肤控件 InitSkinMagicLib


例:

nInitSkinMagicLib=InitSkinMagicLib( AfxGetInstanceHandle(),_T("LSA") ,NULL,NULL);


加载皮肤文件 LoadSkinFile(根据文件路径进行加载)或LoadSkinFromResource(根据资源名称进行加载)。


例:

nLoadSkinFile=LoadSkinFile(sSkinFilePath);


1.2    使用SetDialogSkin或者SetSingleDialogSkin或者SetShapeWindowSkin给窗体加载皮肤


这三者是有区别的。


1.3.1  SetDialogSkin是给所有的窗体均加载同样的皮肤。不建议使用这个函数。除非你的软件均使用同样的皮肤。


1.3.2  SetSingleDialogSkin给单个指定的窗体加载皮肤。窗口的显示方式是规则窗体。


1.3.3 SetShapeWindowSkin 给单个指定的窗体加载皮肤。窗口的显示方式为非规则窗体。


2.SkinMagic使用的高级方法


  2.1 RemoveWindowSkin去掉指定窗体上的皮肤


      当某个窗体或者控件不需要皮肤时可以使用此函数


  2.2 RemoveDialogSkin 停止自动给窗体加载皮肤。主要是针对SetDialogSkin的。


  2.3 EnableWindowScrollbarSkin 给指定窗体加载滚动条皮肤。比较适用于自绘的控件。


      例:

nSkin=EnableWindowScrollbarSkin(GetDlgItem(IDC_DLGTREE_EXPORT)->m_hWnd,SB_BOTH);

 

2.4 DisableWindowScrollbarSkin 使指定窗体停止加载滚动条皮肤。


  2.5 如何给Splitter加载皮肤


      2.5.1 皮肤文件中自定义Splitter


      2.5.2 打开Splitter


例:m_hSkin = OpenSkinData( _T("SkinSplitter") );


      2.5.3重载函数OnDrawSplitter


            详见系统管理源代码中类AW_CMultiViewSplitter


2.6 如何从皮肤文件中获取图片 CreateBitmapFromSkinImage


例:

m_hBitMap=CreateBitmapFromSkinImage(_T("listheader.bmp"));


  2.7 当一个窗体上同样的控件类型同时既有自绘也有加载皮肤的处理方法


在皮肤文件新建一个窗体,名称比如叫做FrmWnd-D,上面放置皮肤控件,例如是个Static控件,叫做Static-D。使用的例子如下:


nSkin=SetControlSkin(GetDlgItem(IDC_STATIC_MAIN_TITLE)->m_hWnd,_T("Static-D"),_T("FrmWnd-D"));

 

nSkin=SetControlSkin(GetDlgItem(IDC_STATIC_SUB_TITLE)->m_hWnd,_T("Static-D"),_T("FrmWnd-D"));


2.8 当自绘控件与加载皮肤的窗体冲突时的解决方法


  解决方法是先对窗体加载皮肤,再建立控件自绘的功能。


  具体的做法是:


1.   DoDataExchange取消自绘控件实例与资源控件ID的关联


2.   在SetSingleDialogSkin之后自绘控件实例采用SubclassDlgItem的方法与资源控件ID关联。


例:

VERIFY( 1 == SetSingleDialogSkin(this->GetSafeHwnd(), _T("Dialog") ) );


     

m_list.SubclassDlgItem(IDC_LIST1,this);


相关文章
|
11天前
|
存储 编译器 程序员
【C++高阶】C++继承学习手册:全面解析继承的各个方面
【C++高阶】C++继承学习手册:全面解析继承的各个方面
14 1
|
C语言 C++
C++中的类简要介绍
C++中的类简要介绍
68 0
C#编程基础——方法
C#编程基础——方法
109 0
第四章 对象与类
用户自定义类 注意在所有方法中都不要命名与实例域同名的变量 final修饰的大都是基本类型或不可变类的域, 可变类用final休息容易造成混乱 静态类和方法 final修饰的域可以是public的; NumberFormat使用工厂方法生成实例; 不用构造函数实例化的原因是(1)无法命名构造器...
791 0
|
算法
《算法技术手册》一3.6 常用方法
本节书摘来华章计算机《算法技术手册》一书中的第3章 ,第3.6节, George T.Heineman Gary Pollice Stanley Selkow 著 杨晨 曹如进 译 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
818 0