|
|
//+--------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1994 - 1998.
//
// File: LocPkg.cpp
//
// Contents: locale - platform property page
//
// Classes: CLocPkg
//
// History: 03-14-1998 stevebl Commented
//
//---------------------------------------------------------------------------
#include "precomp.hxx"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CLocPkg property page
IMPLEMENT_DYNCREATE(CLocPkg, CPropertyPage)
CLocPkg::CLocPkg() : CPropertyPage(CLocPkg::IDD) { //{{AFX_DATA_INIT(CLocPkg)
m_fWin64 = FALSE; m_fX86 = FALSE; m_ProcessorArch = PROCESSOR_ARCHITECTURE_IA64; //}}AFX_DATA_INIT
m_pIClassAdmin = NULL; }
CLocPkg::~CLocPkg() { *m_ppThis = NULL; if (m_pIClassAdmin) { m_pIClassAdmin->Release(); } }
void CLocPkg::DoDataExchange(CDataExchange* pDX) { CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLocPkg)
DDX_Check(pDX, IDC_CHECK1, m_fWin64); DDX_Check(pDX, IDC_CHECK2, m_fX86); //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLocPkg, CPropertyPage) //{{AFX_MSG_MAP(CLocPkg)
ON_BN_CLICKED(IDC_CHECK1, OnChange) ON_BN_CLICKED(IDC_CHECK2, OnChange) ON_WM_CONTEXTMENU() //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLocPkg message handlers
BOOL CLocPkg::OnApply() { PLATFORMINFO * pPlatformInfo = m_pData->m_pDetails->pPlatformInfo; UINT i = 0; if (m_fX86) { i++; } if (m_fWin64) { i++; } if (i == 0) { CString szTitle; szTitle.LoadString(IDS_BADDATA); CString szText; szText.LoadString(IDS_PLATFORMREQUIRED); MessageBox(szText, szTitle, MB_ICONEXCLAMATION | MB_OK); return FALSE; } m_pData->m_pDetails->pPlatformInfo = new PLATFORMINFO; m_pData->m_pDetails->pPlatformInfo->cPlatforms = i; m_pData->m_pDetails->pPlatformInfo->prgPlatform = new CSPLATFORM[i]; m_pData->m_pDetails->pPlatformInfo->cLocales = pPlatformInfo->cLocales; m_pData->m_pDetails->pPlatformInfo->prgLocale = pPlatformInfo->prgLocale; i = 0; if (m_fX86) { m_pData->m_pDetails->pPlatformInfo->prgPlatform[i].dwPlatformId = VER_PLATFORM_WIN32_NT; m_pData->m_pDetails->pPlatformInfo->prgPlatform[i].dwVersionHi = 5; m_pData->m_pDetails->pPlatformInfo->prgPlatform[i].dwVersionLo = 0; m_pData->m_pDetails->pPlatformInfo->prgPlatform[i].dwProcessorArch = PROCESSOR_ARCHITECTURE_INTEL; i++; } if (m_fWin64) { m_pData->m_pDetails->pPlatformInfo->prgPlatform[i].dwPlatformId = VER_PLATFORM_WIN32_NT; m_pData->m_pDetails->pPlatformInfo->prgPlatform[i].dwVersionHi = 5; m_pData->m_pDetails->pPlatformInfo->prgPlatform[i].dwVersionLo = 0; m_pData->m_pDetails->pPlatformInfo->prgPlatform[i].dwProcessorArch = m_ProcessorArch; } HRESULT hr = S_OK; #if 0
hr = m_pIClassAdmin->UpgradePackage(m_pData->m_pDetails->pszPackageName, m_pData->m_pDetails); if (FAILED(hr)) { PLATFORMINFO * pTemp = m_pData->m_pDetails->pPlatformInfo; m_pData->m_pDetails->pPlatformInfo = pPlatformInfo; pPlatformInfo = pTemp; } else MMCPropertyChangeNotify(m_hConsoleHandle, (long) m_cookie); #endif
delete [] pPlatformInfo->prgPlatform; delete pPlatformInfo; if (FAILED(hr)) { CString sz; sz.LoadString(IDS_CHANGEFAILED); ReportGeneralPropertySheetError(sz, hr); return FALSE; } SetModified(FALSE); return CPropertyPage::OnApply(); }
BOOL CLocPkg::OnInitDialog() { UINT i; for (i = m_pData->m_pDetails->pPlatformInfo->cPlatforms; i--;) { switch (m_pData->m_pDetails->pPlatformInfo->prgPlatform[i].dwProcessorArch) { case PROCESSOR_ARCHITECTURE_INTEL: m_fX86 = TRUE; break; case PROCESSOR_ARCHITECTURE_AMD64: m_ProcessorArch = PROCESSOR_ARCHITECTURE_AMD64; m_fWin64 = TRUE; break; case PROCESSOR_ARCHITECTURE_IA64: m_ProcessorArch = PROCESSOR_ARCHITECTURE_IA64; m_fWin64 = TRUE; break; default: break; } } TCHAR szBuffer[256]; CString sz; i = 0; while (i < m_pData->m_pDetails->pPlatformInfo->cLocales) { GetLocaleInfo(m_pData->m_pDetails->pPlatformInfo->prgLocale[i], LOCALE_SLANGUAGE, szBuffer, 256); sz = szBuffer; #ifdef SHOWCOUNTRY
GetLocaleInfo(m_pData->m_pDetails->pPlatformInfo->prgLocale[i], LOCALE_SCOUNTRY, szBuffer, 256); sz += _T(" - "); sz += szBuffer; #endif
i++; ((CListBox *)GetDlgItem(IDC_LIST1))->AddString(sz); }
CPropertyPage::OnInitDialog();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CLocPkg::OnChange() { SetModified(); }
LRESULT CLocPkg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_HELP: StandardHelp((HWND)((LPHELPINFO) lParam)->hItemHandle, IDD); return 0; case WM_USER_REFRESH: // UNDONE
return 0; case WM_USER_CLOSE: return GetOwner()->SendMessage(WM_CLOSE); default: return CPropertyPage::WindowProc(message, wParam, lParam); } }
void CLocPkg::OnContextMenu(CWnd* pWnd, CPoint point) { StandardContextMenu(pWnd->m_hWnd, IDD_LOCALE_PACKAGE); }
|