1.新建一个单文档工程BMP
2.创建一个位图资源命名为IDB_START_BITMAP
3.创建一个对话框ID设为IDD_DLG_STARTBMP,并修改其属性Border设置为None
效果如下图所示:
4.为对话框新建一个类为CStartBmp
在对话框的OnPaint()函数中添加代码
void CStartBmp::OnPaint()
{
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcBmp; //定义并创建一个内存设备环境
dcBmp.CreateCompatibleDC(&dc); //创建兼容性DC
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_START_BITMAP); //此处ID为开机位图ID
BITMAP m_bitmap;
bmpBackground.GetBitmap(&m_bitmap); //将图片载入位图中
//将位图选入临时内存设备环境
CBitmap *pbmpOld=dcBmp.SelectObject(&bmpBackground);
dc.SetStretchBltMode(COLORONCOLOR);
//调用函数显示图片StretchBlt显示形状可变
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcBmp,0,0,m_bitmap.bmWidth,m_bitmap.bmHeight,SRCCOPY);
dcBmp.SelectObject(pbmpOld);
}
在对话框的OnInitDialog()函数中添加以下代码
BOOL CStartBmp::OnInitDialog()
{
CDialog::OnInitDialog();
SetTimer(1,2000,NULL);
return TRUE;
}
在对话框的OnTimer()函数中添加以下代码
void CStartBmp::OnTimer(UINT_PTR nIDEvent)
{
CWnd* hWnd = FindWindow("#32770",NULL);
if (hWnd)
{
hWnd->PostMessage(WM_CLOSE,NULL,NULL);
}
else
{
MessageBox("ERROR");
}
KillTimer(1);
OnCancel();
CDialog::OnTimer(nIDEvent);
}
5.在CMainFrame类的OnCreate()函数中添加以下代码:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//调用开机动画的对话框
CStartBmp dlg;
dlg.DoModal();
if (CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1)
return -1;
......
}
即可实现开机动画