扉页制作

扉页制作

  1. 创建一个MFC类CSplashWnd,基类是CWnd。
  2. 然后自己找一张Bmp放在工程的res文件夹下,并在VS->资源视图->点击右键,添加资源,选择bitmap,令其ID号为IDB_SPLASH.
  3. 然后CSplashWnd类的头文件和cpp文件如下:
#pragma once
// CSplashWnd.h
 
class CSplashWnd : public CWnd
{
	DECLARE_DYNAMIC(CSplashWnd)
public:
	CSplashWnd();
	virtual ~CSplashWnd(); 
	virtual void PostNcDestroy();
	
protected:
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnPaint();
	afx_msg void OnTimer(UINT nIDEvent);
	DECLARE_MESSAGE_MAP()
	
protected:
	static CSplashWnd* m_pSplashWnd;//指向初始画面的指针
	bool Create(CWnd* pParentWnd);
	
public:
	CBitmap m_bitmap;//初始画面位图 
	static void ShowSplashScreen(CWnd* pParentWnd);
};
// SplashWnd.cpp : 实现文件
#include "stdafx.h"
#include "SplashWnd.h"
 
// CSplashWnd
CSplashWnd* CSplashWnd::m_pSplashWnd;
 
IMPLEMENT_DYNAMIC(CSplashWnd, CWnd)
 
CSplashWnd::CSplashWnd()
{
}
CSplashWnd::~CSplashWnd()
{
	ASSERT(m_pSplashWnd == this);
	m_pSplashWnd = NULL;
}
BEGIN_MESSAGE_MAP(CSplashWnd, CWnd)
	ON_WM_CREATE()
	ON_WM_PAINT()
	ON_WM_TIMER()
END_MESSAGE_MAP()
 
// CSplashWnd 消息处理程序
void CSplashWnd::ShowSplashScreen(CWnd* pParentWnd)
{
	if (m_pSplashWnd != NULL) return;
	m_pSplashWnd = new CSplashWnd;
	if (!m_pSplashWnd->Create(pParentWnd))
		//创建初始画面窗口   
		delete m_pSplashWnd;
	else
		m_pSplashWnd->UpdateWindow();
	//显示初始画面窗口   
}
bool CSplashWnd::Create(CWnd* pParentWnd)
{
	if (!m_bitmap.LoadBitmap(IDB_SPLASH))
		//载入位图   
		return FALSE;
	BITMAP bm; 
	m_bitmap.GetBitmap(&bm);
	return CreateEx(0, AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC_ARROW)),
		NULL, WS_POPUP | WS_VISIBLE, 0, 0, bm.bmWidth, bm.bmHeight, pParentWnd->GetSafeHwnd(), NULL);//创建主框架窗口的子窗口
} 
int CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	CenterWindow();
	SetTimer(1, 1000, NULL); //时间控制   
 
	return 0;
}
void CSplashWnd::OnPaint()
{
	CPaintDC dc(this);
	CDC dcImage;
	if (!dcImage.CreateCompatibleDC(&dc)) return;
	BITMAP bm;
	m_bitmap.GetBitmap(&bm);
	CBitmap* pOldBitmap = dcImage.SelectObject(&m_bitmap);
	dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dcImage, 0, 0, SRCCOPY);
	dcImage.SelectObject(pOldBitmap);
}
void CSplashWnd::OnTimer(UINT nIDEvent)
{
	// TODO: Add your message handler code here and/or call default
	DestroyWindow(); //销毁初始画面窗口   
	AfxGetMainWnd()->UpdateWindow();
	CWnd::OnTimer(nIDEvent);
}
void CSplashWnd::PostNcDestroy(void)
{
	DestroyWindow();
	CWnd::PostNcDestroy();
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值