2025-04-27 07:49:33 -04:00

260 lines
7.8 KiB
C++

// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
// CPPWizCtl.h : Declaration of the CCPPWizCtrl OLE control class.
class CCPPGenSheet;
class CMyPropertyPage1;
class CMyPropertyPage3;
class CMyPropertyPage4;
// Typedef for help ocx hinstance procedure address
typedef HWND (WINAPI *HTMLHELPPROC)(HWND hwndCaller,
LPCTSTR pszFile,
UINT uCommand,
DWORD dwData);
void ErrorMsg
(CString *pcsUserMsg,
SCODE sc,
IWbemClassObject *pErrorObject,
BOOL bLog,
CString *pcsLogMsg,
char *szFile,
int nLine,
BOOL bNotification = FALSE,
UINT uType = MB_ICONEXCLAMATION);
void LogMsg
(CString *pcsLogMsg,
char *szFile,
int nLine);
/////////////////////////////////////////////////////////////////////////////
// CCPPWizCtrl : See CPPWizCtl.CPP for implementation.
class CCPPWizCtrl : public COleControl
{
DECLARE_DYNCREATE(CCPPWizCtrl)
// Constructor
public:
CCPPWizCtrl();
CString &GetProviderBaseName() {return m_csProviderBaseName;}
CString &GetProviderDescription() {return m_csProviderDescription;}
CStringArray &GetClasses(){return m_csaClassNames;}
CStringArray &GetClassBaseNames(){return m_csaClassBaseNames;}
CStringArray &GetClassCPPNames(){return m_csaClassCPPNames;}
CStringArray &GetClassDescriptions()
{return m_csaClassDescriptions;}
CString &GetProviderOutputPath() {return m_csProviderOutputPath;}
CString &GetProviderTLBPath() {return m_csProviderTLBPath;}
CStringArray *&GetNonLocalProps() {return m_pcsaNonLocalProps;}
CByteArray &GetInheritedPropIndicators() {return m_cbaInheritedPropIndicators;}
IWbemServices *GetServices(){return m_pServices;}
CString& GetNamespace() {return m_csNameSpace; }
HRESULT GetSDKDirectory(CString &sHmomWorkingDir);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCPPWizCtrl)
public:
virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid);
virtual void DoPropExchange(CPropExchange* pPX);
virtual void OnResetState();
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
//}}AFX_VIRTUAL
virtual void OnSetClientSite();
// Implementation
protected:
~CCPPWizCtrl();
CString m_csNameSpace;
DECLARE_OLECREATE_EX(CCPPWizCtrl) // Class factory and guid
DECLARE_OLETYPELIB(CCPPWizCtrl) // GetTypeInfo
DECLARE_PROPPAGEIDS(CCPPWizCtrl) // Property page IDs
DECLARE_OLECTLTYPE(CCPPWizCtrl) // Type name and misc status
CString m_csUUID;
CToolTipCtrl m_ttip;
BOOL m_bInitDraw;
HICON m_hCPPWiz;
HICON m_hCPPWizSel;
CImageList *m_pcilImageList;
int m_nImage;
BOOL m_bYesAll;
BOOL m_bNoAll;
IWbemServices *m_pServices;
IWbemServices *InitServices
(CString *pcsNameSpace);
IWbemServices *GetIWbemServices(CString &rcsNamespace);
SCODE m_sc;
BOOL m_bUserCancel;
BOOL OnWizard(CStringArray *pcsaClasses);
CCPPGenSheet *m_pcgsPropertySheet;
CString m_csProviderBaseName;
CString m_csProviderDescription;
CString m_csProviderOutputPath;
CString m_csProviderTLBPath;
CStringArray m_csaClassNames;
CStringArray m_csaClassBaseNames;
CStringArray m_csaClassCPPNames;
CStringArray m_csaClassDescriptions;
CStringArray *m_pcsaNonLocalProps;
CByteArray m_cbaInheritedPropIndicators;
BOOL bNewOnly;
BOOL GenCPP(DWORD dwProvider, IWbemClassObject *pObject, int nIndex);
CStringArray *GetPropNames
(IWbemClassObject * pClass,
BOOL bNonSystem = FALSE);
CStringArray *GetLocalPropNames
(IWbemClassObject * pClass,
BOOL bNonSystem = FALSE);
CStringArray *GetNonLocalPropNames
(IWbemClassObject * pClass, BOOL bNonSystem);
BOOL AttribInAttribSet
(IWbemQualifierSet *pAttrib , CString *pcsAttrib);
COleVariant GetPropertyValueByAttrib
(IWbemClassObject *pObject , CString *pcsAttrib);
CString GetPropertyNameByAttrib
(IWbemClassObject *pObject , CString *pcsAttrib);
DWORD PropertyAttribFlags(IWbemQualifierSet *pAttrib);
BOOL IsSystemProperty(CString *pcsProp);
COleVariant GetProperty
(IWbemServices * pProv,
IWbemClassObject * pInst,
CString *pcsProperty);
CString GetIWbemFullPath(IWbemClassObject *pClass);
void InvokeHelp();
void ReleaseErrorObject(IWbemClassObject *&rpErrorObject);
SCODE MakeSafeArray(SAFEARRAY FAR ** pRet, VARTYPE vt, int iLen);
SCODE PutStringInSafeArray
(SAFEARRAY FAR * psa,CString *pcs, int iIndex);
SCODE CCPPWizCtrl::GetStringFromSafeArray
(SAFEARRAY FAR * psa,CString *pcs, int iIndex);
CString GetClassName(IWbemClassObject *pClass);
CString GetSuperClassCPPName(IWbemClassObject *pClass);
CString GetSuperClassName(IWbemClassObject *pClass);
CString GetBSTRProperty
(IWbemClassObject * pInst, CString *pcsProperty);
//CString GetFolder();
BOOL StringInCSA
(CStringArray *csaSearchIn,CString *csSearchFor);
DWORD GetControlFlags();
void RelayEvent(UINT message, WPARAM wParam, LPARAM lParam);
long GetPropType(IWbemClassObject *pObject,CString *pcsProp,unsigned short &uType);
BOOL HasDateTimeSyntax
(IWbemClassObject *pClassInt,CString *pcsPropName);
long GetAttribBool
(IWbemClassObject * pClassInt,
CString *pcsPropName,
CString *pcsAttribName,
BOOL &bReturn);
long SetAttribBool
(IWbemClassObject * pClassInt,
CString *pcsPropName,
CString *pcsAttribName,
BOOL bValue);
long GetAttribBSTR
(IWbemClassObject * pClassInt,
CString *pcsPropName,
CString *pcsAttribName,
CString &csReturn);
long SetAttribBSTR
(IWbemClassObject * pClassInt,
CString *pcsPropName,
CString *pcsAttribName,
CString *pcsValue);
BOOL CreateProviderInstance();
CString CreateUUID(void);
BOOL UpdateClassQualifiers(IWbemClassObject *pClass);
BOOL CheckForProviderQuals
(IWbemClassObject *pClass, CString &rcsProvider);
BOOL CreateInstanceProviderRegistration(CString &rcsPath);
BOOL CreateMethodProviderRegistration(CString &rcsPath);
VOID FormatPathForRAIDItem20918(CString *pcsPath);
// Message maps
//{{AFX_MSG(CCPPWizCtrl)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnDestroy();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnKillFocus(CWnd* pNewWnd);
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnMove(int x, int y);
//}}AFX_MSG
afx_msg long FireGenerateCPPMessage (UINT uParam, LONG lParam);
DECLARE_MESSAGE_MAP()
// Dispatch maps
//{{AFX_DISPATCH(CCPPWizCtrl)
afx_msg VARIANT GetCPPTargets();
afx_msg void SetCPPTargets(const VARIANT FAR& newValue);
//}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()
afx_msg void AboutBox();
// Event maps
//{{AFX_EVENT(CCPPWizCtrl)
void FireGenerateCPPs()
{FireEvent(eventidGenerateCPPs,EVENT_PARAM(VTS_NONE));}
void FireGetIWbemServices(LPCTSTR lpctstrNamespace, VARIANT FAR* pvarUpdatePointer, VARIANT FAR* pvarServices, VARIANT FAR* pvarSC, VARIANT FAR* pvarUserCancel)
{FireEvent(eventidGetIWbemServices,EVENT_PARAM(VTS_BSTR VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT), lpctstrNamespace, pvarUpdatePointer, pvarServices, pvarSC, pvarUserCancel);}
//}}AFX_EVENT
DECLARE_EVENT_MAP()
// Dispatch and event IDs
public:
enum {
//{{AFX_DISP_ID(CCPPWizCtrl)
dispidCPPTargets = 1L,
eventidGenerateCPPs = 1L,
eventidGetIWbemServices = 2L,
//}}AFX_DISP_ID
};
friend class CMyPropertyPage1;
friend class CMyPropertyPage3;
friend class CMyPropertyPage4;
private:
void StripNewLines(CString& sDst, LPCTSTR pszDescription);
void SanitizePropSetBaseName(CString& sDst);
};