现在的位置: 首页 > 综合 > 正文

MFC的美化

2014年05月09日 ⁄ 综合 ⁄ 共 2483字 ⁄ 字号 评论关闭

前些天用MFC开发一个桌面程序,实现功能后客户说界面太难看,自己仔细看看也着实难看,所以就仔细的研究了下MFC的美化方法,特此分享给大家。

★利用SkinMagic美化MFC的界面。

SkinMagic是一个C++的皮肤库,使用它可以完美的实现给你的程序换肤。

代码运行效果图如下:

 

以前看到瑞星和金山词霸有换皮肤功能,很是羡慕,自己也想做个换皮肤的程序,但下手着实有些困难。我也试过像BCGCBar这样的大型软件,给我的感觉是软件老是出问题,应用起来也很复杂。后来知道了SkinMagic软件包,但当时不知怎么用,发了贴子也没人回答。可能是很少有人用的缘故吧,本站也未更新此软件包。偶然的一次机会,让我知道了怎样来用它,

而且编译出来的软件体积很小,所以在这里向大家介绍一下,希望对大家有些帮助。

如何使用:

① 新建工程后,将SkinMagic包中的SkinMagicLib.h、SkinMagicLib.lib、DETOURS.lib拷贝到所在文件夹下,点击Project->Add To Project->Files,包含到工程中。

② 在Resource View中点击Import 菜单引入几个Skin二进制文件放在相同的“SKINMAGIC”文件夹下,分别给起一个名字(见源程序)。

③ 在stdafx.h中加入#include "SkinMagicLib.h"

④ 在此处添加如下内容

01.if (!ProcessShellCommand(cmdInfo))
02.return FALSE;
03./////////////////////////////////////////////////////////////
04.VERIFY(
1 == InitSkinMagicLib( AfxGetInstanceHandle(), 
"Demo" ,NULL,NULL
) );
//初始化类库
05.VERIFY(
1 == LoadSkinFromResource( AfxGetInstanceHandle()  , 
"KROMO","SKINMAGIC")
);
//从资源中加载皮肤
06. 
07.VERIFY(
1 == SetWindowSkin( m_pMainWnd->m_hWnd , 
"MainFrame" ));
08.VERIFY(
1 == SetDialogSkin( 
"Dialog" )
);
09.((CMainFrame*)m_pMainWnd)->m_bSkinned
= TRUE;
10.((CMainFrame*)m_pMainWnd)->m_nIndex
= 0;
11.////////////////////////////////////////////////////////
12.m_pMainWnd->ShowWindow(SW_SHOW);
13.m_pMainWnd->UpdateWindow();

⑤ 在MainFrame中加入换皮肤菜单,及相应的函数,在函数中加载皮肤。

1.void CMainFrame::OnDevior()
2.{
3.LoadSkinFromResource(
AfxGetInstanceHandle()  , 
"DEVIOR" ,"SKINMAGIC")
;
4.}

到此为止,完美的换皮肤程序就出来了。

如果想更换皮肤只需要更换LoadSkinFromResource的参数为当前目录下的皮肤文件就可以了。

我这里有完整的demo已经很多的皮肤文件,需要的可以点击这里下载

★利用flash来美化MFC的界面:

效果图:


代码:

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

	...
	
	// TODO: Add extra initialization here
	
	RECT rc;
	this->GetClientRect(&rc);

	m_FlashPlayer.MoveWindow( &rc, true );

	TCHAR strCurDrt[500];
	int nLen = ::GetCurrentDirectory(500,strCurDrt);
	if( strCurDrt[nLen]!='\\' )
	{
		strCurDrt[nLen++] = '\\';
		strCurDrt[nLen] = '\0';
	}

	CString strFileName = strCurDrt;
	strFileName += "startup.swf";
	m_FlashPlayer.LoadMovie(0, strFileName);
	m_FlashPlayer.Play();

	return TRUE;  // return TRUE  unless you set the focus to a control
}
void CPlayFlashDlg::OnFSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args) 
{
	// TODO: Add your control notification handler code here
	if( 0 == strcmp(command,"bt") )
	{
		if( 0 == strcmp(args,"enter") )
		{
			MessageBox("欢迎进入系统!");
		}
	}
	else if( 0 == strcmp(command,"quit") )
	{
		MessageBox("您选择了退出!");
		CDialog::OnCancel();
	}
}

0.0这样加载你的flash就OK了。demo可以在这里下载

一下是一些详细的介绍:

一、准备工作

第一步:下载并安装Adobe
Flash Player

从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的Flash
Player
(大约为2.66M),并安装。对于Windows
32
位系统,其默认安装目录为:C:\WINDOWS\system32\Macromed\Flash\;对于64位系统,为:C:\Windows\SysWOW64\Macromed\Flash

      Flash控件的大版本号用数字表示,如9

抱歉!评论已关闭.