在利用VC+编程过程中遇到制作启动屏幕的问题几经试验得出一种方便简单的制作方法
基本原理是利用对话框窗口的特性在启动时首先创建对话框设置一个获得位图文件的句柄利用Picture控件的SetBitmap(HBITMAP hBitmap)方法使位图文件充满整个Picture控件窗口最后设置定时器整个启动屏幕就制作完成
下面介绍具体实现步骤
打开的开发环境新建VC+中的MFC应用程序输入工程名称MySample点击确定完成
打开资源视图添加对话框更改ID为ID_DIALOG_SPLASH设置对话框Center属性为TrueBorder属性为无
在对话框中添加Picture控件设置Picture控件的ID号为ID_PICType属性为位图Center image属性为True然后调整标尺使对话框没有外框调整对话框的大小以适应启动屏幕的要求调整Picture的宽高使其充满整个对话框窗口
双击对话框窗口弹出类向导对话框在类名中键入CSplash选择基类为Cdialog点击确定定义控件Picture的控件变量为m_pic
在Csplash类中重载OnInitDialog()函数添加消息WM_CHARWM_TIMERWM_LBUTTONUPWM_MBUTTONUPWM_RBUTTONUP
在OnInitDialog()函数中添加代码如下
BOOL CSplash::OnInitDialog()
{
CDialog::OnInitDialog();
//设置启动窗口背景在整个窗口中充满位图
CRect lRect;
m_picGetClientRect(&lRect);//得到Picture控件的窗口大小
lRectNormalizeRect();
//设置位图句柄
HBITMAP hbitmap=(HBITMAP)LoadImage(NULLsplashbmp//更改你喜欢的位图文件
IMAGE_BITMAPlRectWidth()lRectHeight()
LR_LOADFROMFILE|LR_CREATEDIBSECTION);
m_picSetBitmap(hbitmap);
//设置定时器
SetTimer(NULL);
return TRUE;
}
在OnTimer(UINT nIDEvent) 函数中添加代码如下
void CSplash::OnTimer(UINT nIDEvent)
{
static int i;
i++;
if(i > )
{
//销毁定时器
KillTimer();
this>OnOK();
}
CDialog::OnTimer(nIDEvent);
}
在OnLButtonUpOnLButtonUpOnLButtonUpOnChar函数中加入以下代码
{
KillTimer();
this>OnOK();
}
在MySampleCpp中引入头文件
#include Splashh
在InitInstance()函数中加入代码
BOOL CMySampleApp::InitInstance()
{
…
AfxEnableControlContainer();
CSplash splash;
splashDoModal();
…
}