推荐给好友   您现在的位置: 主页 > 编程文档 > VC文档 > VC启动窗口画面制作方法研究

VC启动窗口画面制作方法研究

时间:2010-03-04 20:51 来源:未知 作者:admin 收藏到:[百度书签] [QQ书签]
1.概述
前几天在设计软件时,选择VC作为开发工具,想做个启动画面,由于以前没有制作过,所以到网上搜了一通。网上有几篇相关文章,有两篇我觉得很有价值:一篇是关于为方便显示图像制作的CPicture类的文章,原文是由PaulDiLascia写的解答,很有影响力;还有一篇是关于制作真彩启动画面的文章,不过其限制对位图操作,而不支持jpg,gif,而且使用繁琐,基本上是对SplashScreen组件导入后的代码进行简单修改。琢磨了好大一会儿才学会使用。
有感于现有材料使用起来不方便,随进行了整合和再封装处理,设计了CSplashWnd类,使用起来非常简便。下面就把我设计的类介绍给大家。有什么不当或错误之处,敬请指正。我的Email:zhengxiliu@sohu.com
2.CSplashWnd功能
能够显示真彩启动画面,能在画面上显示初始化文字信息,支持jpg,gif,bmp图像文件。
3.CSplashWnd的设计
3.1用户关心的接口
用户使用的公开接口:
public:CSplashWnd(LPCTSTRlpszFileName);//指定作为启动画面的图像文件,并装载BOOLShowSplash();//显示画面voidCloseSplash();//关闭画面voidShowText(LPCTSTRpCh);在显示的图像上中间位置处显示初始化信息文字3.2其他接口
系统使用的公开接口:(用户不关心)
CSplashWnd()voidPostNcDestroy();私有接口:(用户不关心)
BOOLCreate(CWnd*pParentWnd=NULL);intOnCreate(LPCREATESTRUCTlpCreateStruct);voidOnPaint();3.3数据设计(用户不关心)
BOOLfileIsValid//指示CPicturepic;//用于对图像文件进行操作的类intwidth,height;3.4限制
√不允许继承。
√为简化接口,只提供从文件装载图像
3.5需要的头文件
StdAfx.h,VC++6.0自动生成的对MFC的支持,不同的工程选项会产生不同的StdAfx.h。
afxwin.h支持CRect类
atlbase.h提供对IPicture(COM类)的支持。
afxpriv2.h提供对CArchiveStream类的支持。
4.类的健壮性和可调试性设计
图像文件是否有效?
需要检查文件是否有效,当装载图像文件失败时,fileIsValid为false,否则为true。这样在调用ShowSplash时将什么都不做,返回false。这时,用户应检查图像文件是否存在,文件名称拼写是否正确。
5.用法
√将CSplashWnd类加入项目中
√在使用CSplashWnd类的文件中#include“Splash.h”
√在合适的位置定义一个CSplashWnd对象
√在想显示启动画面的地方调用ShowSplash显示于屏幕上
√如果想在启动画面上显示一些初始化或其他提示信息,调用ShowText。
√在你想关闭启动画面的地方
在你的App类InitInstance函数中,显示主窗口之前使用,进行上述步骤,这是最典型的用法,如下面代码所示。
BOOLCTsApp::InitInstance(){   AfxEnableControlContainer();#ifdef_AFXDLL   Enable3dControls();         //CallthiswhenusingMFCinasharedDLL#else   Enable3dControlsStatic(); //CallthiswhenlinkingtoMFCstatically#endif   SetRegistryKey(_T("LocalAppWizard-GeneratedApplications"));   LoadStdProfileSettings(); //LoadstandardINIfileoptions(includingMRU)   CSingleDocTemplate*pDocTemplate;   pDocTemplate=newCSingleDocTemplate(       IDR_MAINFRAME,       RUNTIME_CLASS(CTsDoc),       RUNTIME_CLASS(CMainFrame),   //mainSDIframewindow       RUNTIME_CLASS(CTsView));   AddDocTemplate(pDocTemplate);   CCommandLineInfocmdInfo;   ParseCommandLine(cmdInfo);   if(!ProcessShellCommand(cmdInfo))       returnFALSE;// CSplashWnd*pCsw=newCSplashWnd("fx.jpg");//locatedinthelocaldirectory,orelsefull-pathfilenameisneeded   pCsw->ShowSplash();   Sleep(750);//delaysometimetoobservetheimagedisplayed.pCsw->CloseSplash();   deletepCsw;   pCsw=NULL;//   //Theoneandonlywindowhasbeeninitialized,soshowandupdateit.m_pMainWnd->ShowWindow(SW_SHOW);   m_pMainWnd->UpdateWindow();   returnTRUE;}6.类代码

文章tags:

顶一下
0
0%
踩一下
(0)
0%

Copyright © 2010 代码天下 版权所有
ad