231 lines
4.6 KiB
C++
231 lines
4.6 KiB
C++
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
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;
|
|
}
|
|
|
|
|
|
|