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

Standard TQt widgets as ActiveX controls (in-process)

The ActiveX controls in this example are the standard button classes TQPushButton, TQCheckBox and TQRadioButton as provided by TQt.

It demonstrates how to export existing TQWidget classes as ActiveX controls, and the use of TQAxFactory together with the TQAXFACTORY_EXPORT macro.

    class ActiveTQtFactory : public TQAxFactory
    {
    public:
        ActiveTQtFactory( const TQUuid &lib, const TQUuid &app )
            : TQAxFactory( lib, app )
        {}
        TQStringList featureList() const
        {
            TQStringList list;
            list << "TQButton";
            list << "TQCheckBox";
            list << "TQRadioButton";
            list << "TQPushButton";
            list << "TQToolButton";
            return list;
        }
        TQWidget *create( const TQString &key, TQWidget *parent, const char *name )
        {
            if ( key == "TQButton" )
                return new TQButton( parent, name );
            if ( key == "TQCheckBox" )
                return new TQCheckBox( parent, name );
            if ( key == "TQRadioButton" )
                return new TQRadioButton( parent, name );
            if ( key == "TQPushButton" )
                return new TQPushButton( parent, name );
            if ( key == "TQToolButton" ) {
                TQToolButton *tb = new TQToolButton( parent, name );
                tb->setPixmap( TQPixmap(fileopen) );
                return tb;
            }

            return 0;
        }
        TQMetaObject *metaObject( const TQString &key ) const
        {
            if ( key == "TQButton" )
                return TQButton::staticMetaObject();
            if ( key == "TQCheckBox" )
                return TQCheckBox::staticMetaObject();
            if ( key == "TQRadioButton" )
                return TQRadioButton::staticMetaObject();
            if ( key == "TQPushButton" )
                return TQPushButton::staticMetaObject();
            if ( key == "TQToolButton" )
                return TQToolButton::staticMetaObject();

            return 0;
        }
        TQUuid classID( const TQString &key ) const
        {
            if ( key == "TQButton" )
                return "{23F5012A-7333-43D3-BCA8-836AABC61B4A}";
            if ( key == "TQCheckBox" )
                return "{6E795DE9-872D-43CF-A831-496EF9D86C68}";
            if ( key == "TQRadioButton" )
                return "{AFCF78C8-446C-409A-93B3-BA2959039189}";
            if ( key == "TQPushButton" )
                return "{2B262458-A4B6-468B-B7D4-CF5FEE0A7092}";
            if ( key == "TQToolButton" )
                return "{7c0ffe7a-60c3-4666-bde2-5cf2b54390a1}";

            return TQUuid();
        }
        TQUuid interfaceID( const TQString &key ) const
        {
            if ( key == "TQButton" )
                return "{6DA689FB-928F-423C-8632-678C3D3606DB}";
            if ( key == "TQCheckBox" )
                return "{4FD39DD7-2DE0-43C1-A8C2-27C51A052810}";
            if ( key == "TQRadioButton" )
                return "{7CC8AE30-206C-48A3-A009-B0A088026C2F}";
            if ( key == "TQPushButton" )
                return "{06831CC9-59B6-436A-9578-6D53E5AD03D3}";
            if ( key == "TQToolButton" )
                return "{6726080f-d63d-4950-a366-9bf33e5cdf84}";

            return TQUuid();
        }
        TQUuid eventsID( const TQString &key ) const
        {
            if ( key == "TQButton" )
                return "{73A5D03F-8ADE-4D84-9AE0-A93B4F85A130}";
            if ( key == "TQCheckBox" )
                return "{FDB6FFBE-56A3-4E90-8F4D-198488418B3A}";
            if ( key == "TQRadioButton" )
                return "{73EE4860-684C-4A66-BF63-9B9EFFA0CBE5}";
            if ( key == "TQPushButton" )
                return "{3CC3F17F-EA59-4B58-BBD3-842D467131DD}";
            if ( key == "TQToolButton" )
                return "{f4d421fd-4ead-4fd9-8a25-440766939639}";

            return TQUuid();
        }
    };
The factory implementation returns the list of supported controls, creates controls on request and provides information about the unique IDs of the COM classes and interfaces for each control.

    TQAXFACTORY_EXPORT( ActiveTQtFactory, "{3B756301-0075-4E40-8BE8-5A81DE2426B7}", "{AB068077-4924-406a-BBAF-42D91C8727DD}" )
The factory is exported using the TQAXFACTORY_EXPORT macro.

To build the example you must first build the TQAxServer library. Then run qmake and your make tool in examples/wrapper.


The demonstration requires your WebBrowser to support ActiveX controls, and scripting to be enabled.

    <SCRIPT LANGUAGE=VBScript>
    Sub ToolButton_Clicked()
        RadioButton.text = InputBox( "Enter something", "Wrapper Demo" )
    End Sub

    Sub PushButton_clicked()
        MsgBox( "Thank you!" )
    End Sub

    Sub CheckBox_toggled( state )
        if state = 0 then
            CheckBox.text = "Check me!"
        else
            CheckBox.text = "Uncheck me!"
        end if
    End Sub
    </SCRIPT>
    <p>
    A TQPushButton:<br>
    <object ID="PushButton" CLASSID="CLSID:2B262458-A4B6-468B-B7D4-CF5FEE0A7092"
    CODEBASE=http://www.trolltech.com/demos/wrapperax.cab>
        <PARAM NAME="text" VALUE="Click me!">
    [Object not available! Did you forget to build and register the server?]
    </object><br>

    <p>
    A TQCheckBox:<br>
    <object ID="CheckBox" CLASSID="CLSID:6E795de9-872d-43cf-a831-496ef9d86c68"
    CODEBASE=http://www.trolltech.com/demos/wrapperax.cab>
        <PARAM NAME="text" VALUE="Check me!">
    [Object not available! Did you forget to build and register the server?]
    </object><br>

    <p>
    A TQToolButton:<br>
    <object ID="ToolButton" CLASSID="CLSID:7c0ffe7a-60c3-4666-bde2-5cf2b54390a1"
    CODEBASE=http://www.trolltech.com/demos/wrapperax.cab>
    [Object not available! Did you forget to build and register the server?]
    </object><br>

    <p>
    A TQRadioButton:<br>
    <object ID="RadioButton" CLASSID="CLSID:afcf78c8-446c-409a-93b3-ba2959039189"
    CODEBASE=http://www.trolltech.com/demos/wrapperax.cab>
        <PARAM NAME="text" VALUE="Tune me!">
    [Object not available! Did you forget to build and register the server?]
    </object><br>

See also The TQAxServer Examples.


Copyright © 2007 TrolltechTrademarks
TQt 3.3.8