📄 resorgsplashwnd.cpp
字号:
/************************************************************************
*
* Resource ID Organiser Core Library
*
* (c) Copyright 2000-2004 by Riverblade Limited (UK). All rights reserved.
*
************************************************************************
*
* Description : CResOrgSplashWnd - splash screen class
*
* Compiler : Microsoft Visual C++ 6.0, Service Pack 3 or later
* Microsoft Visual C++ .NET 2003
*
* Target
* Environment : Windows 98/NT/2000/XP
*
* NOTE:
*
* This software is provided "as is". All title and copyrights in and
* to the software, including but not limited to any images, text etc.
* etc. incorporated into it, are the property of Anna-Jayne Metcalfe
* and Riverblade Limited, except where acknowledged otherwise.
*
* Your may freely use this code in your own products, PROVIDED
* this notice is not removed or modified.
*
* For support and updates please visit http://www.riverblade.co.uk/products/resorg
* or email support@riverblade.co.uk
*
************************************************************************
*
* MODIFICATION HISTORY:
*
* This is a controlled document. See project configuration
* control tool for latest version and full version history.
*
* $Archive: /Projects/AddIns/ResOrg/ResOrgCore/ResOrgSplashWnd.cpp $
* $Revision: 13 $
* $Date: 13/12/04 3:53 $
* $Author: Anna $
*
* $History: ResOrgSplashWnd.cpp $
*
* ***************** Version 13 *****************
* User: Anna Date: 13/12/04 Time: 3:53
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* 1. Added company logo and legal warning
* 2. Updated file banners
*
* ***************** Version 12 *****************
* User: Anna Date: 15/04/03 Time: 20:37
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* 1. Removed unnecessary file guards (#pragma once works well enough)
* 2. Updated file banners
*
* ***************** Version 11 *****************
* User: Anna Date: 19/03/03 Time: 18:41
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Added a fade effect when the window closes
*
* ***************** Version 10 *****************
* User: Anna Date: 7/03/03 Time: 11:58
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Minor corrections
*
* ***************** Version 9 *****************
* User: Anna Date: 2/01/03 Time: 0:17
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Improvements to disclaimer and expiry text using CNGHtmlStaticCtrl
*
* ***************** Version 8 *****************
* User: Anna Date: 25/11/02 Time: 15:14
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Changed website address in banner
*
* ***************** Version 7 *****************
* User: Anna Date: 22/10/02 Time: 13:24
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Changed name/mail address (at last!)
*
* ***************** Version 6 *****************
* User: Andy Date: 7/06/02 Time: 17:04
* Updated in $/Projects/AddIns/ResOrg/ResOrgCore
* Renamed the ResOrgUtils module to ResOrgCore. Updated file banners
* accordingly
*
* ***************** Version 5 *****************
* User: Andy Date: 7/06/02 Time: 9:36
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* 1. The Splash Screen and About Box now display the target environment
* (Visual C++ 5.0/6.0 or Visual C++.NET)
* 2. Updated file banners
*
* ***************** Version 4 *****************
* User: Andy Date: 11/10/01 Time: 12:13p
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* Improved the splash screen and about box
*
* ***************** Version 3 *****************
* User: Andy Date: 23/05/01 Time: 16:10
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* Display file version instead of product version
*
* ***************** Version 2 *****************
* User: Andy Date: 24/04/01 Time: 12:44
* Updated in $/Projects/AddIns/ResOrg/ResOrgUtils
* Added expiry warning
*
* ***************** Version 1 *****************
* User: Andy Date: 21/04/01 Time: 7:16
* Created in $/Projects/AddIns/ResOrg/ResOrgUtils
*
* $Nokeywords: $
*
************************************************************************/
#include "StdAfx.h"
#include "ResOrgCore_Priv.h"
#include "ResOrgOptions.h"
#include "ResOrgSplashWnd.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define COLOUR_SPLASHWND_BACKGROUND RGB(255, 255, 204)
/////////////////////////////////////////////////////////////////////////////
// CResOrgSplashWnd class
CResOrgSplashWnd::CResOrgSplashWnd(UINT nIDTemplate /*= CResOrgSplashWnd::IDD*/, CWnd* pParent /*=NULL*/)
: CResOrgSplashWnd_BASE(nIDTemplate, pParent)
{
m_sPlatform.LoadString(IDS_RESORG_PLATFORM);
m_sVersion = _T("");
m_sCopyright = _T("");
m_sLegalWarning.LoadString(IDS_PRODUCT_LEGAL_WARNING);
#if _MSC_VER >= 1300
m_sPlatform += _T(" .NET");
#else
m_sPlatform += _T(" 5.0/6.0");
#endif
}
void CResOrgSplashWnd::DoDataExchange(CDataExchange* pDX)
{
CResOrgSplashWnd_BASE::DoDataExchange(pDX);
DDX_Text(pDX, IDC_RESORG_PLATFORM, m_sPlatform);
DDX_Text(pDX, IDC_RESORG_VERSION, m_sVersion);
DDX_Text(pDX, IDC_RESORG_COPYRIGHT, m_sCopyright);
DDX_Control(pDX, IDC_RESORG_DISCLAIMER, m_ctrlDisclaimer);
DDX_Control(pDX, IDC_RESORG_EXPIRY, m_ctrlExpiry);
DDX_Text(pDX, IDC_PRODUCT_LEGAL_WARNING, m_sLegalWarning);
}
BEGIN_MESSAGE_MAP(CResOrgSplashWnd, CResOrgSplashWnd_BASE)
//{{AFX_MSG_MAP(CResOrgSplashWnd)
ON_WM_CTLCOLOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CResOrgSplashWnd message handlers
/******************************************************************************
* Called when the dialog is created
*
******************************************************************************/
BOOL CResOrgSplashWnd::OnInitDialog(void)
{
CResOrgSplashWnd_BASE::OnInitDialog(); // returns TRUE unless you set the focus to a control
// Create the background brush
m_Brush.CreateSolidBrush(COLOUR_SPLASHWND_BACKGROUND);
m_ctrlDisclaimer.SetBkColor(COLOUR_SPLASHWND_BACKGROUND);
m_ctrlExpiry.SetBkColor(COLOUR_SPLASHWND_BACKGROUND);
// Set the font for the app title
// TO DO: get the font name and size from the string table
CWnd* pWnd = GetDlgItem(IDC_RESORG_TITLE);
if (pWnd != NULL)
{
HDC hDC = ::GetDC(NULL);
int nFontSize = 14;
LONG nHeight = 0 - ::GetDeviceCaps(hDC, LOGPIXELSY) * nFontSize / 72;
::ReleaseDC(NULL, hDC);
m_fontTitle.SetFaceName( _T("Verdana") );
m_fontTitle.SetBold(TRUE);
m_fontTitle.SetHeight(nHeight);
pWnd->SetFont(&m_fontTitle);
}
pWnd = GetDlgItem(IDC_RESORG_VERSION);
if (pWnd != NULL)
{
HDC hDC = ::GetDC(NULL);
int nFontSize = 10;
LONG nHeight = 0 - ::GetDeviceCaps(hDC, LOGPIXELSY) * nFontSize / 72;
::ReleaseDC(NULL, hDC);
m_fontVersion.SetFaceName( _T("Verdana") );
m_fontVersion.SetBold(TRUE);
m_fontVersion.SetItalic(TRUE);
m_fontVersion.SetHeight(nHeight);
pWnd->SetFont(&m_fontVersion);
}
// Read the fields we need from the version resource
// If any can't be found, they will be blank
CNGModuleVersion ver;
ver.GetFileVersionInfo();
m_sVersion = _T("Version ") + ver.GetValue( _T("FileVersion") );
m_sCopyright = ver.GetValue( _T("LegalCopyright") );
UpdateData(FALSE);
CString sDisclaimer;
sDisclaimer.LoadString(IDS_RESORG_DISCLAIMER);
m_ctrlDisclaimer.SetWindowText(sDisclaimer);
#ifdef _RESORG_EXPIRY_DATE
CString sExpiryMsg;
if (::IsVersionExpired() )
{
sExpiryMsg.LoadString(IDP_RESORG_EXPIRED);
}
else
{
CTime timeExpires = GetVersionExpiryDate();
CString sExpiryTime = timeExpires.Format( _T("%A, %d %B, %Y") );
sExpiryMsg.Format(IDP_RESORG_EXPIRY,
sExpiryTime);
}
m_ctrlExpiry.SetWindowText(sExpiryMsg);
m_ctrlExpiry.ShowWindow(SW_RESTORE);
#endif
return TRUE; // Return TRUE unless you set the focus to a control
}
/// Create and display the splash window
///
/// Overriden so that the app can create the splash window without knowing the dialog template ID
BOOL CResOrgSplashWnd::Create(CWnd* pParent)
{
if (!CResOrgSplashWnd_BASE::Create(CResOrgSplashWnd::IDD, pParent))
{
TRACE0("CResOrgSplashWnd: Warning: creation of dialog failed\n");
return FALSE;
}
return TRUE;
}
/// Override to allow window fade effects on close
BOOL CResOrgSplashWnd::DestroyWindow(void)
{
BYTE byAlpha = (BYTE)::AfxGetApp()->GetProfileInt( OPTIONS,
_T("Splash Screen Alpha"),
255);
int nFadeTime = (UINT)::AfxGetApp()->GetProfileInt( OPTIONS,
_T("Splash Screen Fade"),
750);
if (nFadeTime > 0)
{
new CNGFaderWnd(this, nFadeTime, byAlpha);
}
return CResOrgSplashWnd_BASE::DestroyWindow();
}
/////////////////////////////////////////////////////////////////////////////
// CResOrgSplashWnd message handlers
HBRUSH CResOrgSplashWnd::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
UNREFERENCED_PARAMETER(nCtlColor);
HBRUSH hbr = m_Brush;
UINT uID = pWnd->GetDlgCtrlID();
if (uID > 0)
{
// Set the background mode for text to transparent
// so the background will show through
pDC->SetBkMode(TRANSPARENT);
switch (uID)
{
case IDC_RESORG_TITLE:
case IDC_RESORG_PLATFORM:
case IDC_RESORG_VERSION:
pDC->SetTextColor( RGB(0, 0, 200) );
break;
default:
break;
}
}
return hbr;
}
/////////////////////////////////////////////////////////////////////////////
// CResOrgSplashWnd implementation
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -