vc6以上版本的mfc为对话框添加启动画面

来源:互联网 发布:unity3d 格式脚本 编辑:程序博客网 时间:2024/05/16 17:19

 参考http://blog.csdn.net/libenqing/article/details/5961991

 

步骤如下:

1、添加CWzdSplash类

头文件:

#pragma once  // CWzdSplash  class CWzdSplash : public CWnd  {  DECLARE_DYNAMIC(CWzdSplash)  public:  CWzdSplash();  virtual ~CWzdSplash();  protected:  DECLARE_MESSAGE_MAP()  public:  CBitmap m_bitmap;  //  void Create(void);  void Create(UINT nBitmapID);  afx_msg void OnPaint();  afx_msg void OnTimer(UINT_PTR nIDEvent);  }; 

 

cpp文件:

// WzdSplash.cpp : 实现文件  //  #include "stdafx.h"  #include "test4.h"#include "WzdSplash.h"  // CWzdSplash  IMPLEMENT_DYNAMIC(CWzdSplash, CWnd)  CWzdSplash::CWzdSplash()  {  }  CWzdSplash::~CWzdSplash()  {  }  BEGIN_MESSAGE_MAP(CWzdSplash, CWnd)  ON_WM_PAINT()  ON_WM_TIMER()  END_MESSAGE_MAP()  // CWzdSplash 消息处理程序  void CWzdSplash::Create(UINT nBitmapID)  {  m_bitmap.LoadBitmap(nBitmapID);  BITMAP bitmap;  m_bitmap.GetBitmap(&bitmap);  //CreateEx(0,AfxRegisterWndClass(0),"",WS_POPUP|WS_VISIBLE|WS_BORDER,0,0,bitmap.bmWidth,bitmap.bmHeight,NULL,0);  CreateEx(0,  AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC_ARROW)),  NULL, WS_POPUP | WS_VISIBLE, 0, 0, bitmap.bmWidth, bitmap.bmHeight, NULL , NULL);  }  void CWzdSplash::OnPaint()  {  // TODO: 在此处添加消息处理程序代码  // 不为绘图消息调用 CWnd::OnPaint()  CPaintDC dc(this); // device context forpainting  BITMAP bitmap;  m_bitmap.GetBitmap(&bitmap);  CDC dcComp;  dcComp.CreateCompatibleDC(&dc);  dcComp.SelectObject(&m_bitmap);  // draw bitmap  dc.BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&dcComp,0,0,SRCCOPY);  }  void CWzdSplash::OnTimer(UINT_PTR nIDEvent)  {  // TODO: 在此添加消息处理程序代码和/或调用默认值  //CWnd::OnTimer(nIDEvent);  DestroyWindow(); //销毁初始画面窗口  }  



此处需要注意的地方是,要加CWzdSplash类的头文件

 

2、添加启动画面代码

在对话框中添加WM_CREATE响应

int CtestMFCDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 CWzdSplash wndSplash;                 //创建启动窗口类的实例 
 wndSplash.Create(IDB_BITMAP1); 
 wndSplash.CenterWindow(); 
 wndSplash.UpdateWindow();          //send WM_PAINT 
 Sleep(2000); 
 wndSplash.DestroyWindow();//销毁初始画面窗口
 if (CDialogEx::OnCreate(lpCreateStruct) == -1)
  return -1;

 // TODO:  在此添加您专用的创建代码

 return 0;
}

 

结束!