|
|
#include "stdafx.h"
#include "Msconfig.h"
#include "MSConfigCtl.h"
#include "pagebase.h"
#include "pagegeneral.h"
#include "pagebootini.h"
#include "pageini.h"
#include "pageservices.h"
#include "pagestartup.h"
#include <htmlhelp.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CMSConfigSheet
IMPLEMENT_DYNAMIC(CMSConfigSheet, CPropertySheet)
CMSConfigSheet::CMSConfigSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage) : CPropertySheet(nIDCaption, pParentWnd, iSelectPage) { m_iSelectedPage = iSelectPage; m_psh.dwFlags |= PSH_USEPAGELANG; }
CMSConfigSheet::CMSConfigSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage) : CPropertySheet(pszCaption, pParentWnd, iSelectPage) { m_iSelectedPage = iSelectPage; m_psh.dwFlags |= PSH_USEPAGELANG; }
CMSConfigSheet::~CMSConfigSheet() { }
BEGIN_MESSAGE_MAP(CMSConfigSheet, CPropertySheet) //{{AFX_MSG_MAP(CMSConfigSheet)
ON_WM_HELPINFO() ON_COMMAND(ID_HELP, OnHelp) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
//-----------------------------------------------------------------------------
// Catch the help messages to show the MSConfig help file.
//-----------------------------------------------------------------------------
BOOL CMSConfigSheet::OnHelpInfo(HELPINFO * pHelpInfo) { TCHAR szHelpPath[MAX_PATH];
// Try to find a localized help file to open (bug 460691). It should be
// located in %windir%\help\mui\<LANGID>.
if (::ExpandEnvironmentStrings(_T("%SystemRoot%\\help\\mui"), szHelpPath, MAX_PATH)) { CString strLanguageIDPath;
LANGID langid = GetUserDefaultUILanguage(); strLanguageIDPath.Format(_T("%s\\%04x\\msconfig.chm"), szHelpPath, langid);
if (FileExists(strLanguageIDPath)) { ::HtmlHelp(::GetDesktopWindow(), strLanguageIDPath, HH_DISPLAY_TOPIC, 0); return TRUE; } }
if (::ExpandEnvironmentStrings(_T("%windir%\\help\\msconfig.chm"), szHelpPath, MAX_PATH)) ::HtmlHelp(::GetDesktopWindow(), szHelpPath, HH_DISPLAY_TOPIC, 0); return TRUE; }
void CMSConfigSheet::OnHelp() { OnHelpInfo(NULL); }
//-----------------------------------------------------------------------------
// Override this so we can make each page the active page, forcing each one's
// OnInitDialog to be called.
//-----------------------------------------------------------------------------
extern CPageIni * ppageSystemIni;
BOOL CMSConfigSheet::OnInitDialog() { CPropertySheet::OnInitDialog();
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32.
HICON hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); SetIcon(hIcon, TRUE); // Set big icon
SetIcon(hIcon, FALSE); // Set small icon
// Change the caption of the system.ini tab.
if (ppageSystemIni) { int nItem = GetPageIndex(ppageSystemIni); if (nItem > 0) { CTabCtrl * pTabs = GetTabControl(); if (pTabs) { CString strCaption; strCaption.LoadString(IDS_SYSTEMINI_CAPTION); TCITEM tci; tci.mask = TCIF_TEXT; tci.pszText = (LPTSTR)(LPCTSTR)strCaption;
pTabs->SetItem(nItem, &tci); } } }
// Set each page active (before we make the dialog visible) to force
// the WM_INITDIALOG message to be sent.
for (int iPage = 0; iPage < GetPageCount(); iPage++) SetActivePage(iPage); SetActivePage(m_iSelectedPage);
return TRUE; // return TRUE unless you set the focus to a control
}
//-----------------------------------------------------------------------------
// Check to see if the specified file (with path information) exists on
// the machine.
//-----------------------------------------------------------------------------
BOOL FileExists(const CString & strFile) { WIN32_FIND_DATA finddata; HANDLE h = FindFirstFile(strFile, &finddata);
if (INVALID_HANDLE_VALUE != h) { FindClose(h); return TRUE; }
return FALSE; }
|