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.
 
 
 
 
 
 

241 lines
7.1 KiB

//#--------------------------------------------------------------
//
// File: staticip.cpp
//
// Synopsis: This file holds the declaration of the
// of CStaticIp class
//
// History: 12/15/2000 serdarun Created
//
// Copyright (C) 1999-2000 Microsoft Corporation
// All rights reserved.
//
//#--------------------------------------------------------------
#ifndef __STATICIP_H_
#define __STATICIP_H_
#include "resource.h" // main symbols
#include <atlctl.h>
#include "LocalUIControlsCP.h"
#include "salocmgr.h"
#include "satrace.h"
#define IpAddressSize 16
#define IPHASFOCUS 1
#define SUBNETHASFOCUS 2
#define GATEWAYHASFOCUS 3
#define LASTPOSITION 15
#define FIRSTPOSITION 1
#define NUMBEROFENTRIES 3
/////////////////////////////////////////////////////////////////////////////
// CStaticIp
class ATL_NO_VTABLE CStaticIp :
public CComObjectRootEx<CComSingleThreadModel>,
public IDispatchImpl<IStaticIp, &IID_IStaticIp, &LIBID_LOCALUICONTROLSLib>,
public CComControl<CStaticIp>,
public IPersistStreamInitImpl<CStaticIp>,
public IOleControlImpl<CStaticIp>,
public IOleObjectImpl<CStaticIp>,
public IOleInPlaceActiveObjectImpl<CStaticIp>,
public IViewObjectExImpl<CStaticIp>,
public IOleInPlaceObjectWindowlessImpl<CStaticIp>,
public IConnectionPointContainerImpl<CStaticIp>,
public IPersistStorageImpl<CStaticIp>,
public ISpecifyPropertyPagesImpl<CStaticIp>,
public IQuickActivateImpl<CStaticIp>,
public IDataObjectImpl<CStaticIp>,
public IProvideClassInfo2Impl<&CLSID_StaticIp, &DIID__IStaticIpEvents, &LIBID_LOCALUICONTROLSLib>,
public IPropertyNotifySinkCP<CStaticIp>,
public CComCoClass<CStaticIp, &CLSID_StaticIp>,
public CProxy_IStaticIpEvents< CStaticIp >,
public IObjectSafetyImpl<CStaticIp,INTERFACESAFE_FOR_UNTRUSTED_CALLER>
{
public:
CStaticIp()
{
wcscpy(m_strIpAddress,L"000.000.000.000");
wcscpy(m_strSubnetMask,L"000.000.000.000");
wcscpy(m_strGateway,L"000.000.000.000");
m_iEntryFocus = IPHASFOCUS;
m_iPositionFocus = 0;
m_bstrIpHeader = L"";
m_bstrSubnetHeader = L"";
m_bstrDefaultGatewayHeader = L"";
m_hFont = NULL;
}
DECLARE_REGISTRY_RESOURCEID(IDR_STATICIP)
DECLARE_PROTECT_FINAL_CONSTRUCT()
DECLARE_CLASSFACTORY_SINGLETON (CStaticIp)
BEGIN_COM_MAP(CStaticIp)
COM_INTERFACE_ENTRY(IStaticIp)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IViewObjectEx)
COM_INTERFACE_ENTRY(IViewObject2)
COM_INTERFACE_ENTRY(IViewObject)
COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY(IOleInPlaceObject)
COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
COM_INTERFACE_ENTRY(IOleControl)
COM_INTERFACE_ENTRY(IOleObject)
COM_INTERFACE_ENTRY(IPersistStreamInit)
COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
COM_INTERFACE_ENTRY(IQuickActivate)
COM_INTERFACE_ENTRY(IPersistStorage)
COM_INTERFACE_ENTRY(IDataObject)
COM_INTERFACE_ENTRY(IProvideClassInfo)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
COM_INTERFACE_ENTRY(IObjectSafety)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
END_COM_MAP()
BEGIN_PROP_MAP(CStaticIp)
PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
// Example entries
// PROP_ENTRY("Property Description", dispid, clsid)
// PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()
BEGIN_CONNECTION_POINT_MAP(CStaticIp)
CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
CONNECTION_POINT_ENTRY(DIID__IStaticIpEvents)
END_CONNECTION_POINT_MAP()
BEGIN_MSG_MAP(CStaticIp)
MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown)
CHAIN_MSG_MAP(CComControl<CStaticIp>)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
// Handler prototypes:
// LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
// LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
// IViewObjectEx
DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)
// IStaticIp
public:
STDMETHOD(get_Gateway)
(
/*[out, retval]*/ BSTR *pVal
);
STDMETHOD(put_Gateway)
(
/*[in]*/ BSTR newVal
);
STDMETHOD(get_SubnetMask)
(
/*[out, retval]*/ BSTR *pVal
);
STDMETHOD(put_SubnetMask)
(
/*[in]*/ BSTR newVal
);
STDMETHOD(get_IpAddress)
(
/*[out, retval]*/ BSTR *pVal
);
STDMETHOD(put_IpAddress)
(
/*[in]*/ BSTR newVal
);
// IObjectSafety
STDMETHOD(SetInterfaceSafetyOptions)
(
REFIID riid,
DWORD dwOptionSetMask,
DWORD dwEnabledOptions
)
{
return S_OK;
}
//
// called just after constructor, gets the localized strings and creates the font
//
STDMETHOD(FinalConstruct)(void);
//
// called just before destructor, releases resources
//
STDMETHOD(FinalRelease)(void);
//
// gets the current character set
//
BYTE GetCharacterSet ();
HRESULT OnDraw
(
ATL_DRAWINFO& di
);
LRESULT OnKeyDown
(
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
BOOL& bHandled
);
void ProcessArrowKey
(
WCHAR * strFocus,
WPARAM wParam
);
void CreateFocusString
(
WCHAR * strFocus,
WCHAR * strEntry
);
HRESULT FormatAndCopy
(
/*[in]*/BSTR bstrValue,
/*[in,out]*/ WCHAR *strValue
);
HRESULT TrimDuplicateZerosAndCopy
(
/*[in]*/WCHAR *strValue,
/*[in,out]*/ BSTR *pNewVal
);
WCHAR m_strIpAddress[IpAddressSize];
WCHAR m_strSubnetMask[IpAddressSize];
WCHAR m_strGateway[IpAddressSize];
int m_iEntryFocus;
int m_iPositionFocus;
CComBSTR m_bstrIpHeader;
CComBSTR m_bstrSubnetHeader;
CComBSTR m_bstrDefaultGatewayHeader;
HFONT m_hFont;
};
#endif //__STATICIP_H_