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.