<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- /home/espenr/tmp/qt - 3.3.8 - espenr - 2499/qt - x11 - free - 3.3.8/extensions/activeqt/examples/tetrax/tetrax.doc:27 -->
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=ISO-8859-1" >
< title > A TQt example as a scriptable ActiveX control (executable)< / title >
< style type = "text/css" > < ! - -
fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; }
-->< / style >
< / head >
< body >
< table border = "0" cellpadding = "0" cellspacing = "0" width = "100%" >
< tr bgcolor = "#E5E5E5" >
< td valign = center >
< a href = "index.html" >
< font color = "#004faf" > Home< / font > < / a >
| < a href = "classes.html" >
< font color = "#004faf" > All Classes< / font > < / a >
| < a href = "mainclasses.html" >
< font color = "#004faf" > Main Classes< / font > < / a >
| < a href = "annotated.html" >
< font color = "#004faf" > Annotated< / font > < / a >
| < a href = "groups.html" >
< font color = "#004faf" > Grouped Classes< / font > < / a >
| < a href = "functions.html" >
< font color = "#004faf" > Functions< / font > < / a >
< / td >
< td align = "right" valign = "center" > < img src = "logo32.png" align = "right" width = "64" height = "32" border = "0" > < / td > < / tr > < / table > < h1 align = center > A TQt example as a scriptable ActiveX control (executable)< / h1 >
This example shows how to turn an existing TQt application
into an ActiveX control server. The ActiveX control is based
on the TQt tetrix example.
< p > It demonstrates the use of the default factory provied by the
< a href = "qaxfactory.html#TQAXFACTORY_DEFAULT" > TQAXFACTORY_DEFAULT< / a > macro, and of < a href = "qaxfactory.html#isServer" > TQAxFactory::isServer< / a > ().
< p > The code changes for the tetrix GUI are minimal (a property < tt > score< / tt > ,
a signal < tt > gameOver< / tt > and a slot < tt > startGame< / tt > ) and provide a better scripting
interface for the use of the control in a web environment.
< p > The implementation of the ActiveX server functionality is only in the
tetrax.cpp file.
The default implementation of the < a href = "qaxfactory.html" > TQAxFactory< / a > is used through the
TQAXFACTORY_DEFAULT macro, and exports the TQTetrax object specifying
the five unique IDs required by COM to instantiate and communicate with
the server.
< pre > #include "qtetrax.h"
#include "qdragapp.h"
#include "ntqfont.h"
#include < < a href = "qaxfactory-h.html" > qaxfactory.h< / a > >
TQAXFACTORY_DEFAULT( TQTetrax,
"{852558AD-CBD6-4f07-844C-D1E8983CD6FC}",
"{2F5D0068-772C-4d1e-BCD2-D3F6BC7FD315}",
"{769F4820-9F28-490f-BA50-5545BD381DCB}",
"{5753B1A8-53B9-4abe-8690-6F14EC5CA8D0}",
"{DE2F7CE3-CFA7-4938-A9FC-867E2FEB63BA}" )
< / pre > The < tt > main< / tt > entry point method instantiates a < a href = "ntqapplication.html" > TQApplication< / a > object, and
creates the GUI only if the program is not running as an ActiveX server (ie.
the program has been started by the user, not by COM).
< pre > int main( int argc, char **argv )
{
< a name = "x2716" > < / a > TQApplication::< a href = "ntqapplication.html#setColorSpec" > setColorSpec< / a > ( TQApplication::CustomColor );
TQDragApplication a(argc,argv);
TQTetrax *tetrax = 0;
if ( !TQAxFactory::isServer() ) {
tetrax = new TQTetrax;
< a name = "x2718" > < / a > tetrax-> < a href = "ntqwidget.html#setCaption" > setCaption< / a > ("Tetrax");
a.< a href = "ntqapplication.html#setMainWidget" > setMainWidget< / a > (tetrax);
tetrax-> < a href = "ntqwidget.html#setCaption" > setCaption< / a > ("TQt Example - Tetrax");
tetrax-> < a href = "ntqwidget.html#show" > show< / a > ();
}
< / pre > The server enters the application event loop, and destroys the GUI before exiting.
< pre > int res = a.< a href = "ntqapplication.html#exec" > exec< / a > ();
delete tetrax;
return res;
}
< / pre >
< p > To build the example you must first build the < a href = "qaxserver.html" > TQAxServer< / a > library. Then run qmake and your make tool in
< tt > examples/tetrix< / tt > .
< p > < hr >
< p > The < a href = "qaxserver-demo-tetrax.html" > demonstration< / a > requires your
Web browser to support ActiveX controls, and scripting to be enabled.
< p >
The "Tetrix" control is embedded using the < tt > < object> < / tt > tag. Note that the
dimensions of the control are provided explicitely, as the control itself
does not use TQt's layout engine.
< pre > < object ID="TQTetrax" width=550 height=370
CLASSID="CLSID:852558AD-CBD6-4f07-844C-D1E8983CD6FC"
CODEBASE=http://www.trolltech.com/demos/tetrax.cab>
< PARAM NAME="score" VALUE="0">
[Object not available! Did you forget to build and register the server?]
< /object>
< / pre > An HTML button is added to start the game.
< pre > < form>
< input type="button" value="Start Game..."
onClick="TQTetrax.startGame()">
< /form>
< / pre > And an event handler for the < tt > gameOver()< / tt > event is implemented in JavaScript
to display a simple message box.
< pre > < SCRIPT LANGUAGE=JavaScript>
function TQTetrax::gameOver()
{
alert( "GameOver!" );
}
< /SCRIPT>
< / pre > < p > See also < a href = "qaxserver-examples.html" > The TQAxServer Examples< / a > .
<!-- eof -->
< p > < address > < hr > < div align = center >
< table width = 100% cellspacing = 0 border = 0 > < tr >
< td > Copyright © 2007
< a href = "troll.html" > Trolltech< / a > < td align = center > < a href = "trademarks.html" > Trademarks< / a >
< td align = right > < div align = right > TQt 3.3.8< / div >
< / table > < / div > < / address > < / body >
< / html >