/***************************************************************************/
/* NOTE: */
/* This document is copyright (c) by Oz Solomonovich. All non-commercial */
/* use is allowed, as long as this document not altered in any way, and */
/* due credit is given. */
/***************************************************************************/
// Options.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "Options.h"
#include "WndTabs.h"
#include "TabsWindow.h"
#include "TabManagerWindow.h"
#include "Commands.h"
#include "Config.h"
#include "SelectCharDialog.h"
#include "InfoDlg.h"
#include "BugReportsDlg.h"
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_DYNAMIC(COptionsSheet, CPropertySheet)
IMPLEMENT_DYNCREATE(CArrangementPage, CPropertyPage)
IMPLEMENT_DYNCREATE(CMiscPage, CPropertyPage)
IMPLEMENT_DYNCREATE(CAboutPage, CPropertyPage)
/////////////////////////////////////////////////////////////////////////////
// COptionsSheet
COptionsSheet::COptionsSheet(int iInitialPage /* = 0*/, CWnd* pWndParent)
: CPropertySheet(IDS_OPTIONSSHEET_CAPTION, pWndParent)
{
AddPage(&m_ArrangmentPage);
AddPage(&m_TabDisplayPage);
AddPage(&m_MiscPage);
AddPage(&m_AboutPage);
if (iInitialPage < 0) iInitialPage += GetPageCount();
SetActivePage(iInitialPage);
}
COptionsSheet::~COptionsSheet()
{
}
BEGIN_MESSAGE_MAP(COptionsSheet, CPropertySheet)
//{{AFX_MSG_MAP(COptionsSheet)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COptionsSheet message handlers
int COptionsSheet::DoModal()
{
int iRetVal = CPropertySheet::DoModal();
if (iRetVal == IDOK)
{
WriteConfiguration();
}
return iRetVal;
}
/////////////////////////////////////////////////////////////////////////////
// CArrangementPage property page
CArrangementPage::CArrangementPage() : CPropertyPage(CArrangementPage::IDD)
{
//{{AFX_DATA_INIT(CArrangementPage)
m_RadioSnap = m_SavedRadioSnap = cfg_iSnap;
m_RadioOrientation = m_SavedRadioOrientation = cfg_iOrientation;
m_bPreserveOrder = m_SavedPreserveOrder = cfg_bPreserveOrder;
m_iRows = m_SavedRows = cfg_iRows;
m_AddOrder = m_SavedAddOrder = cfg_iAddOrder;
m_bFill1To9 = m_SavedFill1To9 = cfg_bFill1To9;
m_bPreserveNumbering = m_SavedPreserveNumbering = cfg_bPreserveNumbering;
//}}AFX_DATA_INIT
}
CArrangementPage::~CArrangementPage()
{
}
void CArrangementPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CArrangementPage)
DDX_Control(pDX, IDC_REORDER, m_Reorder);
DDX_Control(pDX, IDC_RENUMBER, m_Renumber);
DDX_Control(pDX, IDC_SPIN, m_RowSpin);
DDX_Radio(pDX, IDC_SNAPMDI, m_RadioSnap);
DDX_Radio(pDX, IDC_TOP, m_RadioOrientation);
DDX_Check(pDX, IDC_PRESERVE_ORDER, m_bPreserveOrder);
DDX_Text(pDX, IDC_ROWS, m_iRows);
DDV_MinMaxUInt(pDX, m_iRows, 1, 10);
DDX_Radio(pDX, IDC_FRONT, m_AddOrder);
DDX_Check(pDX, IDC_FILL1TO9, m_bFill1To9);
DDX_Check(pDX, IDC_PRESERVE_NUMBERING, m_bPreserveNumbering);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CArrangementPage, CPropertyPage)
//{{AFX_MSG_MAP(CArrangementPage)
ON_BN_CLICKED(IDC_SNAPMDI, OnSnapmdi)
ON_BN_CLICKED(IDC_SNAPWINDOW, OnSnapwindow)
ON_EN_CHANGE(IDC_ROWS, DoModify)
ON_BN_CLICKED(IDC_PRESERVE_ORDER, OnPreserveOrder)
ON_BN_CLICKED(IDC_PRESERVE_NUMBERING, OnPreserveNumbering)
ON_BN_CLICKED(IDC_BOTTOM, DoModify)
ON_BN_CLICKED(IDC_TOP, DoModify)
ON_BN_CLICKED(IDC_LEFT, DoModify)
ON_BN_CLICKED(IDC_RIGHT, DoModify)
ON_BN_CLICKED(IDC_FILL1TO9, DoModify)
ON_BN_CLICKED(IDC_FRONT, DoModify)
ON_BN_CLICKED(IDC_BACK, DoModify)
ON_BN_CLICKED(IDC_RENUMBER, OnRenumber)
ON_BN_CLICKED(IDC_REORDER, OnReorder)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CArrangementPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
OnPreserveOrder();
if (m_bPreserveOrder)
{
OnPreserveNumbering();
}
m_RowSpin.SetRange(1, 10);
if (cfg_iSnap != ssMDI)
GetDlgItem(IDC_TOP)->EnableWindow(FALSE);
m_Renumber.SetIcon(IDI_RENUMBER, 16, 16);
m_Reorder. SetIcon(IDI_REORDER, 16, 16);
return TRUE;
}
void CArrangementPage::OnSnapmdi()
{
SetModified();
GetDlgItem(IDC_TOP)->EnableWindow(TRUE);
}
void CArrangementPage::OnSnapwindow()
{
SetModified();
GetDlgItem(IDC_TOP)->EnableWindow(FALSE);
UpdateData();
if (m_RadioOrientation == soTop)
{
m_RadioOrientation = soBottom;
UpdateData(FALSE);
}
}
BOOL CArrangementPage::OnApply()
{
if (!UpdateData())
return FALSE;
if ((cfg_iSnap != m_RadioSnap ) ||
(cfg_iOrientation != m_RadioOrientation) ||
(cfg_bPreserveOrder != m_bPreserveOrder ) ||
(cfg_iRows != m_iRows ))
{
pGlobalActiveManager->SetManaging(false);
if (cfg_iSnap != m_RadioSnap)
{
cfg_iSnap = m_RadioSnap;
if (cfg_iSnap == ssMDI)
{
pGlobalActiveManager =
(CTabManagerWindow *)pGlobalMDIManager;
}
else
{
pGlobalActiveManager =
(CTabManagerWindow *)pGlobalActiveDSWindow;
}
}
cfg_bPreserveOrder = m_bPreserveOrder;
cfg_iOrientation = m_RadioOrientation;
cfg_iRows = m_iRows;
pGlobalTabs->UpdateStyle();
if (pGlobalActiveManager) pGlobalActiveManager->SetManaging(true);
}
cfg_bFill1To9 = m_bFill1To9;
cfg_iAddOrder = m_AddOrder;
cfg_bPreserveNumbering = m_bPreserveNumbering;
return CPropertyPage::OnApply();
}
void CArrangementPage::OnCancel()
{
m_RadioSnap = m_SavedRadioSnap;
m_RadioOrientation = m_SavedRadioOrientation;
m_iRows = m_SavedRows;
m_bPreserveOrder = m_SavedPreserveOrder;
m_bPreserveNumbering = m_SavedPreserveNumbering;
m_bFill1To9 = m_SavedFill1To9;
m_AddOrder = m_SavedAddOrder;
UpdateData(FALSE);
OnApply();
CPropertyPage::OnCancel();
}
void CArrangementPage::OnPreserveOrder()
{
static int idcs[] =
{
IDC_FILL1TO9, IDC_REORDER, IDC_PRESERVE_NUMBERING,
// ** //
IDC_RENUMBER, IDC_BACK, IDC_FRONT
};
SetModified();
UpdateData();
int count = sizeof(idcs)/sizeof(int);
if (m_bPreserveOrder) count -= 3;
for (int i = 0; i < count; i++)
{
GetDlgItem(idcs[i])->EnableWindow(m_bPreserveOrder);
}
if (m_bPreserveOrder)
{
OnPreserveNumbering();
}
}
void CArrangementPage::OnPreserveNumbering()
{
SetModified();
UpdateData();
GetDlgItem(IDC_RENUMBER)->EnableWindow(m_bPreserveNumbering);
GetDlgItem(IDC_FRONT) ->EnableWindow(!m_bPreserveNumbering);
GetDlgItem(IDC_BACK) ->EnableWindow(!m_bPreserveNumbering);
if (m_bPreserveNumbering)
{
m_AddOrder = aoBack;
UpdateData(FALSE);
}
}
void CArrangementPage::OnRenumber()
{
pGlobalTabs->Renumber();
}
void CArrangementPage::OnReorder()
{
pGlobalTabs->Reorder();
}
void CArrangementPage::DoModify()
{
SetModified();
}
/////////////////////////////////////////////////////////////////////////////
// CTabDisplayPage property page
IMPLEMENT_DYNCREATE(CTabDisplayPage, CPropertyPage)
CTabDisplayPage::CTabDisplayPage() : CPropertyPage(CTabDisplayPage::IDD)
{
m_SavedLimitCharacter = cfg_LimitCharacter;
//{{AFX_DATA_INIT(CTabDisplayPage)
m_bShowIcons = m_SavedShowIcons = cfg_bShowIcons;
m_bShowNumbers = m_SavedShowNumbers = cfg_bShowNumbers;
m_bStripPath = m_SavedStripPath = cfg_bStripPath;
m_bStripExt = m_SavedStripExt = cfg_bStripExt;
m_bDispRC = m_SavedDispRC = cfg_bDispRC;
m_bDispResLang = m_SavedDispResLang = cfg_bDispResLang;
m_bDispResType = m_SavedDispResType = cfg_bDispResType;
m_bDispRID = m_SavedDispRID = cfg_bDispRID;
m_bLimitChars = m_SavedLimitChars = cfg_bLimitChars;
m_bLimitResChars = m_SavedLimitResChars = cfg_bLimitResChars;
m_bLimitIgnoreExt = m_SavedLimitIgnoreExt = cfg_bLimitIgnoreExt;
m_bUseLimitChar = m_SavedUseLimitChar = cfg_bUseLimitChar;
m_iCharLimit = m_SavedCharLimit = cfg_iCharLimit;
m_LimitCharacter = "'";
//}}AFX_DATA_INIT
m_LimitCharacter += (unsigned char)m_SavedLimitCharacter;
m_LimitCharacter += "'";
}
CTabDisplayPage::~CTabDisplayPage()
{
}
void CTabDisplayPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTabDisplayPage)
DDX_Check(pDX, IDC_SHOWICONS, m_bShowIcons);
DDX_Check(pDX, IDC_SHOWNUMBERS, m_bShowNumbers);
DDX_Check(pDX, IDC_STRIPDIRS, m_bStripPath);
DDX_Check(pDX, IDC_STRIPEXT, m_bStripExt);
DDX_Check(pDX, IDC_DISP_RC, m_bDispRC);
DDX_Check(pDX, IDC_DISP_RESLANG, m_bDispResLang);
DDX_Check(pDX, IDC_DISP_RESTYPE, m_bDispResType);
DDX_Check(pDX, IDC_DISP_RID, m_bDispRID);
DDX_Check(pDX, IDC_LIMITCHARS, m_bLimitChars);
DDX_Check(pDX, IDC_LIMITRESCHARS, m_bLimitResChars);
DDX_Check(pDX, IDC_IGNOREEXT, m_bLimitIgnoreExt);
DDX_Check(pDX, IDC_USELIMITCHAR, m_bUseLimitChar);
DDX_Text(pDX, IDC_CHARLIMIT, m_iCharLimit);
DDV_MinMaxInt(pDX, m_iCharLimit, 1, 256);
DDX_Text(pDX, IDC_LIMITCHARACTER, m_LimitCharacter);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTabDisplayPage, CPropertyPage)
//{{AFX_MSG_MAP(CTabDisplayPage)
ON_BN_CLICKED(IDC_STRIPDIRS, DoModify)
ON_BN_CLICKED(IDC_LIMITCHARS, OnLimitchars)
ON_BN_CLICKED(IDC_SELECT, OnSelect)
ON_BN_CLICKED(IDC_SHOWNUMBERS, DoModify)
ON_BN_CLICKED(IDC_SHOWICONS, DoModify)
ON_BN_CLICKED(IDC_DISP_RC, DoModify)
ON_BN_CLICKED(IDC_DISP_RESLANG, DoModify)
ON_BN_CLICKED(IDC_DISP_RESTYPE, DoModify)
ON_BN_CLICKED(IDC_DISP_RID, DoModify)
ON_BN_CLICKED(IDC_LIMITRESCHARS, DoModify)
ON_BN_CLICKED(IDC_IGNOREEXT, DoModify)
ON_BN_CLICKED(IDC_STRIPEXT, DoModify)
ON_EN_CHANGE(IDC_CHARLIMIT, DoModify)
ON_BN_CLICKED(IDC_USELIMITCHAR, OnUselimitchar)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CTabDisplayPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
OnLimitchars();
EnableSelectButton();
return TRUE;
}
BOOL CTabDisplayPage::OnApply()
{
if (!UpdateData())
return FALSE;
pGlobalActiveManager->SetManaging(false);
cfg_bShowIcons = m_bShowIcons;
cfg_bShowNumbers = m_bShowNumbers;
cfg_bStripPath = m_bStripPath;
cfg_bDispRC = m_bDispRC;
cfg_bDispResLang = m_bDispResLang;
cfg_bDispResType = m_bDispResType;
cfg_bDispRID = m_bDispRID;
cfg_bLimitChars = m_bLimitChars;
cfg_bLimitResChars = m_bLimitResChars;
cfg_iCharLimit = m_iCharLimit;
cfg_bStripExt = m_bStripExt;
cfg_bUseLimitChar = m_bUseLimitChar;
cfg_bLimitIgnoreExt = m_bLimitIgnoreExt;
cfg_LimitCharacter = (unsigned char)m_LimitCharacter[1];
pGlobalTabs->UpdateStyle();
pGlobalActiveManager->SetManaging(true);
return CPropertyPage::OnApply();
}
void CTabDisplayPage::DoModify()
{
SetModified();
}
void CTabDisplayPage::OnCancel()
{
m_bShowIcons = m_SavedShowIcons;
m_bShowNumbers = m_SavedShowNumbers;
m_bStripPath = m_SavedStripPath;
m_bStripExt = m_SavedStripExt;
m_bDispRC = m_SavedDispRC;
m_bDispRID = m_SavedDispRID;
m_bDispResType = m_SavedDispResType;
m_bDispResLang = m_SavedDispResLang;
m_bLimitChars = m_SavedLimitChars;
m_bLimitResChars = m_SavedLimitResChars;
m_iCharLimit = m_SavedCharLimit;
m_bUseLimitChar = m_SavedUseLimitChar;
m_bLimitIgnoreExt = m_SavedLimitIgnoreExt;
m_LimitCharacter = "'";
m_LimitCharacter += (unsigned char)m_SavedLimitCharacter;
m_LimitCharacter += "'";
UpdateData(FALSE);
OnApply();
CPropertyPage::OnCancel();
}
void CTabDisplayPage::OnLimitchars()
{
CWnd *pWnd;
SetModified();
UpdateData();
pWnd = GetDlgItem(IDC_LIMITCHARS)->GetNextWindow();
while (pWnd->GetDlgCtrlID() != IDC_SELECT)
{
pWnd->EnableWindow(m_bLimitChars);
pWnd = pWnd->GetNextWindow();
}
EnableSelectButton();
}
void CTabDisplayPage::OnUselimitchar()
{
UpdateData();
SetModified();
EnableSelectButton();
}
void CTabDisplayPage::OnSelect()
{
CSelectCharDialog dlg((unsigned char)m_LimitCharacter[1]);
if (dlg.DoModal() == IDOK)
{
m_LimitCharacter = "'" + dlg.m_Char + "'";
UpdateData(FALSE);
SetModified();
}
}
void CTabDisplayPage::EnableSelectButton()
{
GetDlgItem(IDC_SELECT)->EnableWindow(m_bLimitChars && m_bUseLimitChar);
}
/////////////////////////////////////////////////////////////////////////////
// CMiscPage property page
CMiscPage::CMiscPage() : CPropertyPage(CMiscPage::IDD)
{
m_SavedShellKey = (cfg_iShellKey == VK_CONTROL? 0 : 1);
//{{AFX_DATA_INIT(CMiscPage)
m_bNoWU = m_SavedNoWU = cfg_bNoWorkspaceUtils;
m_bNoShellContext = m_SavedNoShellContext = cfg_bNoShellContext;
m_ShellKey = m_SavedShellKey;
m_bShowMenu = m_SavedShowMenu = cfg_bShowMenuButton;
m_bAutoRefresh = m_SavedAutoRefresh = cfg_bAutoRefresh;
m_iInterval = m_SavedInterval = cfg_iRefreshInterval;
m_iWinLimit = m_SavedWinLimit = cfg_iWindowLimit;
m_bLimitWin = m_SavedLimitWin = cfg_bUseWindowLimit;
//}}AFX_DATA_INIT
}
CMiscPage::~CMiscPage()
{
}
void CMiscPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMiscPage)
DDX_Check(pDX, IDC_NO_WU, m_bNoWU);
DDX_Check(pDX, IDC_NOSHELLCONTEXT, m_bNoShellContext);
DDX_Radio(pDX, IDC_CONTROL, m_ShellKey);
DDX_Check(pDX, IDC_SHOWMENU, m_bShowMenu);
DDX_Check(pDX, IDC_AUTOREFRESH, m_bAutoRefresh);
DDX_Text(pDX, IDC_INTERVAL, m_iInterval);
DDV_MinMaxInt(pDX, m_iInterval, 1, 10000);
DDX_Text(pDX, IDC_WINLIMIT, m_iWinLimit);
DDV_MinMaxInt(pDX, m_iWinLimit, 1, 1000);
DDX_Check(pDX, IDC_LIMITWIN, m_bLimitWin);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMiscPage, CPropertyPage)
//{{AFX_MSG_MAP(CMiscPage)
ON_BN_CLICKED(IDC_NO_WU, DoModify)
ON_BN_CLICKED(IDC_DOWIZARD, OnWizard)
ON_BN_CLICKED(IDC_AUTOREFRESH, OnAutorefresh)
ON_BN_CLICKED(IDC_LIMITWIN, OnLimitwin)
ON_BN_CLICKED(IDC_NOSHELLCONTEXT, DoModify)
ON_BN_CLICKED(IDC_CONTROL, DoModify)
ON_BN_CLICKED(IDC_SHIFT, DoModify)
ON_BN_CLICKED(IDC_SHOWMENU, DoModify)
ON_EN_CHANGE(IDC_INTERVAL, DoModify)
ON_EN_CHANGE(IDC_WINLIMIT, DoModify)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CMiscPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
OnAutorefresh();
OnLimitwin();
return TRUE;
}
BOOL CMiscPage::OnApply()
{
if (!UpdateData())
return FALSE;
if (m_SavedShowMenu && !m_bShowMenu && cfg_bShowMenuButton &&
AfxMessageBox(IDS_OPTIONSWARNING, MB_YESNO | MB_ICONINFORMATION) != IDYES)
{
return FALSE;
}
if (cfg_bShowMenuButton != m_bShowMenu)
{
pGlobalActiveManager->SetManaging(false);
cfg_bShowMenuButton = m_bShowMenu;
pGlobalTabs->UpdateStyle();
pGlobalActiveManager->SetManaging(true);
}
cfg_bAutoRefresh = m_bAutoRefresh;
cfg_iRefreshInterval = m_iInterval;
cfg_bUseWindowLimit = m_bLimitWin;
cfg_iWindowLimit = m_iWinLimit;
cfg_bNoWorkspaceUtils = m_bNoWU;
cfg_bNoShellContext = m_bNoShellContext;
cfg_iShellKey = (m_ShellKey == 0? VK_CONTROL : VK_SHIFT);
return CPropertyPage::OnApply();
}
void CMiscPage::OnCancel()
{
m_bShowMenu = m_SavedShowMenu;
m_bAutoRefresh = m_SavedAutoRefresh;
m_iInterval = m_SavedInterval;
m_bLimitWin = m_SavedLimitWin;
m_iWinLimit = m_SavedWinLimit;
m_bNoWU = m_SavedNoWU;
m_bNoShellContext = m_SavedNoShellContext;
m_ShellKey = m_SavedShellKey;
UpdateData(FALSE);
OnApply();
CPropertyPage::OnCancel();
}
void CMiscPage::OnWizard()
{
pGlobalActiveManager->PostMessage(WM_DOWIZARD, 0x1234, 0x4320);
}
void CMiscPage::DoModify()
{
SetModified();
}
void CMiscPage::OnAutorefresh()
{
if (UpdateData())
{
GetDlgItem(ID_EVERY) ->EnableWindow(m_bAutoRefresh);
GetDlgItem(IDC_INTERVAL) ->EnableWindow(m_bAutoRefresh);
GetDlgItem(IDC_INTERVALTEXT)->EnableWindow(m_bAutoRefresh);
SetModified();
}
else
{
m_bAutoRefresh = !m_bAutoRefresh;
UpdateData(FALSE);
}
}
void CMiscPage::OnLimitwin()
{
if (UpdateData())
{
GetDlgItem(IDC_WINLIMIT) ->EnableWindow(m_bLimitWin);
GetDlgItem(IDC_WINLIMIT_TEXT)->EnableWindow(m_bLimitWin);
SetModified();
}
else
{
m_bLimitWin = !m_bLimitWin;
UpdateData(FALSE);
}
}
/////////////////////////////////////////////////////////////////////////////
// CAboutPage property page
CAboutPage::CAboutPage() : CPropertyPage(CAboutPage::IDD)
{
//{{AFX_DATA_INIT(CAboutPage)
//}}AFX_DATA_INIT
m_psp.dwFlags |= PSP_USEICONID;
m_psp.pszIcon = MAKEINTRESOURCE(IDI_ABOUT);
}
CAboutPage::~CAboutPage()
{
}
void CAboutPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutPage)
DDX_Control(pDX, IDC_BUGREPORTS, m_Bugs);
DDX_Control(pDX, IDC_INFO, m_Info);
DDX_Control(pDX, IDC_ANIMATE, m_Animate);
DDX_Control(pDX, IDC_TAB, m_TabCtrl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutPage, CPropertyPage)
//{{AFX_MSG_MAP(CAboutPage)
ON_WM_CREATE()
ON_BN_CLICKED(IDC_BUGREPORTS, OnBugreports)
ON_BN_CLICKED(IDC_INFO, OnInfo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CAboutPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
TC_ITEM tci;
tci.mask = TCIF_TEXT;
for (int i = 0; i < 4; i++)
{
tci.pszText = " ";
m_TabCtrl.InsertItem(0, &tci);
}
tci.pszText = "Window Tabs";
m_TabCtrl.InsertItem(0, &tci);
CWnd *pVersion = GetDlgItem(IDC_VERSION);
CString cVersion;
pVersion->GetWindowText(cVersion);
CString_Replace(cVersion, _T("%1"), g_cVersion);
pVersion->SetWindowText(cVersion);
m_Animate.Open(IDR_LOGOAVI);
HDC hDC = ::GetDC(NULL);
if (::GetDeviceCaps(hDC, NUMCOLORS) > 0) // <= 256 colors?
{
// hide the animation and show the low res image
m_Animate.ShowWindow(SW_HIDE);
GetDlgItem(IDB_BIGBUTTON)->ShowWindow(SW_SHOW);
}
::ReleaseDC(NULL, hDC);
m_Bugs.SetIcon(IDI_BUG, 16, 16);
m_Info.SetIcon(IDI_INFO, 16, 16);
return TRUE;
}
BOOL CAboutPage::OnSetActive()
{
m_Animate.Play(0, -1, 1);
return CPropertyPage::OnSetActive();
}
void CAboutPage::OnBugreports()
{
CBugReportsDlg dlg;
dlg.DoModal();
}
void CAboutPage::OnInfo()
{
CInfoDlg dlg;
dlg.DoModal();
}