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.
|
|
//////////////////////////////////////////////////////////////////////////////
/*++
Copyright (C) Microsoft Corporation, 1998 - 1999
Module Name:
IASIPAttributeEditor.cpp
Abstract:
Implementation file for the CIASIPAttributeEditor class.
Revision History: mmaguire 06/25/98 - created
--*/ //////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// BEGIN INCLUDES
//
// standard includes:
//
#include "Precompiled.h"
//
// where we can find declaration for main class in this file:
//
#include "IASIPAttributeEditor.h"
#include "IASIPEditorPage.h"
//
// where we can find declarations needed in this file:
//
//
// END INCLUDES
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/*++
CIASIPAttributeEditor::ShowEditor
IIASAttributeEditor interface implementation
--*/ //////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CIASIPAttributeEditor::ShowEditor( /*[in, out]*/ BSTR *pReserved ) { TRACE(_T("CIASIPAttributeEditor::ShowEditor\n"));
AFX_MANAGE_STATE(AfxGetStaticModuleState())
HRESULT hr = S_OK;
try { // Load page title.
// ::CString strPageTitle;
// strPageTitle.LoadString(IDS_IAS_IP_EDITOR_TITLE);
//
// CPropertySheet propSheet( (LPCTSTR)strPageTitle );
//
// IP Address Editor
//
IPEditorPage cppPage;
// Initialize the page's data exchange fields with info from IAttributeInfo
CComBSTR bstrName; CComBSTR bstrSyntax; ATTRIBUTEID Id = ATTRIBUTE_UNDEFINED;
if( m_spIASAttributeInfo ) { hr = m_spIASAttributeInfo->get_AttributeName( &bstrName ); if( FAILED(hr) ) throw hr;
m_spIASAttributeInfo->get_SyntaxString( &bstrSyntax ); if( FAILED(hr) ) throw hr;
m_spIASAttributeInfo->get_AttributeID( &Id ); if( FAILED(hr) ) throw hr; } cppPage.m_strAttrName = bstrName; cppPage.m_strAttrFormat = bstrSyntax;
// Attribute type is actually attribute ID in string format
WCHAR szTempId[MAX_PATH]; wsprintf(szTempId, _T("%ld"), Id); cppPage.m_strAttrType = szTempId;
// Initialize the page's data exchange fields with info from VARIANT value passed in.
if ( V_VT(m_pvarValue) != VT_EMPTY ) { _ASSERTE( V_VT(m_pvarValue) == VT_I4 ); cppPage.m_dwIpAddr = V_I4(m_pvarValue); cppPage.m_fIpAddrPreSet = TRUE; }
// propSheet.AddPage(&cppPage);
// int iResult = propSheet.DoModal();
int iResult = cppPage.DoModal(); if (IDOK == iResult) { // Initialize the variant that was passed in.
VariantClear(m_pvarValue);
// Save the value that the user edited to the variant.
V_VT(m_pvarValue) = VT_I4; V_I4(m_pvarValue) = cppPage.m_dwIpAddr; } else { hr = S_FALSE; }
//
// delete the property page pointer
//
// propSheet.RemovePage(&cppPage);
} catch( HRESULT & hr ) { return hr; } catch(...) { return hr = E_FAIL;
} return hr;
}
//////////////////////////////////////////////////////////////////////////////
/*++
CIASIPAttributeEditor::SetAttributeValue
IIASAttributeEditor interface implementation
--*/ //////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CIASIPAttributeEditor::SetAttributeValue(VARIANT * pValue) { TRACE(_T("CIASIPAttributeEditor::SetAttributeValue\n"));
AFX_MANAGE_STATE(AfxGetStaticModuleState())
// Check for preconditions.
if( ! pValue ) { return E_INVALIDARG; } if( V_VT(pValue) != VT_I4 && V_VT(pValue) != VT_EMPTY ) { return E_INVALIDARG; } m_pvarValue = pValue;
return S_OK; }
//////////////////////////////////////////////////////////////////////////////
/*++
CIASIPAttributeEditor::get_ValueAsString
IIASAttributeEditor interface implementation
--*/ //////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CIASIPAttributeEditor::get_ValueAsString(BSTR * pbstrDisplayText ) { TRACE(_T("CIASIPAttributeEditor::get_ValueAsString\n"));
AFX_MANAGE_STATE(AfxGetStaticModuleState())
// Check for preconditions.
if( ! pbstrDisplayText ) { return E_INVALIDARG; }
CComBSTR bstrDisplay;
// This if falls through so get a blank string for any other types.
if( V_VT(m_pvarValue) == VT_I4 ) { DWORD dwAddress = V_I4(m_pvarValue); WORD hi = HIWORD(dwAddress); WORD lo = LOWORD(dwAddress); WCHAR szTemp[255];
wsprintf( szTemp, _T("%-d.%-d.%-d.%d"), HIBYTE(hi), LOBYTE(hi), HIBYTE(lo), LOBYTE(lo)); bstrDisplay = szTemp; }
*pbstrDisplayText = bstrDisplay.Copy();
return S_OK; }
|