⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 splash.cpp

📁 深入浅出MFC 的书中源码 我也是找了很久才找到
💻 CPP
字号:
// CG: This file was added by the Splash Screen component.

// Splash.cpp : implementation file

//



#include "stdafx.h"  // e. g. stdafx.h

#include "resource.h"  // e.g. resource.h



#include "Splash.h"  // e.g. splash.h



#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char BASED_CODE THIS_FILE[] = __FILE__;

#endif



/////////////////////////////////////////////////////////////////////////////

//   Splash Screen class



BOOL CSplashWnd::c_bShowSplashWnd;

CSplashWnd* CSplashWnd::c_pSplashWnd;

CSplashWnd::CSplashWnd()

{

}



CSplashWnd::~CSplashWnd()

{

	// Clear the static window pointer.

	ASSERT(c_pSplashWnd == this);

	c_pSplashWnd = NULL;

}



BEGIN_MESSAGE_MAP(CSplashWnd, CWnd)

	//{{AFX_MSG_MAP(CSplashWnd)

	ON_WM_CREATE()

	ON_WM_PAINT()

	ON_WM_TIMER()

	//}}AFX_MSG_MAP

END_MESSAGE_MAP()



void CSplashWnd::EnableSplashScreen(BOOL bEnable /*= TRUE*/)

{

	c_bShowSplashWnd = bEnable;

}



void CSplashWnd::ShowSplashScreen(CWnd* pParentWnd /*= NULL*/)

{

	if (!c_bShowSplashWnd || c_pSplashWnd != NULL)

		return;



	// Allocate a new splash screen, and create the window.

	c_pSplashWnd = new CSplashWnd;

	if (!c_pSplashWnd->Create(pParentWnd))

		delete c_pSplashWnd;

	else

		c_pSplashWnd->UpdateWindow();

}



BOOL CSplashWnd::PreTranslateAppMessage(MSG* pMsg)

{

	if (c_pSplashWnd == NULL)

		return FALSE;



	// If we get a keyboard or mouse message, hide the splash screen.

	if (pMsg->message == WM_KEYDOWN ||

	    pMsg->message == WM_SYSKEYDOWN ||

	    pMsg->message == WM_LBUTTONDOWN ||

	    pMsg->message == WM_RBUTTONDOWN ||

	    pMsg->message == WM_MBUTTONDOWN ||

	    pMsg->message == WM_NCLBUTTONDOWN ||

	    pMsg->message == WM_NCRBUTTONDOWN ||

	    pMsg->message == WM_NCMBUTTONDOWN)

	{

		c_pSplashWnd->HideSplashScreen();

		return TRUE;	// message handled here

	}



	return FALSE;	// message not handled

}



BOOL CSplashWnd::Create(CWnd* pParentWnd /*= NULL*/)

{

	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);

}



void CSplashWnd::HideSplashScreen()

{

	// Destroy the window, and update the mainframe.

	DestroyWindow();

	AfxGetMainWnd()->UpdateWindow();

}



void CSplashWnd::PostNcDestroy()

{

	// Free the C++ class.

	delete this;

}



int CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

	if (CWnd::OnCreate(lpCreateStruct) == -1)

		return -1;



	// Center the window.

	CenterWindow();



	// Set a timer to destroy the splash screen.

	SetTimer(1, 750, NULL);



	return 0;

}



void CSplashWnd::OnPaint()

{

	CPaintDC dc(this);



	CDC dcImage;

	if (!dcImage.CreateCompatibleDC(&dc))

		return;



	BITMAP bm;

	m_bitmap.GetBitmap(&bm);



	// Paint the image.

	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)

{

	// Destroy the splash screen window.

	HideSplashScreen();

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -