- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC++工程中加入SplashScreen原理释解
Abbey
摘 要:本文旨在剖析VC++工程屮加入SplashScreen的原理,并给出在VC++ MFC (cxc)工程屮加入SplashScreen的步骤。
关键字:SplashScreen,原理
环 境:Windows 98SE/2000, VC++ 6.0
SplashScreen-我们使用Word之类的软件在启动的短暂吋间里就会看到它的身 影。它通常用以在程序启动时显示程序及用户名称,版权信息等。我也不知道它 准确的名称是什么(是闪屏吗?),就这样称呼吧。也许你也想在自己的工程里 加入这样的特性,木文将以创建实际工程的方式逐步剖析其实现原理。
注意:为避免实际所使用工程名给类或对象名带来的干扰,除非特别说明,在木 文中将使用基类名如CWinApp. CMainFrame CDialog来代替实际工程中的相应 派生类名进行描述。
Visual C++是一个相当强大的C++开发工具,它内嵌了对SplashScreen的支持。 但是在MFC EXE类型工程中只是对带有主框架类的SDI或MDI工程提供了这一支 持,基于对话框类的工程则被排除在外。现在让我们开始吧。第一步是在SDI 工程屮加入SplashScreerio
首先利用AppWizard生成一个SDI工程,除了其中Docking ToolBar必须选择外 (我认为这是MFC的一个Bug,当然这与本文讨论的SplashScreen没有关系), 其他的文档一视图支持、状态条之类的都可以不要,这样可以尽量减少无用的代 码。
通过 IDE 中的菜单 Project-Add to Project-Components and Controls,我 们就可以从Visual C++ Components中选择Splash Screen这个组件插入工程。
ponents and Controls Gallery
Choose a component to insert into your project:
查找范围 Q): | _Vi xu^l C++ Components
二]0也占囲▼
(^Progress Dialog
§)Tip of the day
I^Property Sheet
^ToolTip Support
Windows Multimedi a libr
敬Splitter Bar
^JStatus bar
System Info for About Dl
sockets
■
文件名 : |Splsh screen Insert
CloseThis component adds a start-up bitmap (splash screen] to your MFC application.
Close
More Info
More Info
Path to control:
在点击了〃 Insert后会弹出一个如下图所示的对话框,这是设置插入该工程中的 SplashScreen的类名、显示用位图的ID及文件名,采用缺省值即可。
通过以上几步的操作,就会在工程目录下生成Splash. CPP和Splash. H文件,这 便是CSplashWnd类的实现文件与头文件。同时工程中CWinApp与CMainFramc 类中的部分代码也会被修改,以实现CSplashWnd窗口的消息处理。
接着我们来看看CSplashWnd类的声明与主要的代码(己经过删减):
〃类的声明
class CSplashWnd : public CWnd
CSplashWnd ();
^CSplashWnd ();
virtual void PostNcDestroy();
static void EnableSplashScreen(BOOL bEnablc = TRUE); static void ShowSplashScreen(CWnd* pParentWnd = NULL);
static BOOL PreTranslateAppMessage(MSG* pMsg);
BOOL Create (CWnd* pParentWnd 二 NULL);
void HideSplashScreen();
afx_msg int OnCreate(LPCREATESTRUCT IpCreateStruct); afx msg void OnPaint ();
afx msg void OnTimer(UINT nlDEvent);
CBitmap m_bitmap; //SplashScrecn 窗口显示用的位图对彖
static BOOL c_bShowSplashWncl; //是否耍显示 SplashScreen 的标志 里
stat
文档评论(0)