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.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation 1996-2001.
//
// File: lchoice.cpp
//
// Contents: implementation of CLocalPolChoice
//
//----------------------------------------------------------------------------
#include "stdafx.h"
#include "wsecmgr.h"
#include "snapmgr.h"
#include "attr.h"
#include "LChoice.h"
#include "util.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CLocalPolChoice dialog
CLocalPolChoice::CLocalPolChoice() : CConfigChoice(IDD) { //{{AFX_DATA_INIT(CLocalPolChoice)
//}}AFX_DATA_INIT
m_pHelpIDs = (DWORD_PTR)a235HelpIDs; m_uTemplateResID = IDD; }
/////////////////////////////////////////////////////////////////////////////
// CLocalPolChoice message handlers
BOOL CLocalPolChoice::OnInitDialog() { CConfigChoice::OnInitDialog();
PSCE_REGISTRY_VALUE_INFO prv = (PSCE_REGISTRY_VALUE_INFO)(m_pData->GetBase()); if (!prv ) //Raid 372939, 4/20/2001
{ m_cbChoices.SetCurSel(-1); } else //Raid #457885, Yang Gao, 8/21/2001
{ if( prv->Value == NULL ) { m_cbChoices.SetCurSel(-1); m_bConfigure = TRUE; UpdateData(FALSE); //Raid #480375, Yanggao, 10/12/2001
EnableUserControls(m_bConfigure); } } OnSelchangeChoices(); return TRUE; }
BOOL CLocalPolChoice::OnApply() { if ( !m_bReadOnly ) { DWORD dw = 0; int nIndex = 0;
UpdateData(TRUE); if (m_bConfigure) { nIndex = m_cbChoices.GetCurSel(); if (CB_ERR != nIndex) dw = (DWORD) m_cbChoices.GetItemData(nIndex); PSCE_REGISTRY_VALUE_INFO prv=(PSCE_REGISTRY_VALUE_INFO)(m_pData->GetBase());
//
// this address should never be NULL
//
if ( prv ) { PWSTR pTmp=NULL;
if ( dw != SCE_NO_VALUE ) { CString strTmp; // allocate buffer
strTmp.Format(TEXT("%d"), dw); pTmp = (PWSTR)LocalAlloc(0, (strTmp.GetLength()+1)*sizeof(TCHAR));
if ( pTmp ) //This may not be a safe usage. using WCHAR instead of TCHAR. Consider fix.
wcscpy(pTmp,(LPCTSTR)strTmp); else { // can't allocate buffer, error!!
return FALSE; } }
if ( prv->Value ) LocalFree(prv->Value); prv->Value = pTmp;
m_pSnapin->UpdateLocalPolRegValue(m_pData); } } }
// Class hieirarchy is bad - call CAttribute base method directly
return CAttribute::OnApply(); }
|