Annotation of parser3/src/sql/odbc/MFCpatches/CTLIMPL.H, revision 1.1

1.1     ! parser      1: // This is a part of the Microsoft Foundation Classes C++ library.
        !             2: // Copyright (C) 1992-1998 Microsoft Corporation
        !             3: // All rights reserved.
        !             4: //
        !             5: // This source code is only intended as a supplement to the
        !             6: // Microsoft Foundation Classes Reference and related
        !             7: // electronic documentation provided with the library.
        !             8: // See these sources for detailed information regarding the
        !             9: // Microsoft Foundation Classes product.
        !            10: 
        !            11: #ifndef __CTLIMPL_H__
        !            12: #define __CTLIMPL_H__
        !            13: 
        !            14: // MFC data definition for data exported from the runtime DLL
        !            15: 
        !            16: #undef AFX_DATA
        !            17: #define AFX_DATA AFX_OLE_DATA
        !            18: 
        !            19: /////////////////////////////////////////////////////////////////////////////
        !            20: // Codes for COleControl::SendAdvise
        !            21: //......Code.........................Method called
        !            22: #define OBJECTCODE_SAVED          0  //IOleAdviseHolder::SendOnSave
        !            23: #define OBJECTCODE_CLOSED         1  //IOleAdviseHolder::SendOnClose
        !            24: #define OBJECTCODE_RENAMED        2  //IOleAdviseHolder::SendOnRename
        !            25: #define OBJECTCODE_SAVEOBJECT     3  //IOleClientSite::SaveObject
        !            26: #define OBJECTCODE_DATACHANGED    4  //IDataAdviseHolder::SendOnDataChange
        !            27: #define OBJECTCODE_SHOWWINDOW     5  //IOleClientSite::OnShowWindow(TRUE)
        !            28: #define OBJECTCODE_HIDEWINDOW     6  //IOleClientSite::OnShowWindow(FALSE)
        !            29: #define OBJECTCODE_SHOWOBJECT     7  //IOleClientSite::ShowObject
        !            30: #define OBJECTCODE_VIEWCHANGED    8  //IOleAdviseHolder::SendOnViewChange
        !            31: 
        !            32: 
        !            33: /////////////////////////////////////////////////////////////////////////////
        !            34: // Typedefs
        !            35: 
        !            36: typedef LPVOID* LPLPVOID;
        !            37: 
        !            38: /////////////////////////////////////////////////////////////////////////////
        !            39: // Functions
        !            40: 
        !            41: LPSTREAM AFXAPI _AfxGetArchiveStream(CArchive& ar, CArchiveStream& stm);
        !            42: CLIPFORMAT AFXAPI _AfxGetClipboardFormatConvertVBX();
        !            43: CLIPFORMAT AFXAPI _AfxGetClipboardFormatPersistPropset();
        !            44: BOOL AFXAPI _AfxOleMatchPropsetClipFormat(CLIPFORMAT cfFormat, LPCLSID lpFmtID);
        !            45: BOOL AFXAPI _AfxCopyPropValue(VARTYPE vtProp, void* pvDest, const void * pvSrc);
        !            46: BOOL AFXAPI _AfxPeekAtClassIDInStream(LPSTREAM pstm, LPCLSID lpClassID);
        !            47: BOOL AFXAPI _AfxIsSamePropValue(VARTYPE vtProp, const void* pv1, const void* pv2);
        !            48: BOOL AFXAPI _AfxIsSameFont(CFontHolder& font, const FONTDESC* pFontDesc,
        !            49:        LPFONTDISP pFontDispAmbient);
        !            50: BOOL AFXAPI _AfxIsSameUnknownObject(REFIID iid, LPUNKNOWN pUnk1, LPUNKNOWN pUnk2);
        !            51: BOOL AFXAPI _AfxInitBlob(HGLOBAL* phDst, void* pvSrc);
        !            52: BOOL AFXAPI _AfxCopyBlob(HGLOBAL* phDst, HGLOBAL hSrc);
        !            53: LPFONT AFXAPI _AfxCreateFontFromStream(LPSTREAM);
        !            54: BOOL AFXAPI _AfxTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew);
        !            55: void AFXAPI _AfxXformSizeInPixelsToHimetric(HDC, LPSIZEL, LPSIZEL);
        !            56: void AFXAPI _AfxXformSizeInHimetricToPixels(HDC, LPSIZEL, LPSIZEL);
        !            57: void AFXAPI _AfxDrawBorders(CDC* pDC, CRect& rc, BOOL bBorder, BOOL bClientEdge);
        !            58: 
        !            59: /////////////////////////////////////////////////////////////////////////////
        !            60: // _AFXCTL_ADVISE_INFO - Information about an advise sink
        !            61: 
        !            62: struct _AFXCTL_ADVISE_INFO
        !            63: {
        !            64:        DWORD m_dwAspects;
        !            65:        DWORD m_dwAdvf;
        !            66:        LPADVISESINK m_pAdvSink;
        !            67: 
        !            68:        _AFXCTL_ADVISE_INFO() : m_dwAspects(0), m_dwAdvf(0), m_pAdvSink(NULL) {}
        !            69: };
        !            70: 
        !            71: /////////////////////////////////////////////////////////////////////////////
        !            72: // _AFXCTL_AMBIENT_CACHE - cache of common ambient property values
        !            73: 
        !            74: class _AFXCTL_AMBIENT_CACHE : public CNoTrackObject
        !            75: {
        !            76: // Constructor
        !            77: public:
        !            78:        _AFXCTL_AMBIENT_CACHE();
        !            79: 
        !            80: // Attributes
        !            81:        BOOL m_bValid;
        !            82:        DWORD m_dwAmbientFlags;
        !            83:        OLE_COLOR m_colorFore;
        !            84:        OLE_COLOR m_colorBack;
        !            85:        IFont* m_pFont;
        !            86:        void* m_pReserved;
        !            87:        DWORD m_dwAppearance;
        !            88: 
        !            89: // Operations
        !            90:        void Cache(QACONTAINER* pQAContainer);
        !            91: };
        !            92: 
        !            93: EXTERN_THREAD_LOCAL(_AFXCTL_AMBIENT_CACHE, _afxAmbientCache)
        !            94: 
        !            95: /////////////////////////////////////////////////////////////////////////////
        !            96: // CControlFrameWnd - used for a control's "open" (non-in-place) state.
        !            97: 
        !            98: class CControlFrameWnd : public CWnd
        !            99: {
        !           100: public:
        !           101:        CControlFrameWnd(COleControl* pCtrl);
        !           102:        virtual BOOL Create(LPCTSTR pszTitle);
        !           103:        virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
        !           104: 
        !           105: protected:
        !           106:        virtual void PostNcDestroy();
        !           107: 
        !           108:        COleControl* m_pCtrl;
        !           109: 
        !           110:        //{{AFX_MSG(CControlFrameWnd)
        !           111:        afx_msg void OnClose();
        !           112:        afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
        !           113:        //}}AFX_MSG
        !           114:        DECLARE_MESSAGE_MAP()
        !           115: };
        !           116: 
        !           117: 
        !           118: /////////////////////////////////////////////////////////////////////////////
        !           119: // CReflectorWnd - reflects window messages to a subclassed control.
        !           120: 
        !           121: class CReflectorWnd : public CWnd
        !           122: {
        !           123: public:
        !           124:        CReflectorWnd() : m_pCtrl(NULL) { }
        !           125: 
        !           126:        BOOL Create(const CRect& rect, HWND hWndParent);
        !           127:        void SetControl(COleControl* pCtrl);
        !           128: 
        !           129: protected:
        !           130:        virtual LRESULT WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
        !           131:        virtual void PostNcDestroy();
        !           132: 
        !           133:        COleControl* m_pCtrl;
        !           134: };
        !           135: 
        !           136: 
        !           137: /////////////////////////////////////////////////////////////////////////////
        !           138: // CParkingWnd - "parking space" for not-yet-activated subclassed controls
        !           139: 
        !           140: class CParkingWnd : public CWnd
        !           141: {
        !           142: public:
        !           143:        CParkingWnd()
        !           144:                { AfxDeferRegisterClass(AFX_WNDOLECONTROL_REG);
        !           145:                  CreateEx(WS_EX_NOPARENTNOTIFY|WS_EX_TOOLWINDOW,
        !           146:                        AFX_WNDOLECONTROL, NULL, WS_VISIBLE|WS_CHILD,
        !           147:                        -1000, -1000, 1, 1, ::GetDesktopWindow(), 0); }
        !           148:        virtual LRESULT WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
        !           149: 
        !           150: protected:
        !           151:        CMapPtrToPtr m_idMap;
        !           152: };
        !           153: 
        !           154: 
        !           155: /////////////////////////////////////////////////////////////////////////////
        !           156: //  Property sets
        !           157: 
        !           158: typedef struct tagSECTIONHEADER
        !           159: {
        !           160:        DWORD       cbSection ;
        !           161:        DWORD       cProperties ;  // Number of props.
        !           162: } SECTIONHEADER, *LPSECTIONHEADER ;
        !           163: 
        !           164: typedef struct tagPROPERTYIDOFFSET
        !           165: {
        !           166:        DWORD       propertyID;
        !           167:        DWORD       dwOffset;
        !           168: } PROPERTYIDOFFSET, *LPPROPERTYIDOFFSET;
        !           169: 
        !           170: typedef struct tagPROPHEADER
        !           171: {
        !           172:        WORD        wByteOrder ;    // Always 0xFFFE
        !           173:        WORD        wFormat ;       // Always 0
        !           174:        DWORD       dwOSVer ;       // System version
        !           175:        CLSID       clsID ;         // Application CLSID
        !           176:        DWORD       cSections ;     // Number of sections (must be at least 1)
        !           177: } PROPHEADER, *LPPROPHEADER ;
        !           178: 
        !           179: typedef struct tagFORMATIDOFFSET
        !           180: {
        !           181:        GUID        formatID;
        !           182:        DWORD       dwOffset;
        !           183: } FORMATIDOFFSET, *LPFORMATIDOFFSET;
        !           184: 
        !           185: 
        !           186: /////////////////////////////////////////////////////////////////////////////
        !           187: // CProperty
        !           188: 
        !           189: class CProperty
        !           190: {
        !           191:        friend class CPropertySet ;
        !           192:        friend class CPropertySection ;
        !           193: 
        !           194: public:
        !           195: // Construction
        !           196:        CProperty( void ) ;
        !           197:        CProperty( DWORD dwID, const LPVOID pValue, DWORD dwType ) ;
        !           198: 
        !           199: // Attributes
        !           200:        BOOL    Set( DWORD dwID, const LPVOID pValue, DWORD dwType ) ;
        !           201:        BOOL    Set( const LPVOID pValue, DWORD dwType ) ;
        !           202:        BOOL    Set( const LPVOID pValue ) ;
        !           203:        LPVOID  Get( DWORD* pcb ) ;     // Returns pointer to actual value
        !           204:        LPVOID  Get( void ) ;           // Returns pointer to actual value
        !           205:        DWORD   GetType( void ) ;       // Returns property type
        !           206:        void    SetType( DWORD dwType ) ;
        !           207:        DWORD   GetID( void ) ;
        !           208:        void    SetID( DWORD dwPropID ) ;
        !           209: 
        !           210:        LPVOID  GetRawValue( void ) ;   // Returns pointer internal value (may
        !           211:                                                                        // include size information)
        !           212: // Operations
        !           213:        BOOL    WriteToStream( IStream* pIStream ) ;
        !           214:        BOOL    ReadFromStream( IStream* pIStream ) ;
        !           215: 
        !           216: private:
        !           217:        DWORD       m_dwPropID ;
        !           218:        DWORD       m_dwType ;
        !           219:        LPVOID      m_pValue ;
        !           220: 
        !           221:        LPVOID  AllocValue(ULONG cb);
        !           222:        void    FreeValue();
        !           223: 
        !           224: public:
        !           225:        ~CProperty() ;
        !           226: } ;
        !           227: 
        !           228: 
        !           229: /////////////////////////////////////////////////////////////////////////////
        !           230: // CPropertySection
        !           231: 
        !           232: class CPropertySection
        !           233: {
        !           234:        friend class CPropertySet ;
        !           235:        friend class CProperty ;
        !           236: 
        !           237: public:
        !           238: // Construction
        !           239:        CPropertySection( void ) ;
        !           240:        CPropertySection( CLSID FormatID ) ;
        !           241: 
        !           242: // Attributes
        !           243:        CLSID   GetFormatID( void ) ;
        !           244:        void    SetFormatID( CLSID FormatID ) ;
        !           245: 
        !           246:        BOOL    Set( DWORD dwPropID, LPVOID pValue, DWORD dwType ) ;
        !           247:        BOOL    Set( DWORD dwPropID, LPVOID pValue ) ;
        !           248:        LPVOID  Get( DWORD dwPropID, DWORD* pcb ) ;
        !           249:        LPVOID  Get( DWORD dwPropID ) ;
        !           250:        void    Remove( DWORD dwPropID ) ;
        !           251:        void    RemoveAll() ;
        !           252: 
        !           253:        CProperty* GetProperty( DWORD dwPropID ) ;
        !           254:        void AddProperty( CProperty* pProp ) ;
        !           255: 
        !           256:        DWORD   GetSize( void ) ;
        !           257:        DWORD   GetCount( void ) ;
        !           258:        CPtrList* GetList( void ) ;
        !           259: 
        !           260:        BOOL    GetID( LPCTSTR pszName, DWORD* pdwPropID ) ;
        !           261:        BOOL    SetName( DWORD dwPropID, LPCTSTR pszName ) ;
        !           262: 
        !           263:        BOOL    SetSectionName( LPCTSTR pszName );
        !           264:        LPCTSTR GetSectionName( void );
        !           265: 
        !           266: // Operations
        !           267:        BOOL    WriteToStream( IStream* pIStream ) ;
        !           268:        BOOL    ReadFromStream( IStream* pIStream, LARGE_INTEGER liPropSet ) ;
        !           269:        BOOL    WriteNameDictToStream( IStream* pIStream ) ;
        !           270:        BOOL    ReadNameDictFromStream( IStream* pIStream ) ;
        !           271: 
        !           272: private:
        !           273: // Implementation
        !           274:        CLSID           m_FormatID ;
        !           275:        SECTIONHEADER   m_SH ;
        !           276:        // List of properties (CProperty)
        !           277:        CPtrList         m_PropList ;
        !           278:        // Dictionary of property names
        !           279:        CMapStringToPtr m_NameDict ;
        !           280:        CString         m_strSectionName;
        !           281: 
        !           282: public:
        !           283:        ~CPropertySection();
        !           284: } ;
        !           285: 
        !           286: 
        !           287: /////////////////////////////////////////////////////////////////////////////
        !           288: // CPropertySet
        !           289: 
        !           290: class CPropertySet
        !           291: {
        !           292:        friend class CPropertySection ;
        !           293:        friend class CProperty ;
        !           294: 
        !           295: public:
        !           296: // Construction
        !           297:        CPropertySet( void ) ;
        !           298:        CPropertySet( CLSID clsID )  ;
        !           299: 
        !           300: // Attributes
        !           301:        BOOL    Set( CLSID FormatID, DWORD dwPropID, LPVOID pValue, DWORD dwType ) ;
        !           302:        BOOL    Set( CLSID FormatID, DWORD dwPropID, LPVOID pValue ) ;
        !           303:        LPVOID  Get( CLSID FormatID, DWORD dwPropID, DWORD* pcb ) ;
        !           304:        LPVOID  Get( CLSID FormatID, DWORD dwPropID ) ;
        !           305:        void    Remove( CLSID FormatID, DWORD dwPropID ) ;
        !           306:        void    Remove( CLSID FormatID ) ;
        !           307:        void    RemoveAll( ) ;
        !           308: 
        !           309:        CProperty* GetProperty( CLSID FormatID, DWORD dwPropID ) ;
        !           310:        void AddProperty( CLSID FormatID, CProperty* pProp ) ;
        !           311:        CPropertySection* GetSection( CLSID FormatID ) ;
        !           312:        CPropertySection* AddSection( CLSID FormatID ) ;
        !           313:        void AddSection( CPropertySection* psect ) ;
        !           314: 
        !           315:        WORD    GetByteOrder( void ) ;
        !           316:        WORD    GetFormatVersion( void ) ;
        !           317:        void    SetFormatVersion( WORD wFmtVersion ) ;
        !           318:        DWORD   GetOSVersion( void ) ;
        !           319:        void    SetOSVersion( DWORD dwOSVer ) ;
        !           320:        CLSID   GetClassID( void ) ;
        !           321:        void    SetClassID( CLSID clsid ) ;
        !           322:        DWORD   GetCount( void ) ;
        !           323:        CPtrList* GetList( void ) ;
        !           324: 
        !           325: // Operations
        !           326:        BOOL    WriteToStream( IStream* pIStream ) ;
        !           327:        BOOL    ReadFromStream( IStream* pIStream ) ;
        !           328: 
        !           329: // Implementation
        !           330: private:
        !           331:        PROPHEADER      m_PH ;
        !           332:        CPtrList         m_SectionList ;
        !           333: 
        !           334: public:
        !           335:        ~CPropertySet();
        !           336: } ;
        !           337: 
        !           338: 
        !           339: /////////////////////////////////////////////////////////////////////////////
        !           340: // CArchivePropExchange - for persistence in an archive.
        !           341: 
        !           342: class CArchivePropExchange : public CPropExchange
        !           343: {
        !           344: // Constructors
        !           345: public:
        !           346:        CArchivePropExchange(CArchive& ar);
        !           347: 
        !           348: // Operations
        !           349:        virtual BOOL ExchangeProp(LPCTSTR pszPropName, VARTYPE vtProp,
        !           350:                                void* pvProp, const void* pvDefault = NULL);
        !           351:        virtual BOOL ExchangeBlobProp(LPCTSTR pszPropName, HGLOBAL* phBlob,
        !           352:                                HGLOBAL hBlobDefault = NULL);
        !           353:        virtual BOOL ExchangeFontProp(LPCTSTR pszPropName, CFontHolder& font,
        !           354:                                const FONTDESC* pFontDesc, LPFONTDISP pFontDispAmbient);
        !           355:        virtual BOOL ExchangePersistentProp(LPCTSTR pszPropName,
        !           356:                                LPUNKNOWN* ppUnk, REFIID iid, LPUNKNOWN pUnkDefault);
        !           357: 
        !           358: // Implementation
        !           359: protected:
        !           360:        CArchive& m_ar;
        !           361: };
        !           362: 
        !           363: 
        !           364: /////////////////////////////////////////////////////////////////////////////
        !           365: // CResetPropExchange - for resetting property state to defaults.
        !           366: 
        !           367: class CResetPropExchange : public CPropExchange
        !           368: {
        !           369: // Constructors
        !           370: public:
        !           371:        CResetPropExchange(void);
        !           372: 
        !           373: // Operations
        !           374:        virtual BOOL ExchangeProp(LPCTSTR pszPropName, VARTYPE vtProp,
        !           375:                                void* pvProp, const void* pvDefault = NULL);
        !           376:        virtual BOOL ExchangeBlobProp(LPCTSTR pszPropName, HGLOBAL* phBlob,
        !           377:                                HGLOBAL hBlobDefault = NULL);
        !           378:        virtual BOOL ExchangeFontProp(LPCTSTR pszPropName, CFontHolder& font,
        !           379:                                const FONTDESC* pFontDesc, LPFONTDISP pFontDispAmbient);
        !           380:        virtual BOOL ExchangePersistentProp(LPCTSTR pszPropName,
        !           381:                                LPUNKNOWN* ppUnk, REFIID iid, LPUNKNOWN pUnkDefault);
        !           382: };
        !           383: 
        !           384: 
        !           385: /////////////////////////////////////////////////////////////////////////////
        !           386: // CPropsetPropExchange - for persistence in a property set.
        !           387: 
        !           388: class CPropsetPropExchange : public CPropExchange
        !           389: {
        !           390: // Constructors
        !           391: public:
        !           392:        CPropsetPropExchange(CPropertySection& psec, LPSTORAGE lpStorage,
        !           393:                BOOL bLoading);
        !           394: 
        !           395: // Operations
        !           396:        virtual BOOL ExchangeProp(LPCTSTR pszPropName, VARTYPE vtProp,
        !           397:                                void* pvProp, const void* pvDefault = NULL);
        !           398:        virtual BOOL ExchangeBlobProp(LPCTSTR pszPropName, HGLOBAL* phBlob,
        !           399:                                HGLOBAL hBlobDefault = NULL);
        !           400:        virtual BOOL ExchangeFontProp(LPCTSTR pszPropName, CFontHolder& font,
        !           401:                                const FONTDESC* pFontDesc, LPFONTDISP pFontDispAmbient);
        !           402:        virtual BOOL ExchangePersistentProp(LPCTSTR pszPropName,
        !           403:                                LPUNKNOWN* ppUnk, REFIID iid, LPUNKNOWN pUnkDefault);
        !           404: 
        !           405: // Implementation
        !           406:        CPropertySection& m_psec;
        !           407:        LPSTORAGE m_lpStorage;
        !           408:        DWORD m_dwPropID;
        !           409: };
        !           410: 
        !           411: /////////////////////////////////////////////////////////////////////////////
        !           412: // CAsyncPropExchange - for launching asynchronous downloads set.
        !           413: 
        !           414: class CAsyncPropExchange : public CPropExchange
        !           415: {
        !           416: // Constructors
        !           417: public:
        !           418:        CAsyncPropExchange(DWORD dwVersion);
        !           419: 
        !           420: // Operations
        !           421: public:
        !           422:        virtual BOOL ExchangeVersion(DWORD& dwVersionLoaded,
        !           423:                DWORD dwVersionDefault, BOOL bConvert);
        !           424: 
        !           425:        virtual BOOL ExchangeProp(LPCTSTR pszPropName, VARTYPE vtProp,
        !           426:                                void* pvProp, const void* pvDefault = NULL);
        !           427:        virtual BOOL ExchangeBlobProp(LPCTSTR pszPropName, HGLOBAL* phBlob,
        !           428:                                HGLOBAL hBlobDefault = NULL);
        !           429:        virtual BOOL ExchangeFontProp(LPCTSTR pszPropName, CFontHolder& font,
        !           430:                                const FONTDESC* pFontDesc,
        !           431:                                LPFONTDISP pFontDispAmbient);
        !           432:        virtual BOOL ExchangePersistentProp(LPCTSTR pszPropName,
        !           433:                                LPUNKNOWN* ppUnk, REFIID iid, LPUNKNOWN pUnkDefault);
        !           434: };
        !           435: 
        !           436: 
        !           437: /////////////////////////////////////////////////////////////////////////////
        !           438: // COleDispatchExceptionEx - dispatch exception that includes an SCODE
        !           439: 
        !           440: class COleDispatchExceptionEx : public COleDispatchException
        !           441: {
        !           442: public:
        !           443:        COleDispatchExceptionEx(LPCTSTR lpszDescription, UINT nHelpID, SCODE sc);
        !           444: };
        !           445: 
        !           446: /////////////////////////////////////////////////////////////////////////////
        !           447: // Reset MFC data definitions
        !           448: 
        !           449: #undef AFX_DATA
        !           450: #define AFX_DATA
        !           451: 
        !           452: #endif  //__CTLIMPL_H__

E-mail: