Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

207 lines
5.9 KiB

//+--------------------------------------------------------------------------
//
// 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);
}