Вход/Регистрация
Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2
вернуться

Фролов Григорий Вячеславович

Шрифт:

#include "stdafx.h"

#include "resource.h"

#include "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;

  • Читать дальше
  • 1
  • ...
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: