source: trunk/XSUCL/Splash.cpp @ 42

Last change on this file since 42 was 14, checked in by marrucho, 11 years ago

xsuc light lecture uniquement

File size: 3.1 KB
Line 
1// CG: This file was added by the Splash Screen component.
2// Splash.cpp : implementation file
3//
4
5#include "stdafx.h"  // e. g. stdafx.h
6#include "resource.h"  // e.g. resource.h
7
8#include "Splash.h"  // e.g. splash.h
9
10#ifdef _DEBUG
11#define new DEBUG_NEW
12#undef THIS_FILE
13static char BASED_CODE THIS_FILE[] = __FILE__;
14#endif
15
16/////////////////////////////////////////////////////////////////////////////
17//   Splash Screen class
18
19BOOL CSplashWnd::c_bShowSplashWnd;
20CSplashWnd* CSplashWnd::c_pSplashWnd;
21CSplashWnd::CSplashWnd()
22{
23}
24
25CSplashWnd::~CSplashWnd()
26{
27        // Clear the static window pointer.
28        ASSERT(c_pSplashWnd == this);
29        c_pSplashWnd = NULL;
30}
31
32BEGIN_MESSAGE_MAP(CSplashWnd, CWnd)
33        //{{AFX_MSG_MAP(CSplashWnd)
34        ON_WM_CREATE()
35        ON_WM_PAINT()
36        ON_WM_TIMER()
37        //}}AFX_MSG_MAP
38END_MESSAGE_MAP()
39
40void CSplashWnd::EnableSplashScreen(BOOL bEnable /*= TRUE*/)
41{
42        c_bShowSplashWnd = bEnable;
43}
44
45void CSplashWnd::ShowSplashScreen(CWnd* pParentWnd /*= NULL*/)
46{
47        if (!c_bShowSplashWnd || c_pSplashWnd != NULL)
48                return;
49
50        // Allocate a new splash screen, and create the window.
51        c_pSplashWnd = new CSplashWnd;
52        if (!c_pSplashWnd->Create(pParentWnd))
53                delete c_pSplashWnd;
54        else
55                c_pSplashWnd->UpdateWindow();
56}
57
58BOOL CSplashWnd::PreTranslateAppMessage(MSG* pMsg)
59{
60        if (c_pSplashWnd == NULL)
61                return FALSE;
62
63        // If we get a keyboard or mouse message, hide the splash screen.
64        if (pMsg->message == WM_KEYDOWN ||
65            pMsg->message == WM_SYSKEYDOWN ||
66            pMsg->message == WM_LBUTTONDOWN ||
67            pMsg->message == WM_RBUTTONDOWN ||
68            pMsg->message == WM_MBUTTONDOWN ||
69            pMsg->message == WM_NCLBUTTONDOWN ||
70            pMsg->message == WM_NCRBUTTONDOWN ||
71            pMsg->message == WM_NCMBUTTONDOWN)
72        {
73                c_pSplashWnd->HideSplashScreen();
74                return TRUE;    // message handled here
75        }
76
77        return FALSE;   // message not handled
78}
79
80BOOL CSplashWnd::Create(CWnd* pParentWnd /*= NULL*/)
81{
82        if (!m_bitmap.LoadBitmap(IDB_SPLASH))
83                return FALSE;
84
85        BITMAP bm;
86        m_bitmap.GetBitmap(&bm);
87
88        return CreateEx(0,
89                AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC_ARROW)),
90                NULL, WS_POPUP | WS_VISIBLE, 0, 0, bm.bmWidth, bm.bmHeight, pParentWnd->GetSafeHwnd(), NULL);
91}
92
93void CSplashWnd::HideSplashScreen()
94{
95        // Destroy the window, and update the mainframe.
96        DestroyWindow();
97        AfxGetMainWnd()->UpdateWindow();
98}
99
100void CSplashWnd::PostNcDestroy()
101{
102        // Free the C++ class.
103        delete this;
104}
105
106int CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
107{
108        if (CWnd::OnCreate(lpCreateStruct) == -1)
109                return -1;
110
111        // Center the window.
112        CenterWindow();
113
114        // Set a timer to destroy the splash screen.
115        SetTimer(1, 3000, NULL);
116
117        return 0;
118}
119
120void CSplashWnd::OnPaint()
121{
122        CPaintDC dc(this);
123
124        CDC dcImage;
125        if (!dcImage.CreateCompatibleDC(&dc))
126                return;
127
128        BITMAP bm;
129        m_bitmap.GetBitmap(&bm);
130
131        // Paint the image.
132        CBitmap* pOldBitmap = dcImage.SelectObject(&m_bitmap);
133        dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dcImage, 0, 0, SRCCOPY);
134        dcImage.SelectObject(pOldBitmap);
135}
136
137void CSplashWnd::OnTimer(UINT nIDEvent)
138{
139        // Destroy the splash screen window.
140        HideSplashScreen();
141}
Note: See TracBrowser for help on using the repository browser.