程序启动画面
2010-07-11 20:43:35 来源:WEB开发网在VC知识库上看到许多有关程序启动画面的程序而我觉得程序讲求的是"简而易懂",不需要太多的技巧,只要程序写的出来就好,于是我以另外一种简便的方式来设计程序启动画面同时在程序启动时播放音效,此程序的关键在于Sleep以及PlaySound这两个API函数与StrectBlt这个函数必须记得连结winmm.lib才可使用PlaySound函数,具体方法如下:
在CSplashWindow::CSplashWindow()建构函数当中加载位图以作为程序启动画面
CSplashWindow::CSplashWindow()
{
m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_SPLASHWINDOW)); //Load Bitmap
m_Bitmap.GetBitmap(&bmBitmap); //Get Bitmap Info
/*Show Splash Window and Play SplashWindow.wav*/
::PlaySound("SplashWindow.wav", NULL, SND_ASYNC | SND_FILENAME);
}
接着是此程序的具体描述
步骤一.
建立三个类别,分别作为程序启动画面与主程序
class CSplashWindow : public CWnd //用于程序启动画面的SplashWindow类别
{
private:
CDC MemDC;
BITMAP bmBitmap;
CBitmap m_Bitmap;
CBitmap *Old_Bitmap;
public:
CSplashWindow();
~CSplashWindow();
void CreateSplash();
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
};
class CMainWindow : public CFrameWnd //用于主程序的CMainWindow类别
{
public:
CMainWindow();
~CMainWindow();
};
class CMainWindowApp : public CWinApp //用于程序初始化CMainWindowApp类别
{
public:
CMainWindowApp();
~CMainWindowApp();
virtual BOOL InitInstance();
};
步骤二.
在void CSplashWindow::OnPaint()当中使用StrectBlt复制位图到SplashWindow以当作启动画面
void CSplashWindow::OnPaint()
{
CPaintDC dc(this);
MemDC.CreateCompatibleDC(NULL); //Create Memory DC
Old_Bitmap = MemDC.SelectObject(&m_Bitmap); //Select DC
dc.StretchBlt(0,
0,
bmBitmap.bmWidth,
bmBitmap.bmHeight,
&MemDC,
0,
0,
bmBitmap.bmWidth,
bmBitmap.bmHeight,
SRCCOPY);
MemDC.SelectObject(Old_Bitmap); //Select Bitmap
}
更多精彩
赞助商链接