[MFC美化] SkinMagic使用详解2- SkinMagic常用函数介绍
SkinMagic常用函数介绍
(1)InitSkinMagicLib函数:初始化SkinMagic
int InitSkinMagicLib( //初始化SkinMagic工具库 HINSTANCE hInstance, //应用程序句柄 char* szApplication , //皮肤文件中定义的应用程序名,置为NULL即可 char* szRegCode, //SkinMagic的使用注册码。若无置为NULL char* szReserved2); //保留位,为NULL
(2)LoadSkinFile函数:加载皮肤文件
LoadSkinFile(LPCTSTR lpSkinFile)//要加载的皮肤文件名
(3)LoadSkinFromResource函数:从资源加载皮肤文件
int LoadSkinFromResource( HMODULE hModule, //包含皮肤文件的模块句柄,若NULL表面在本模块中 char* lpSkinName , //皮肤资源的名称 char* lpType); //资源的类型
(4)SetWindowSkin函数:为标准对话框加载皮肤(比如文档)
int SetWindowSkin( HWND hWnd , //要换肤的对话框句柄 LPCTSTR lpSkinName )//皮肤名
(5)SetDialogSkin函数:为对话框加载皮肤文件(比如基本对话框Dlg)
int SetDialogSkin( HWND hWnd , //要换肤的对话框句柄 LPCTSTR lpSkinName )//皮肤名
(6)SetShapeWindowSkin函数:为shape对话框加载皮肤文件(这个对话框是固定大小,无法进行拉伸缩小)
int SetShapeWindowSkin( HWND hWnd, //对话框句柄 LPCTSTR pszName) //shape界面皮肤名.
(7)ExitSkinMagicLib函数:释放资源
void ExitSkinMagicLib()//释放资源文件
SkinMagic其他函数介绍
(1)RemoveDialogSkin();停止自动给窗体加载皮肤,针对SetDialogSkin
(2)RemoveWindowSkin(HWND hWnd);去掉指定窗口皮肤,当某个窗体或者控件不需要皮肤时可以使用此函数
(3)EnableWindowScrollbarSkin(HWND hWnd, SB_BOTH) 给指定窗体加载滚动条皮肤。比较适用于自绘的控件。
(4)DisableWindowScrollbarSkin(HWND hWnd) 使指定窗体停止加载滚动条皮肤。
(5)SetControlSkin()为单个控件换肤
int SetControlSkin( HWND hWnd, //控件句柄 LPCTSTR pszName, //皮肤文件里面的皮肤对象 LPCTSTR pszOwnerSkinName //皮肤文件里面的窗口对象 );
注意事项:
1. 当自绘控件与加载皮肤的窗体冲突时的解决方法
解决方法:先对窗体加载皮肤,再建立控件自绘的功能。
具体的做法是: 1)DoDataExchange取消自绘控件实例与资源控件ID的关联
2)在SetSingleDialogSkin之后自绘控件实例采用SubclassDlgItem的方法与资源控件ID关联。
VERIFY( 1 == SetSingleDialogSkin(this->GetSafeHwnd(), _T("Dialog") ) ); m_list.SubclassDlgItem(IDC_LIST1,this);
参考链接:
http://blog.csdn.net/nonecode/article/details/7952065
http://blog.csdn.net/miao2034056/article/details/9196411