qaxbindable.h Include File

Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# qaxbindable.h

This is the verbatim text of the qaxbindable.h include file. It is provided only for illustration; the copyright remains with Trolltech.

    /****************************************************************************
    ** $Id: qt/qaxbindable.h   3.3.8   edited Jan 11 14:46 $
    **
    ** Declaration of the TQAxBindable class
    **
    ** Copyright (C) 2001-2007 Trolltech ASA.  All rights reserved.
    **
    ** This file is part of the Active TQt integration.
    **
    ** Licensees holding valid TQt Enterprise Edition
    ** licenses for Windows may use this file in accordance with the TQt Commercial
    ** License Agreement provided with the Software.
    **
    ** This file is not available for use under any other license without
    ** express written permission from the copyright holder.
    **
    ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
    ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
    **
    ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
    **   information about TQt Commercial License Agreements.
    **
    ** Contact info@trolltech.com if any conditions of this licensing are
    ** not clear to you.
    **
    **********************************************************************/

    #ifndef TQAXBINDABLE_H
    #define TQAXBINDABLE_H

    #include <ntqwidget.h>
    #include <private/qcom_p.h>

    struct IAxServerBase;
    struct IUnknown;

    class TQAxAggregated
    {
        friend class TQAxServerBase;
    public:
        virtual long queryInterface( const TQUuid &iid, void **iface ) = 0;

    protected:
        virtual ~TQAxAggregated();

        IUnknown *controllingUnknown() const
        { return controlling_unknown; }
        TQWidget *widget() const
        {
    	if ( the_object && the_object->isWidgetType() )
    	    return (TQWidget*)the_object;
    	return 0;
        }
        TQObject *object() const { return the_object; }

    private:
        IUnknown *controlling_unknown;
        TQObject *the_object;
    };

    #define TQAXAGG_IUNKNOWN \
        HRESULT WINAPI QueryInterface( REFIID iid, LPVOID *iface ) { \
        return controllingUnknown()->QueryInterface( iid, iface ); } \
        ULONG WINAPI AddRef() {return controllingUnknown()->AddRef(); } \
        ULONG WINAPI Release() {return controllingUnknown()->Release(); } \

    class TQAxBindable
    {
        friend class TQAxServerBase;
    public:
        TQAxBindable();
        virtual ~TQAxBindable();

        virtual TQAxAggregated *createAggregate();
        static void reportError( int code, const TQString &src, const TQString &desc, const TQString &help = TQString::null );

    protected:
        bool requestPropertyChange( const char *property );
        void propertyChanged( const char *property );

        IUnknown *clientSite() const;

    private:
        IAxServerBase *activex;
    };

    #endif // TQAXBINDABLE_H