MFC实现启动画面

1.新建一个单文档工程BMP
2.创建一个位图资源命名为IDB_START_BITMAP
3.创建一个对话框ID设为IDD_DLG_STARTBMP,并修改其属性Border设置为None
效果如下图所示:
MFC实现启动画面_第1张图片
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;
		......
}

即可实现开机动画

你可能感兴趣的:(MFC实现启动画面)