MFC对话框使用SkinMagic界面库

简介:

  使用MFC做界面是非常痛苦的,最好借助第三方界面库。本文使用SkinMagic,下载地址:http://pan.baidu.com/share/link?shareid=1666255608&uk=3794066601

1.使用方法

  1)首先拷贝SkinMagicLib.h,SkinMagic.lib,corona.smf(后缀名为smf)到工程文件下,其中SkinMagic.dll拷到Debug下。

  2)stdafx.h或者其它头文件中加入头文件和库的引用。

   #pragma comment(lib,"SkinMagic.lib")//调用皮肤lib
   #include "SkinMagicLib.h"
 3)CxxxApp::InitInstance()中加入初始化SkinMagic库的代码和调入皮肤文件。放在调用DoModal上面位置即可。
   VERIFY( 1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));
   VERIFY( 1 == LoadSkinFile("corona.smf")); //corona.smf是其中一个界面文件,使用不同的需要拷贝到工程文件下。

 4)如果是对话框工程,而且没有菜单,直接在CxxxApp::InitInstance()中调用

VERIFY( 1 == SetDialogSkin( "Dialog"));

 5)重写ExitInstance()函数,释放SkinMagic资源。

int CTcpAsynSApp::ExitInstance() 
{
	// TODO: Add your specialized code here and/or call the base class
	ExitSkinMagicLib();
	return CWinApp::ExitInstance();
}

2.注意事项

  1)如果对话框工程有菜单,则在OnInitDialog调用下面函数。将CTcpAsynSDlg替换成你们自己的名称。

  注意: 如果有菜单,须在CxxDlg::OnitDialog调用如下函数。其中CMenu::FromHandle(GetSkinMenu(g_pMianWnd->m_hWnd));是加载菜单。

   CTcpAsynSDlg* g_pMianWnd = (CTcpAsynSDlg*)AfxGetApp()->GetMainWnd();
   VERIFY( 1 == SetWindowSkin( g_pMianWnd->m_hWnd , "Dialog" ));
   VERIFY( 1 == SetDialogSkin( "Dialog"));  //其它对话框使用
   CMenu::FromHandle(GetSkinMenu(g_pMianWnd->m_hWnd));
   //MenuInit();
  也可以使用自定义的MenuInit函数

void CTcpAsynSDlg::MenuInit()
{
	CMenu menu;
	menu.LoadMenu(IDR_MENU1);
	SetMenu(&menu);
}

2)如果工程是文档类,则在CxxxApp::InitInstance()添加

   m_pMainWnd->ShowWindow(SW_SHOW);
   m_pMainWnd->UpdateWindow();
   VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));
   VERIFY( 1 == SetDialogSkin( "Dialog" ) );

3)在对话框属性中要关联IDR_MENU1
对话框右键属性,常规中选择菜单。

3.结果演示




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值