当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 程序启动画面

VC++
面试题目:猫吃老鼠问题的求解
一个最基本的有限元计算程序
简单的表达式求值
C程序移植到VC开发环境下
一个小语言的词法分析程序
A/B 向上取整的方法
马走日棋盘算法
一种随机抽题的简单算法
clone模式在平衡排序二叉树实现中的应用
递归的应用 -- 最简单分形图形实现
比较数据排序前后的查找次数
根据前序和中序序列生成二叉树
如何用CZip/CUnzip类压缩/解压缩文件
使用 random_shuffle() 算法随机化序列元素
Ceb解除打印屏蔽实战
基于SHA-256的HMAC文件校验器
模拟信息加密流程图简介
关于数据校验
浅谈利用RSA算法防止非法注册机的制作
加密它:用新的高级加密标准(AES)保持你的数据安全

VC++ 中的 程序启动画面


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 100 ::
收藏到网摘: n/a

程序启动画面
作者:YU JHIN CHIN

下载本文示例源代码

在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}
步骤三.
在void CMainWindowApp::InitInstance()当中初始化启动画面的相关设定
BOOL CMainWindowApp::InitInstance(){ CSplashWindow *m_pSplashWindow = new CSplashWindow; m_pSplashWindow->CreateSplash(); m_pSplashWindow->CenterWindow(); m_pSplashWindow->ShowWindow(SW_SHOW); m_pSplashWindow->UpdateWindow(); Sleep(3000); //Delay 3 Seconds m_pSplashWindow->DestroyWindow(); //Destroy Window delete m_pSplashWindow; m_pMainWnd = new CMainWindow; m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); return true;}CMainWindowApp MainWindowApp;
如果您对此程序有任何问题欢迎来信指教[email protected]