VC++工程中加入 SplashScreen 原理释解
2006-07-23 11:25:17 来源:WEB开发网核心提示: 通过以上几步的操作,就会在工程目录下生成Splash.CPP和Splash.H文件,VC++工程中加入 SplashScreen 原理释解(2),这便是CSplashWnd类的实现文件与头文件,同时工程中CWinApp与CMainFrame类中的部分代码也会被修改,以实现CSplashWn
通过以上几步的操作,就会在工程目录下生成Splash.CPP和Splash.H文件,这便是CSplashWnd类的实现文件与头文件。同时工程中CWinApp与CMainFrame类中的部分代码也会被修改,以实现CSplashWnd窗口的消息处理。
接着我们来看看 CSplashWnd 类的声明与主要的代码(已经过删减):
//类的声明
class CSplashWnd : public CWnd
{
CSplashWnd();
~CSplashWnd();
virtual void PostNcDestroy();
static void EnableSplashScreen(BOOL bEnable = TRUE);
static void ShowSplashScreen(CWnd* pParentWnd = NULL);
static BOOL PreTranslateAppMessage(MSG* pMsg);
BOOL Create(CWnd* pParentWnd = NULL);
void HideSplashScreen();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnPaint();
afx_msg void OnTimer(UINT nIDEvent);
CBitmap m_bitmap; //SplashScreen窗口显示用的位图对象
static BOOL c_bShowSplashWnd; //是否要显示SplashScreen的标志量
static CSplashWnd* c_pSplashWnd;
};
//是否使用SplashScreen
void CSplashWnd::EnableSplashScreen(BOOL bEnable)
{
c_bShowSplashWnd = bEnable;
}
//创建CsplashWnd对象,并调用Create()创建窗口
void CSplashWnd::ShowSplashScreen(CWnd* pParentWnd)
{
//如果不要显示SplashScreen或SplashWnd对象已经被创建则返回
if (!c_bShowSplashWnd || c_pSplashWnd != NULL)
return;
c_pSplashWnd = new CSplashWnd;
if (!c_pSplashWnd->Create(pParentWnd))
delete c_pSplashWnd;
else
c_pSplashWnd->UpdateWindow();
}
//装入SplashScreen欲显示位图,通过CreateEx()激发OnCreate()完成窗口创建与设置
更多精彩
赞助商链接