#include "StdAfx.h" #include "Bitmap.h" #include "T2.h" #include "T2OpenningWindow.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #line 27 IMPLEMENT_DYNCREATE(T2OpenningWindow, CFrameWnd) T2OpenningWindow::T2OpenningWindow() { _CC = 1; #line 32 mBitmap = new Bitmap; if (!mBitmap->LoadFile("T2.dat")) { delete mBitmap; mBitmap = NULL; } } /*virtual*/ T2OpenningWindow::~T2OpenningWindow() { if (mBitmap) delete mBitmap; } BEGIN_MESSAGE_MAP(T2OpenningWindow, CFrameWnd) //{{AFX_MSG_MAP(T2OpenningWindow) ON_WM_PAINT() ON_WM_LBUTTONDOWN() ON_WM_ERASEBKGND() //}}AFX_MSG_MAP END_MESSAGE_MAP() void T2OpenningWindow::ShowOpenningWindow() { CString text; mWndClass = AfxRegisterWndClass(0, NULL, (HBRUSH) GetStockObject(BLACK_BRUSH)); RECT windowRect; windowRect.left = 0; windowRect.top = 0; windowRect.right = 640; windowRect.bottom = 480; Create(mWndClass, text, WS_MAXIMIZE | WS_POPUP, windowRect, AfxGetMainWnd(), NULL, WS_EX_TOPMOST); RECT rect; ::GetWindowRect(::GetDesktopWindow(), &rect); MoveWindow(-5, -5, rect.right + 10, rect.bottom + 10); ShowWindow(SW_SHOW); SetActiveWindow(); PlaySound(MAKEINTRESOURCE(ID_OPENING_SOUND), AfxGetInstanceHandle(), SND_ASYNC | SND_NOWAIT | SND_RESOURCE); T2_APP->app_vfB4(); DWORD startTick = GetTickCount(); while (labs(GetTickCount() - startTick) < 2000) T2_APP->app_vfB4(); if (mBitmap) _CC = 0; InvalidateRect(NULL); startTick = GetTickCount(); while (labs(GetTickCount() - startTick) < 3000) T2_APP->app_vfB4(); ShowWindow(SW_HIDE); DestroyWindow(); } void T2OpenningWindow::OnPaint() { #pragma var_order(rect, centerY, dc, centerX) CPaintDC dc(this); RECT rect; ::GetWindowRect(::GetDesktopWindow(), &rect); int centerX = rect.right / 2; int centerY = rect.bottom / 2; if (_CC == 0) { #pragma var_order(paletteH, width, height, hdc, palette) HDC hdc = dc; HPALETTE paletteH = mBitmap->CreatePalette(); CPalette palette; SelectPalette(dc, paletteH, false); RealizePalette(dc); int width = mBitmap->GetWidth(); int height = mBitmap->GetHeight(); mBitmap->Draw(hdc, centerX - width / 2, centerY - height / 2); SelectPalette(hdc, palette, false); DeleteObject(paletteH); } if (_CC == 1) { CDC newDC; CBitmap bitmap; bitmap.LoadBitmap(IDB_SPLASH_SCREEN); newDC.CreateCompatibleDC(&dc); newDC.SelectObject(&bitmap); dc.SelectPalette(&mPalette, false); dc.RealizePalette(); dc.BitBlt(centerX - 240, centerY - 188, 480, 376, &newDC, 0, 0, SRCCOPY); } } void T2OpenningWindow::OnLButtonDown(UINT nFlags, CPoint point) { CWnd::OnLButtonDown(nFlags, point); } BOOL T2OpenningWindow::OnEraseBkgnd(CDC *pDC) { #pragma var_order(brush, pen, clientRect, windowRect) CBrush brush; brush.CreateSolidBrush(PALETTERGB(204, 204, 204)); CRect clientRect; GetClientRect(clientRect); CPen pen; pen.CreatePen(PS_SOLID, 0, PALETTERGB(255, 0, 0)); CRect windowRect; GetWindowRect(windowRect); pDC->SelectObject(pen); pDC->MoveTo(windowRect.right, windowRect.top); pDC->LineTo(windowRect.left - 1, windowRect.top); pDC->LineTo(windowRect.left - 1, windowRect.bottom); pDC->MoveTo(windowRect.right, windowRect.top); pDC->LineTo(windowRect.right, windowRect.bottom); pDC->LineTo(windowRect.left, windowRect.bottom); return CFrameWnd::OnEraseBkgnd(pDC); }