Lindsay Mathieson's newest wxActiveX class has been wrapped into a new

extension module called wx.activex.  Lots of demo and lib updates to
go along with it.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26301 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2004-03-23 05:29:50 +00:00
parent 13baae2c95
commit b7c75283f2
98 changed files with 16994 additions and 21 deletions

View File

@@ -0,0 +1,211 @@
#---------------------------------------------------------------------------
# Some helper and utility functions for ActiveX
t4 = " " * 4
t8 = " " * 8
def GetAXInfo(ax):
"""
Returns a printable summary of the TypeInfo from the ActiveX instance
passed in.
"""
def ProcessFuncX(f, out, name):
out.append(name)
out.append(t4 + "retType: %s" % f.retType.vt_type)
if f.params:
out.append(t4 + "params:")
for p in f.params:
out.append(t8 + p.name)
out.append(t8+t4+ "in:%s out:%s optional:%s type:%s" % (p.isIn, p.isOut, p.isOptional, p.vt_type))
out.append('')
def ProcessPropX(p, out):
out.append(GernerateAXModule.trimPropName(p.name))
out.append(t4+ "type:%s arg:%s canGet:%s canSet:%s" % (p.type.vt_type, p.arg.vt_type, p.canGet, p.canSet))
out.append('')
out = []
out.append("PROPERTIES")
out.append("-"*20)
for p in ax.GetAXProperties():
ProcessPropX(p, out)
out.append('\n\n')
out.append("METHODS")
out.append("-"*20)
for m in ax.GetAXMethods():
ProcessFuncX(m, out, GernerateAXModule.trimMethodName(m.name))
out.append('\n\n')
out.append("EVENTS")
out.append("-"*20)
for e in ax.GetAXEvents():
ProcessFuncX(e, out, GernerateAXModule.trimEventName(e.name))
out.append('\n\n')
return "\n".join(out)
class GernerateAXModule:
def __init__(self, ax, className, modulePath, moduleName=None, verbose=False):
"""
Make a Python module file with a class that has been specialized
for the AcitveX object.
ax An instance of the ActiveXWindow class
className The name to use for the new class
modulePath The path where the new module should be written to
moduleName The name of the .py file to create. If not given
then the className will be used.
"""
import os
if moduleName is None:
moduleName = className + '.py'
filename = os.path.join(modulePath, moduleName)
if verbose:
print "Creating module in:", filename
print " ProgID: ", ax.GetCLSID().GetProgIDString()
print " CLSID: ", ax.GetCLSID().GetCLSIDString()
print
self.mf = file(filename, "w")
self.WriteFileHeader(ax)
self.WriteEvents(ax)
self.WriteClassHeader(ax, className)
self.WriteMethods(ax)
self.WriteProperties(ax)
self.WriteDocs(ax)
self.mf.close()
del self.mf
def WriteFileHeader(self, ax):
self.write("# This module was generated by the wx.activex.GernerateAXModule class\n"
"# (See also the genaxmodule script.)\n")
self.write("import wx")
self.write("import wx.activex\n")
self.write("clsID = '%s'\nprogID = '%s'\n"
% (ax.GetCLSID().GetCLSIDString(), ax.GetCLSID().GetProgIDString()))
self.write("\n")
def WriteEvents(self, ax):
events = ax.GetAXEvents()
if events:
self.write("# Create eventTypes and event binders")
for e in events:
self.write("wxEVT_%s = wx.activex.RegisterActiveXEvent('%s')"
% (self.trimEventName(e.name), e.name))
self.write()
for e in events:
n = self.trimEventName(e.name)
self.write("EVT_%s = wx.PyEventBinder(wxEVT_%s, 1)" % (n,n))
self.write("\n")
def WriteClassHeader(self, ax, className):
self.write("# Derive a new class from ActiveXWindow")
self.write("""\
class %s(wx.activex.ActiveXWindow):
def __init__(self, parent, ID=-1, pos=wx.DefaultPosition,
size=wx.DefaultSize, style=0, name='%s'):
wx.activex.ActiveXWindow.__init__(self, parent,
wx.activex.CLSID('%s'),
ID, pos, size, style, name)
""" % (className, className, ax.GetCLSID().GetCLSIDString()) )
def WriteMethods(self, ax):
methods = ax.GetAXMethods()
if methods:
self.write(t4, "# Methods exported by the ActiveX object")
for m in methods:
name = self.trimMethodName(m.name)
self.write(t4, "def %s(self%s):" % (name, self.getParameters(m, True)))
self.write(t8, "return self.CallAXMethod('%s'%s)" % (m.name, self.getParameters(m, False)))
self.write()
def WriteProperties(self, ax):
props = ax.GetAXProperties()
if props:
self.write(t4, "# Getters, Setters and properties")
for p in props:
getterName = setterName = "None"
if p.canGet:
getterName = "_get_" + p.name
self.write(t4, "def %s(self):" % getterName)
self.write(t8, "return self.GetAXProp('%s')" % p.name)
if p.canSet:
setterName = "_set_" + p.name
self.write(t4, "def %s(self, %s):" % (setterName, p.arg.name))
self.write(t8, "self.SetAXProp('%s', %s)" % (p.name, p.arg.name))
self.write(t4, "%s = property(%s, %s)" %
(self.trimPropName(p.name), getterName, setterName))
self.write()
def WriteDocs(self, ax):
self.write()
doc = GetAXInfo(ax)
for line in doc.split('\n'):
self.write("# ", line)
def write(self, *args):
for a in args:
self.mf.write(a)
self.mf.write("\n")
def trimEventName(name):
if name.startswith("On"):
name = name[2:]
return name
trimEventName = staticmethod(trimEventName)
def trimPropName(name):
#name = name[0].lower() + name[1:]
name = name.lower()
import keyword
if name in keyword.kwlist: name += '_'
return name
trimPropName = staticmethod(trimPropName)
def trimMethodName(name):
import keyword
if name in keyword.kwlist: name += '_'
return name
trimMethodName = staticmethod(trimMethodName)
def getParameters(self, m, withDefaults):
import keyword
st = ""
# collect the input parameters, if both isIn and isOut are
# False then assume it is an input paramater
params = []
for p in m.params:
if p.isIn or (not p.isIn and not p.isOut):
params.append(p)
# did we get any?
for p in params:
name = p.name
if name in keyword.kwlist: name += '_'
st += ", "
st += name
if withDefaults and p.isOptional:
st += '=None'
return st
#---------------------------------------------------------------------------

View File

@@ -0,0 +1,16 @@
// A bunch of %rename directives generated by ./distrib/build_renamers.py
// in order to remove the wx prefix from all global scope names.
#ifndef BUILDING_RENAMERS
%rename(ParamX) wxParamX;
%rename(FuncX) wxFuncX;
%rename(PropX) wxPropX;
%rename(ParamXArray) wxParamXArray;
%rename(FuncXArray) wxFuncXArray;
%rename(PropXArray) wxPropXArray;
%rename(ActiveXWindow) wxActiveXWindow;
%rename(ActiveXEvent) wxActiveXEvent;
%rename(IEHtmlWindowBase) wxIEHtmlWindowBase;
#endif

View File

@@ -0,0 +1,2 @@
EVT*

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,621 @@
# This file was created automatically by SWIG.
# Don't modify this file, modify the SWIG interface instead.
import _activex
import core
wx = core
#---------------------------------------------------------------------------
class CLSID(object):
"""
This class wraps the Windows CLSID structure and is used to
specify the class of the ActiveX object that is to be created. A
CLSID can be constructed from either a ProgID string, (such as
'WordPad.Document.1') or a classID string, (such as
'{CA8A9783-280D-11CF-A24D-444553540000}').
"""
def __repr__(self):
return "<%s.%s; proxy of C++ CLSID instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
def __init__(self, *args, **kwargs):
"""
__init__(String id) -> CLSID
This class wraps the Windows CLSID structure and is used to
specify the class of the ActiveX object that is to be created. A
CLSID can be constructed from either a ProgID string, (such as
'WordPad.Document.1') or a classID string, (such as
'{CA8A9783-280D-11CF-A24D-444553540000}').
"""
newobj = _activex.new_CLSID(*args, **kwargs)
self.this = newobj.this
self.thisown = 1
del newobj.thisown
def __del__(self, destroy=_activex.delete_CLSID):
"""__del__()"""
try:
if self.thisown: destroy(self)
except: pass
def GetCLSIDString(*args, **kwargs):
"""GetCLSIDString() -> String"""
return _activex.CLSID_GetCLSIDString(*args, **kwargs)
def GetProgIDString(*args, **kwargs):
"""GetProgIDString() -> String"""
return _activex.CLSID_GetProgIDString(*args, **kwargs)
def __str__(self): return self.GetCLSIDString()
class CLSIDPtr(CLSID):
def __init__(self, this):
self.this = this
if not hasattr(self,"thisown"): self.thisown = 0
self.__class__ = CLSID
_activex.CLSID_swigregister(CLSIDPtr)
#---------------------------------------------------------------------------
class ParamX(object):
def __init__(self): raise RuntimeError, "No constructor defined"
def __repr__(self):
return "<%s.%s; proxy of C++ wxParamX instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
flags = property(_activex.ParamX_flags_get)
isPtr = property(_activex.ParamX_isPtr_get)
isSafeArray = property(_activex.ParamX_isSafeArray_get)
isOptional = property(_activex.ParamX_isOptional_get)
vt = property(_activex.ParamX_vt_get)
name = property(_activex.ParamX_name_get)
vt_type = property(_activex.ParamX_vt_type_get)
isIn = property(_activex.ParamX_IsIn)
isOut = property(_activex.ParamX_IsOut)
isRetVal = property(_activex.ParamX_IsRetVal)
class ParamXPtr(ParamX):
def __init__(self, this):
self.this = this
if not hasattr(self,"thisown"): self.thisown = 0
self.__class__ = ParamX
_activex.ParamX_swigregister(ParamXPtr)
class FuncX(object):
def __init__(self): raise RuntimeError, "No constructor defined"
def __repr__(self):
return "<%s.%s; proxy of C++ wxFuncX instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
name = property(_activex.FuncX_name_get)
memid = property(_activex.FuncX_memid_get)
hasOut = property(_activex.FuncX_hasOut_get)
retType = property(_activex.FuncX_retType_get)
params = property(_activex.FuncX_params_get)
class FuncXPtr(FuncX):
def __init__(self, this):
self.this = this
if not hasattr(self,"thisown"): self.thisown = 0
self.__class__ = FuncX
_activex.FuncX_swigregister(FuncXPtr)
class PropX(object):
def __init__(self): raise RuntimeError, "No constructor defined"
def __repr__(self):
return "<%s.%s; proxy of C++ wxPropX instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
name = property(_activex.PropX_name_get)
memid = property(_activex.PropX_memid_get)
type = property(_activex.PropX_type_get)
arg = property(_activex.PropX_arg_get)
putByRef = property(_activex.PropX_putByRef_get)
canGet = property(_activex.PropX_CanGet)
canSet = property(_activex.PropX_CanSet)
class PropXPtr(PropX):
def __init__(self, this):
self.this = this
if not hasattr(self,"thisown"): self.thisown = 0
self.__class__ = PropX
_activex.PropX_swigregister(PropXPtr)
class ParamXArray(object):
def __init__(self): raise RuntimeError, "No constructor defined"
def __repr__(self):
return "<%s.%s; proxy of C++ wxParamXArray instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
def __nonzero__(*args, **kwargs):
"""__nonzero__() -> bool"""
return _activex.ParamXArray___nonzero__(*args, **kwargs)
def __len__(*args, **kwargs):
"""__len__() -> int"""
return _activex.ParamXArray___len__(*args, **kwargs)
def __getitem__(*args, **kwargs):
"""__getitem__(int idx) -> ParamX"""
return _activex.ParamXArray___getitem__(*args, **kwargs)
class ParamXArrayPtr(ParamXArray):
def __init__(self, this):
self.this = this
if not hasattr(self,"thisown"): self.thisown = 0
self.__class__ = ParamXArray
_activex.ParamXArray_swigregister(ParamXArrayPtr)
class FuncXArray(object):
def __init__(self): raise RuntimeError, "No constructor defined"
def __repr__(self):
return "<%s.%s; proxy of C++ wxFuncXArray instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
def __nonzero__(*args, **kwargs):
"""__nonzero__() -> bool"""
return _activex.FuncXArray___nonzero__(*args, **kwargs)
def __len__(*args, **kwargs):
"""__len__() -> int"""
return _activex.FuncXArray___len__(*args, **kwargs)
def __getitem__(*args, **kwargs):
"""__getitem__(int idx) -> FuncX"""
return _activex.FuncXArray___getitem__(*args, **kwargs)
class FuncXArrayPtr(FuncXArray):
def __init__(self, this):
self.this = this
if not hasattr(self,"thisown"): self.thisown = 0
self.__class__ = FuncXArray
_activex.FuncXArray_swigregister(FuncXArrayPtr)
class PropXArray(object):
def __init__(self): raise RuntimeError, "No constructor defined"
def __repr__(self):
return "<%s.%s; proxy of C++ wxPropXArray instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
def __nonzero__(*args, **kwargs):
"""__nonzero__() -> bool"""
return _activex.PropXArray___nonzero__(*args, **kwargs)
def __len__(*args, **kwargs):
"""__len__() -> int"""
return _activex.PropXArray___len__(*args, **kwargs)
def __getitem__(*args, **kwargs):
"""__getitem__(int idx) -> PropX"""
return _activex.PropXArray___getitem__(*args, **kwargs)
class PropXArrayPtr(PropXArray):
def __init__(self, this):
self.this = this
if not hasattr(self,"thisown"): self.thisown = 0
self.__class__ = PropXArray
_activex.PropXArray_swigregister(PropXArrayPtr)
#---------------------------------------------------------------------------
class ActiveXWindow(core.Window):
"""
ActiveXWindow derives from wxWindow and the constructor accepts a
CLSID for the ActiveX Control that should be created. The
ActiveXWindow class simply adds methods that allow you to query
some of the TypeInfo exposed by the ActiveX object, and also to
get/set properties or call methods by name. The Python
implementation automatically handles converting parameters and
return values to/from the types expected by the ActiveX code as
specified by the TypeInfo.
"""
def __repr__(self):
return "<%s.%s; proxy of C++ wxActiveXWindow instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
def __init__(self, *args, **kwargs):
"""
__init__(Window parent, CLSID clsId, int id=-1, Point pos=DefaultPosition,
Size size=DefaultSize, long style=0,
String name=PanelNameStr) -> ActiveXWindow
Creates an ActiveX control from the clsID given and makes it act
as much like a regular wx.Window as possible.
"""
newobj = _activex.new_ActiveXWindow(*args, **kwargs)
self.this = newobj.this
self.thisown = 1
del newobj.thisown
self._setOORInfo(self)
def GetCLSID(*args, **kwargs):
"""
GetCLSID() -> CLSID
Return the CLSID used to construct this ActiveX window
"""
return _activex.ActiveXWindow_GetCLSID(*args, **kwargs)
def GetAXEventCount(*args, **kwargs):
"""
GetAXEventCount() -> int
Number of events defined for this control
"""
return _activex.ActiveXWindow_GetAXEventCount(*args, **kwargs)
def GetAXEventDesc(*args, **kwargs):
"""
GetAXEventDesc(int idx) -> FuncX
Returns event description by index
"""
return _activex.ActiveXWindow_GetAXEventDesc(*args, **kwargs)
def GetAXPropCount(*args, **kwargs):
"""
GetAXPropCount() -> int
Number of properties defined for this control
"""
return _activex.ActiveXWindow_GetAXPropCount(*args, **kwargs)
def GetAXPropDesc(*args):
"""
GetAXPropDesc(int idx) -> PropX
GetAXPropDesc(String name) -> PropX
"""
return _activex.ActiveXWindow_GetAXPropDesc(*args)
def GetAXMethodCount(*args, **kwargs):
"""
GetAXMethodCount() -> int
Number of methods defined for this control
"""
return _activex.ActiveXWindow_GetAXMethodCount(*args, **kwargs)
def GetAXMethodDesc(*args):
"""
GetAXMethodDesc(int idx) -> FuncX
GetAXMethodDesc(String name) -> FuncX
"""
return _activex.ActiveXWindow_GetAXMethodDesc(*args)
def GetAXEvents(*args, **kwargs):
"""
GetAXEvents() -> FuncXArray
Returns a sequence of FuncX objects describing the events
available for this ActiveX object.
"""
return _activex.ActiveXWindow_GetAXEvents(*args, **kwargs)
def GetAXMethods(*args, **kwargs):
"""
GetAXMethods() -> FuncXArray
Returns a sequence of FuncX objects describing the methods
available for this ActiveX object.
"""
return _activex.ActiveXWindow_GetAXMethods(*args, **kwargs)
def GetAXProperties(*args, **kwargs):
"""
GetAXProperties() -> PropXArray
Returns a sequence of PropX objects describing the properties
available for this ActiveX object.
"""
return _activex.ActiveXWindow_GetAXProperties(*args, **kwargs)
def SetAXProp(*args, **kwargs):
"""
SetAXProp(String name, PyObject value)
Set a property of the ActiveX object by name.
"""
return _activex.ActiveXWindow_SetAXProp(*args, **kwargs)
def GetAXProp(*args, **kwargs):
"""
GetAXProp(String name) -> PyObject
Get the value of an ActiveX property by name.
"""
return _activex.ActiveXWindow_GetAXProp(*args, **kwargs)
def _CallAXMethod(*args):
"""
_CallAXMethod(String name, PyObject args) -> PyObject
The implementation for CallMethod. Calls an ActiveX method, by
name passing the parameters given in args.
"""
return _activex.ActiveXWindow__CallAXMethod(*args)
def CallAXMethod(self, name, *args):
"""
Front-end for _CallMethod. Simply passes all positional args
after the name as a single tuple to _CallMethod.
"""
return self._CallAXMethod(name, args)
class ActiveXWindowPtr(ActiveXWindow):
def __init__(self, this):
self.this = this
if not hasattr(self,"thisown"): self.thisown = 0
self.__class__ = ActiveXWindow
_activex.ActiveXWindow_swigregister(ActiveXWindowPtr)
#---------------------------------------------------------------------------
def RegisterActiveXEvent(*args, **kwargs):
"""
RegisterActiveXEvent(String eventName) -> wxEventType
Creates a standard wx event ID for the given eventName.
"""
return _activex.RegisterActiveXEvent(*args, **kwargs)
class ActiveXEvent(core.CommandEvent):
"""
An instance of ActiveXEvent is sent to the handler for all bound
ActiveX events. Any event parameters from the ActiveX cntrol are
turned into attributes of the Python proxy for this event object.
Additionally, there is a property called eventName that will
return (suprizingly <wink>) the name of the ActiveX event.
"""
def __init__(self): raise RuntimeError, "No constructor defined"
def __repr__(self):
return "<%s.%s; proxy of C++ wxActiveXEvent instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
eventName = property(_activex.ActiveXEvent_EventName)
def _preInit(*args, **kwargs):
"""
_preInit(PyObject pyself)
This is called by the EventThunker before calling the handler.
We'll convert and load the ActiveX event parameters into
attributes of the Python event object.
"""
return _activex.ActiveXEvent__preInit(*args, **kwargs)
class ActiveXEventPtr(ActiveXEvent):
def __init__(self, this):
self.this = this
if not hasattr(self,"thisown"): self.thisown = 0
self.__class__ = ActiveXEvent
_activex.ActiveXEvent_swigregister(ActiveXEventPtr)
#---------------------------------------------------------------------------
class IEHtmlWindowBase(ActiveXWindow):
def __repr__(self):
return "<%s.%s; proxy of C++ wxIEHtmlWindowBase instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
def __init__(self, *args, **kwargs):
newobj = _activex.new_IEHtmlWindowBase(*args, **kwargs)
self.this = newobj.this
self.thisown = 1
del newobj.thisown
def SetCharset(*args, **kwargs): return _activex.IEHtmlWindowBase_SetCharset(*args, **kwargs)
def LoadString(*args, **kwargs): return _activex.IEHtmlWindowBase_LoadString(*args, **kwargs)
def LoadStream(*args, **kwargs): return _activex.IEHtmlWindowBase_LoadStream(*args, **kwargs)
def GetStringSelection(*args, **kwargs): return _activex.IEHtmlWindowBase_GetStringSelection(*args, **kwargs)
def GetText(*args, **kwargs): return _activex.IEHtmlWindowBase_GetText(*args, **kwargs)
class IEHtmlWindowBasePtr(IEHtmlWindowBase):
def __init__(self, this):
self.this = this
if not hasattr(self,"thisown"): self.thisown = 0
self.__class__ = IEHtmlWindowBase
_activex.IEHtmlWindowBase_swigregister(IEHtmlWindowBasePtr)
#---------------------------------------------------------------------------
# Some helper and utility functions for ActiveX
t4 = " " * 4
t8 = " " * 8
def GetAXInfo(ax):
"""
Returns a printable summary of the TypeInfo from the ActiveX instance
passed in.
"""
def ProcessFuncX(f, out, name):
out.append(name)
out.append(t4 + "retType: %s" % f.retType.vt_type)
if f.params:
out.append(t4 + "params:")
for p in f.params:
out.append(t8 + p.name)
out.append(t8+t4+ "in:%s out:%s optional:%s type:%s" % (p.isIn, p.isOut, p.isOptional, p.vt_type))
out.append('')
def ProcessPropX(p, out):
out.append(GernerateAXModule.trimPropName(p.name))
out.append(t4+ "type:%s arg:%s canGet:%s canSet:%s" % (p.type.vt_type, p.arg.vt_type, p.canGet, p.canSet))
out.append('')
out = []
out.append("PROPERTIES")
out.append("-"*20)
for p in ax.GetAXProperties():
ProcessPropX(p, out)
out.append('\n\n')
out.append("METHODS")
out.append("-"*20)
for m in ax.GetAXMethods():
ProcessFuncX(m, out, GernerateAXModule.trimMethodName(m.name))
out.append('\n\n')
out.append("EVENTS")
out.append("-"*20)
for e in ax.GetAXEvents():
ProcessFuncX(e, out, GernerateAXModule.trimEventName(e.name))
out.append('\n\n')
return "\n".join(out)
class GernerateAXModule:
def __init__(self, ax, className, modulePath, moduleName=None, verbose=False):
"""
Make a Python module file with a class that has been specialized
for the AcitveX object.
ax An instance of the ActiveXWindow class
className The name to use for the new class
modulePath The path where the new module should be written to
moduleName The name of the .py file to create. If not given
then the className will be used.
"""
import os
if moduleName is None:
moduleName = className + '.py'
filename = os.path.join(modulePath, moduleName)
if verbose:
print "Creating module in:", filename
print " ProgID: ", ax.GetCLSID().GetProgIDString()
print " CLSID: ", ax.GetCLSID().GetCLSIDString()
print
self.mf = file(filename, "w")
self.WriteFileHeader(ax)
self.WriteEvents(ax)
self.WriteClassHeader(ax, className)
self.WriteMethods(ax)
self.WriteProperties(ax)
self.WriteDocs(ax)
self.mf.close()
del self.mf
def WriteFileHeader(self, ax):
self.write("# This module was generated by the wx.activex.GernerateAXModule class\n"
"# (See also the genaxmodule script.)\n")
self.write("import wx")
self.write("import wx.activex\n")
self.write("clsID = '%s'\nprogID = '%s'\n"
% (ax.GetCLSID().GetCLSIDString(), ax.GetCLSID().GetProgIDString()))
self.write("\n")
def WriteEvents(self, ax):
events = ax.GetAXEvents()
if events:
self.write("# Create eventTypes and event binders")
for e in events:
self.write("wxEVT_%s = wx.activex.RegisterActiveXEvent('%s')"
% (self.trimEventName(e.name), e.name))
self.write()
for e in events:
n = self.trimEventName(e.name)
self.write("EVT_%s = wx.PyEventBinder(wxEVT_%s, 1)" % (n,n))
self.write("\n")
def WriteClassHeader(self, ax, className):
self.write("# Derive a new class from ActiveXWindow")
self.write("""\
class %s(wx.activex.ActiveXWindow):
def __init__(self, parent, ID=-1, pos=wx.DefaultPosition,
size=wx.DefaultSize, style=0, name='%s'):
wx.activex.ActiveXWindow.__init__(self, parent,
wx.activex.CLSID('%s'),
ID, pos, size, style, name)
""" % (className, className, ax.GetCLSID().GetCLSIDString()) )
def WriteMethods(self, ax):
methods = ax.GetAXMethods()
if methods:
self.write(t4, "# Methods exported by the ActiveX object")
for m in methods:
name = self.trimMethodName(m.name)
self.write(t4, "def %s(self%s):" % (name, self.getParameters(m, True)))
self.write(t8, "return self.CallAXMethod('%s'%s)" % (m.name, self.getParameters(m, False)))
self.write()
def WriteProperties(self, ax):
props = ax.GetAXProperties()
if props:
self.write(t4, "# Getters, Setters and properties")
for p in props:
getterName = setterName = "None"
if p.canGet:
getterName = "_get_" + p.name
self.write(t4, "def %s(self):" % getterName)
self.write(t8, "return self.GetAXProp('%s')" % p.name)
if p.canSet:
setterName = "_set_" + p.name
self.write(t4, "def %s(self, %s):" % (setterName, p.arg.name))
self.write(t8, "self.SetAXProp('%s', %s)" % (p.name, p.arg.name))
self.write(t4, "%s = property(%s, %s)" %
(self.trimPropName(p.name), getterName, setterName))
self.write()
def WriteDocs(self, ax):
self.write()
doc = GetAXInfo(ax)
for line in doc.split('\n'):
self.write("# ", line)
def write(self, *args):
for a in args:
self.mf.write(a)
self.mf.write("\n")
def trimEventName(name):
if name.startswith("On"):
name = name[2:]
return name
trimEventName = staticmethod(trimEventName)
def trimPropName(name):
#name = name[0].lower() + name[1:]
name = name.lower()
import keyword
if name in keyword.kwlist: name += '_'
return name
trimPropName = staticmethod(trimPropName)
def trimMethodName(name):
import keyword
if name in keyword.kwlist: name += '_'
return name
trimMethodName = staticmethod(trimMethodName)
def getParameters(self, m, withDefaults):
import keyword
st = ""
# collect the input parameters, if both isIn and isOut are
# False then assume it is an input paramater
params = []
for p in m.params:
if p.isIn or (not p.isIn and not p.isOut):
params.append(p)
# did we get any?
for p in params:
name = p.name
if name in keyword.kwlist: name += '_'
st += ", "
st += name
if withDefaults and p.isOptional:
st += '=None'
return st
#---------------------------------------------------------------------------

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,133 @@
/*
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
*/
// This module contains the declarations of the stream adapters and such that
// used to be in IEHtmlWin.cpp, so that they can be used independently in the
// wxPython wrappers...
#ifndef _IEHTMLSTREAM_H_
#define _IEHTMLSTREAM_H_
class IStreamAdaptorBase : public IStream
{
private:
DECLARE_OLE_UNKNOWN(IStreamAdaptorBase);
public:
string prepend;
IStreamAdaptorBase() {}
virtual ~IStreamAdaptorBase() {}
virtual int Read(char *buf, int cb) = 0;
// ISequentialStream
HRESULT STDMETHODCALLTYPE Read(void __RPC_FAR *pv, ULONG cb, ULONG __RPC_FAR *pcbRead);
HRESULT STDMETHODCALLTYPE Write(const void __RPC_FAR *pv, ULONG cb, ULONG __RPC_FAR *pcbWritten) {return E_NOTIMPL;}
// IStream
HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER __RPC_FAR *plibNewPosition) {return E_NOTIMPL;}
HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER libNewSize) {return E_NOTIMPL;}
HRESULT STDMETHODCALLTYPE CopyTo(IStream __RPC_FAR *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER __RPC_FAR *pcbRead, ULARGE_INTEGER __RPC_FAR *pcbWritten) {return E_NOTIMPL;}
HRESULT STDMETHODCALLTYPE Commit(DWORD grfCommitFlags) {return E_NOTIMPL;}
HRESULT STDMETHODCALLTYPE Revert(void) {return E_NOTIMPL;}
HRESULT STDMETHODCALLTYPE LockRegion(ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) {return E_NOTIMPL;}
HRESULT STDMETHODCALLTYPE UnlockRegion(ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) {return E_NOTIMPL;}
HRESULT STDMETHODCALLTYPE Stat(STATSTG __RPC_FAR *pstatstg, DWORD grfStatFlag) {return E_NOTIMPL;}
HRESULT STDMETHODCALLTYPE Clone(IStream __RPC_FAR *__RPC_FAR *ppstm) {return E_NOTIMPL;}
};
class IStreamAdaptor : public IStreamAdaptorBase
{
private:
istream *m_is;
public:
IStreamAdaptor(istream *is);
~IStreamAdaptor();
int Read(char *buf, int cb);
};
class IwxStreamAdaptor : public IStreamAdaptorBase
{
private:
wxInputStream *m_is;
public:
IwxStreamAdaptor(wxInputStream *is);
~IwxStreamAdaptor();
int Read(char *buf, int cb);
};
class wxOwnedMemInputStream : public wxMemoryInputStream
{
public:
char *m_data;
wxOwnedMemInputStream(char *data, size_t len);
~wxOwnedMemInputStream();
};
wxAutoOleInterface<IHTMLTxtRange> wxieGetSelRange(IOleObject *oleObject);
#endif

View File

@@ -0,0 +1,478 @@
/*
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
*/
#include "IEHtmlWin.h"
#include <wx/strconv.h>
#include <wx/string.h>
#include <wx/event.h>
#include <wx/listctrl.h>
#include <wx/mstream.h>
#include <oleidl.h>
#include <winerror.h>
#include <exdispid.h>
#include <exdisp.h>
#include <olectl.h>
#include <Mshtml.h>
#include <sstream>
#include <IEHtmlStream.h>
using namespace std;
//////////////////////////////////////////////////////////////////////
// Stream adapters and such
HRESULT STDMETHODCALLTYPE IStreamAdaptorBase::Read(void __RPC_FAR *pv, ULONG cb, ULONG __RPC_FAR *pcbRead)
{
if (prepend.size() > 0)
{
int n = min(prepend.size(), cb);
prepend.copy((char *) pv, n);
prepend = prepend.substr(n);
if (pcbRead)
*pcbRead = n;
return S_OK;
};
int rc = Read((char *) pv, cb);
if (pcbRead)
*pcbRead = rc;
return S_OK;
};
DEFINE_OLE_TABLE(IStreamAdaptorBase)
OLE_IINTERFACE(IUnknown)
OLE_IINTERFACE(ISequentialStream)
OLE_IINTERFACE(IStream)
END_OLE_TABLE;
IStreamAdaptor::IStreamAdaptor(istream *is)
: IStreamAdaptorBase(), m_is(is)
{
wxASSERT(m_is != NULL);
}
IStreamAdaptor::~IStreamAdaptor()
{
delete m_is;
}
int IStreamAdaptor::Read(char *buf, int cb)
{
m_is->read(buf, cb);
return m_is->gcount();
}
IwxStreamAdaptor::IwxStreamAdaptor(wxInputStream *is)
: IStreamAdaptorBase(), m_is(is)
{
wxASSERT(m_is != NULL);
}
IwxStreamAdaptor::~IwxStreamAdaptor()
{
delete m_is;
}
// ISequentialStream
int IwxStreamAdaptor::Read(char *buf, int cb)
{
m_is->Read(buf, cb);
return m_is->LastRead();
};
wxOwnedMemInputStream::wxOwnedMemInputStream(char *data, size_t len)
: wxMemoryInputStream(data, len), m_data(data)
{}
wxOwnedMemInputStream::~wxOwnedMemInputStream()
{
free(m_data);
}
//////////////////////////////////////////////////////////////////////
BEGIN_EVENT_TABLE(wxIEHtmlWin, wxActiveX)
END_EVENT_TABLE()
static const CLSID CLSID_MozillaBrowser =
{ 0x1339B54C, 0x3453, 0x11D2,
{ 0x93, 0xB9, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00 } };
//#define PROGID "Shell.Explorer"
#define PROGID CLSID_WebBrowser
//#define PROGID CLSID_MozillaBrowser
//#define PROGID CLSID_HTMLDocument
//#define PROGID "MSCAL.Calendar"
//#define PROGID ""
//#define PROGID "SoftwareFX.ChartFX.20"
wxIEHtmlWin::wxIEHtmlWin(wxWindow * parent, wxWindowID id,
const wxPoint& pos,
const wxSize& size,
long style,
const wxString& name) :
wxActiveX(parent, PROGID, id, pos, size, style, name)
{
SetupBrowser();
}
wxIEHtmlWin::~wxIEHtmlWin()
{
}
void wxIEHtmlWin::SetupBrowser()
{
HRESULT hret;
// Get IWebBrowser2 Interface
hret = m_webBrowser.QueryInterface(IID_IWebBrowser2, m_ActiveX);
assert(SUCCEEDED(hret));
// web browser setup
m_webBrowser->put_MenuBar(VARIANT_FALSE);
m_webBrowser->put_AddressBar(VARIANT_FALSE);
m_webBrowser->put_StatusBar(VARIANT_FALSE);
m_webBrowser->put_ToolBar(VARIANT_FALSE);
m_webBrowser->put_RegisterAsBrowser(VARIANT_TRUE);
m_webBrowser->put_RegisterAsDropTarget(VARIANT_TRUE);
m_webBrowser->Navigate( L"about:blank", NULL, NULL, NULL, NULL );
}
void wxIEHtmlWin::SetEditMode(bool seton)
{
m_bAmbientUserMode = ! seton;
AmbientPropertyChanged(DISPID_AMBIENT_USERMODE);
};
bool wxIEHtmlWin::GetEditMode()
{
return ! m_bAmbientUserMode;
};
void wxIEHtmlWin::SetCharset(const wxString& charset)
{
// HTML Document ?
IDispatch *pDisp = NULL;
HRESULT hret = m_webBrowser->get_Document(&pDisp);
wxAutoOleInterface<IDispatch> disp(pDisp);
if (disp.Ok())
{
wxAutoOleInterface<IHTMLDocument2> doc(IID_IHTMLDocument2, disp);
if (doc.Ok())
doc->put_charset((BSTR) (const wchar_t *) charset.wc_str(wxConvUTF8));
//doc->put_charset((BSTR) wxConvUTF8.cMB2WC(charset).data());
};
};
void wxIEHtmlWin::LoadUrl(const wxString& url)
{
VARIANTARG navFlag, targetFrame, postData, headers;
navFlag.vt = VT_EMPTY;
navFlag.vt = VT_I2;
navFlag.iVal = navNoReadFromCache;
targetFrame.vt = VT_EMPTY;
postData.vt = VT_EMPTY;
headers.vt = VT_EMPTY;
HRESULT hret = 0;
hret = m_webBrowser->Navigate((BSTR) (const wchar_t *) url.wc_str(wxConvUTF8),
&navFlag, &targetFrame, &postData, &headers);
};
bool wxIEHtmlWin::LoadString(const wxString& html)
{
char *data = NULL;
size_t len = html.length();
#ifdef UNICODE
len *= 2;
#endif
data = (char *) malloc(len);
memcpy(data, html.c_str(), len);
return LoadStream(new wxOwnedMemInputStream(data, len));
};
bool wxIEHtmlWin::LoadStream(IStreamAdaptorBase *pstrm)
{
// need to prepend this as poxy MSHTML will not recognise a HTML comment
// as starting a html document and treats it as plain text
// Does nayone know how to force it to html mode ?
pstrm->prepend = "<html>";
// strip leading whitespace as it can confuse MSHTML
wxAutoOleInterface<IStream> strm(pstrm);
// Document Interface
IDispatch *pDisp = NULL;
HRESULT hret = m_webBrowser->get_Document(&pDisp);
if (! pDisp)
return false;
wxAutoOleInterface<IDispatch> disp(pDisp);
// get IPersistStreamInit
wxAutoOleInterface<IPersistStreamInit>
pPersistStreamInit(IID_IPersistStreamInit, disp);
if (pPersistStreamInit.Ok())
{
HRESULT hr = pPersistStreamInit->InitNew();
if (SUCCEEDED(hr))
hr = pPersistStreamInit->Load(strm);
return SUCCEEDED(hr);
}
else
return false;
};
bool wxIEHtmlWin::LoadStream(istream *is)
{
// wrap reference around stream
IStreamAdaptor *pstrm = new IStreamAdaptor(is);
pstrm->AddRef();
return LoadStream(pstrm);
};
bool wxIEHtmlWin::LoadStream(wxInputStream *is)
{
// wrap reference around stream
IwxStreamAdaptor *pstrm = new IwxStreamAdaptor(is);
pstrm->AddRef();
return LoadStream(pstrm);
};
bool wxIEHtmlWin::GoBack()
{
HRESULT hret = 0;
hret = m_webBrowser->GoBack();
return hret == S_OK;
}
bool wxIEHtmlWin::GoForward()
{
HRESULT hret = 0;
hret = m_webBrowser->GoForward();
return hret == S_OK;
}
bool wxIEHtmlWin::GoHome()
{
try
{
CallMethod("GoHome");
return true;
}
catch(exception&)
{
return false;
};
}
bool wxIEHtmlWin::GoSearch()
{
HRESULT hret = 0;
hret = m_webBrowser->GoSearch();
return hret == S_OK;
}
bool wxIEHtmlWin::Refresh(wxIEHtmlRefreshLevel level)
{
VARIANTARG levelArg;
HRESULT hret = 0;
levelArg.vt = VT_I2;
levelArg.iVal = level;
hret = m_webBrowser->Refresh2(&levelArg);
return hret == S_OK;
}
bool wxIEHtmlWin::Stop()
{
HRESULT hret = 0;
hret = m_webBrowser->Stop();
return hret == S_OK;
}
///////////////////////////////////////////////////////////////////////////////
static wxAutoOleInterface<IHTMLSelectionObject> GetSelObject(IOleObject *oleObject)
{
// Query for IWebBrowser interface
wxAutoOleInterface<IWebBrowser2> wb(IID_IWebBrowser2, oleObject);
if (! wb.Ok())
return wxAutoOleInterface<IHTMLSelectionObject>();
IDispatch *iDisp = NULL;
HRESULT hr = wb->get_Document(&iDisp);
if (hr != S_OK)
return wxAutoOleInterface<IHTMLSelectionObject>();
// Query for Document Interface
wxAutoOleInterface<IHTMLDocument2> hd(IID_IHTMLDocument2, iDisp);
iDisp->Release();
if (! hd.Ok())
return wxAutoOleInterface<IHTMLSelectionObject>();
IHTMLSelectionObject *_so = NULL;
hr = hd->get_selection(&_so);
// take ownership of selection object
wxAutoOleInterface<IHTMLSelectionObject> so(_so);
return so;
};
wxAutoOleInterface<IHTMLTxtRange> wxieGetSelRange(IOleObject *oleObject)
{
wxAutoOleInterface<IHTMLTxtRange> tr;
wxAutoOleInterface<IHTMLSelectionObject> so(GetSelObject(oleObject));
if (! so)
return tr;
IDispatch *iDisp = NULL;
HRESULT hr = so->createRange(&iDisp);
if (hr != S_OK)
return tr;
// Query for IHTMLTxtRange interface
tr.QueryInterface(IID_IHTMLTxtRange, iDisp);
iDisp->Release();
return tr;
};
wxString wxIEHtmlWin::GetStringSelection(bool asHTML)
{
wxAutoOleInterface<IHTMLTxtRange> tr(wxieGetSelRange(m_oleObject));
if (! tr)
return wxEmptyString;
BSTR text = NULL;
HRESULT hr = E_FAIL;
if (asHTML)
hr = tr->get_htmlText(&text);
else
hr = tr->get_text(&text);
if (hr != S_OK)
return wxEmptyString;
wxString s = text;
SysFreeString(text);
return s;
};
wxString wxIEHtmlWin::GetText(bool asHTML)
{
if (! m_webBrowser.Ok())
return wxEmptyString;
// get document dispatch interface
IDispatch *iDisp = NULL;
HRESULT hr = m_webBrowser->get_Document(&iDisp);
if (hr != S_OK)
return wxEmptyString;
// Query for Document Interface
wxAutoOleInterface<IHTMLDocument2> hd(IID_IHTMLDocument2, iDisp);
iDisp->Release();
if (! hd.Ok())
return wxEmptyString;
// get body element
IHTMLElement *_body = NULL;
hd->get_body(&_body);
if (! _body)
return wxEmptyString;
wxAutoOleInterface<IHTMLElement> body(_body);
// get inner text
BSTR text = NULL;
hr = E_FAIL;
if (asHTML)
hr = body->get_innerHTML(&text);
else
hr = body->get_innerText(&text);
if (hr != S_OK)
return wxEmptyString;
wxString s = text;
SysFreeString(text);
return s;
};

View File

@@ -0,0 +1,120 @@
/*
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
*/
/*! \file iehtmlwin.h
\brief implements wxIEHtmlWin window class
*/
#ifndef _IEHTMLWIN_H_
#define _IEHTMLWIN_H_
#pragma warning( disable : 4101 4786)
#pragma warning( disable : 4786)
#include <wx/setup.h>
#include <wx/wx.h>
#include <exdisp.h>
#include <iostream>
using namespace std;
#include "wxactivex.h"
enum wxIEHtmlRefreshLevel
{
wxIEHTML_REFRESH_NORMAL = 0,
wxIEHTML_REFRESH_IFEXPIRED = 1,
wxIEHTML_REFRESH_CONTINUE = 2,
wxIEHTML_REFRESH_COMPLETELY = 3
};
class IStreamAdaptorBase;
class wxIEHtmlWin : public wxActiveX
{
public:
wxIEHtmlWin(wxWindow * parent, wxWindowID id = -1,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxPanelNameStr);
virtual ~wxIEHtmlWin();
void LoadUrl(const wxString& url);
bool LoadString(const wxString& html);
bool LoadStream(istream *strm);
bool LoadStream(wxInputStream *is);
void SetCharset(const wxString& charset);
void SetEditMode(bool seton);
bool GetEditMode();
wxString GetStringSelection(bool asHTML = false);
wxString GetText(bool asHTML = false);
bool GoBack();
bool GoForward();
bool GoHome();
bool GoSearch();
bool Refresh(wxIEHtmlRefreshLevel level);
bool Stop();
DECLARE_EVENT_TABLE();
protected:
void SetupBrowser();
bool LoadStream(IStreamAdaptorBase *pstrm);
wxAutoOleInterface<IWebBrowser2> m_webBrowser;
};
#endif /* _IEHTMLWIN_H_ */

View File

@@ -0,0 +1,6 @@
The contents of this dir are from the 9-Jan-2004 version of wxie.zip
downloaded from:
http://members.optusnet.com.au/~blackpaw1/wxactivex.html

View File

@@ -0,0 +1,205 @@
# Doxyfile 1.3-rc2
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = wxActiveX
PROJECT_NUMBER =
OUTPUT_DIRECTORY =
OUTPUT_LANGUAGE = English
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = YES
SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = YES
INHERIT_DOCS = NO
INLINE_INFO = YES
SORT_MEMBER_DOCS = NO
DISTRIBUTE_GROUP_DOC = YES
TAB_SIZE = 8
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ALIASES =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
SHOW_USED_FILES = YES
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_FORMAT = "$file($line): $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = .\wxactivex.h .\iehtmlwin.h
FILE_PATTERNS = *.cpp \
*.c \
*.h \
*.cxx \
*.idl
RECURSIVE = NO
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 4
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = doxydoc
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = no
CHM_FILE = wxactivex.chm
HHC_LOCATION = hhc.exe
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = YES
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT = rtf
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
XML_SCHEMA =
XML_DTD =
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
CGI_NAME = search.cgi
CGI_URL =
DOC_URL =
DOC_ABSPATH =
BIN_ABSPATH = /usr/local/bin/
EXT_DOC_PATHS =

View File

@@ -0,0 +1,22 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Annotated Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX Data Structures</h1>Here are the data structures with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="structNS__wxActiveX_1_1less__wxStringI.html">NS_wxActiveX::less_wxStringI</a></td><td class="indexvalue">STL utilty class</td></tr>
<tr><td class="indexkey"><a class="el" href="classwxActiveX.html">wxActiveX</a></td><td class="indexvalue">Main class for embedding a ActiveX control</td></tr>
<tr><td class="indexkey"><a class="el" href="classwxActiveX_1_1FuncX.html">wxActiveX::FuncX</a></td><td class="indexvalue">Type &amp; Parameter info for Events and Methods</td></tr>
<tr><td class="indexkey"><a class="el" href="classwxActiveX_1_1ParamX.html">wxActiveX::ParamX</a></td><td class="indexvalue">General parameter and return type infoformation for Events, Properties and Methods</td></tr>
<tr><td class="indexkey"><a class="el" href="classwxActiveX_1_1PropX.html">wxActiveX::PropX</a></td><td class="indexvalue">Type info for properties</td></tr>
<tr><td class="indexkey"><a class="el" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt; I &gt;</a></td><td class="indexvalue">Template class for smart interface handling</td></tr>
</table>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,17 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Alphabetical index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX Data Structure Index</h1><table align=center width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;L&nbsp;&nbsp;</div></td></tr></table>
</td><td><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;W&nbsp;&nbsp;</div></td></tr></table>
</td><td><a class="el" href="classwxActiveX_1_1FuncX.html">wxActiveX::FuncX</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classwxActiveX_1_1PropX.html">wxActiveX::PropX</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structNS__wxActiveX_1_1less__wxStringI.html">less_wxStringI</a> (<a class="el" href="namespaceNS__wxActiveX.html">NS_wxActiveX</a>)&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classwxActiveX.html">wxActiveX</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classwxActiveX_1_1ParamX.html">wxActiveX::ParamX</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="classwxAutoOleInterface.html">wxAutoOleInterface</a>&nbsp;&nbsp;&nbsp;</td></tr></table><hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,474 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>wxActiveX class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX Class Reference</h1><code>#include &lt;<a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>&gt;</code>
<p>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Main class for embedding a ActiveX control.
<p>
Use by itself or derive from it <dl compact><dt><b>Note:</b></dt><dd>The utility program (wxie) can generate a list of events, methods &amp; properties for a control. First display the control (File|Display), then get the type info (ActiveX|Get Type Info) - these are copied to the clipboard. Eventually this will be expanded to autogenerate wxWindows source files for a control with all methods etc encapsulated. </dd></dl>
<dl compact><dt><b>Usage: </b></dt><dd>construct using a ProgId or class id <div class="fragment"><pre> <span class="keyword">new</span> <a class="code" href="classwxActiveX.html#a0">wxActiveX</a>(parent, CLSID_WebBrowser, id, pos, size, style, name)
</pre></div><div class="fragment"><pre> <span class="keyword">new</span> <a class="code" href="classwxActiveX.html#a0">wxActiveX</a>(parent, <span class="stringliteral">"ShockwaveFlash.ShockwaveFlash"</span>, id, pos, size, style, name)
</pre></div></dd></dl>
<dl compact><dt><b>Properties</b></dt><dd>Properties can be set using <code><a class="el" href="classwxActiveX.html#a11">SetProp()</a></code> and set/retrieved using <code><a class="el" href="classwxActiveX.html#a13">Prop()</a></code> <div class="fragment"><pre> <a class="code" href="classwxActiveX.html#a11">SetProp</a>(name, wxVariant(x))
</pre></div>or <div class="fragment"><pre> wxString <a class="code" href="classwxActiveX.html#a13">Prop</a>(<span class="stringliteral">"&lt;name&gt;"</span>) = x
</pre></div><div class="fragment"><pre> wxString result = <a class="code" href="classwxActiveX.html#a13">Prop</a>(<span class="stringliteral">"&lt;name&gt;"</span>)
</pre></div><div class="fragment"><pre> flash_ctl.Prop(<span class="stringliteral">"movie"</span>) = <span class="stringliteral">"file:///movies/test.swf"</span>;
</pre></div><div class="fragment"><pre> flash_ctl.Prop(<span class="stringliteral">"Playing"</span>) = <span class="keyword">false</span>;
</pre></div><div class="fragment"><pre> wxString current_movie = flash_ctl.Prop(<span class="stringliteral">"movie"</span>);
</pre></div></dd></dl>
<dl compact><dt><b>Methods</b></dt><dd>Methods are invoked with <code><a class="el" href="classwxActiveX.html#a26">CallMethod()</a></code> <div class="fragment"><pre> wxVariant result = <a class="code" href="classwxActiveX.html#a26">CallMethod</a>(<span class="stringliteral">"&lt;name&gt;"</span>, args, nargs = -1)
</pre></div><div class="fragment"><pre> wxVariant args[] = {0L, <span class="stringliteral">"file:///e:/dev/wxie/bug-zap.swf"</span>};
wxVariant result = X-&gt;CallMethod(<span class="stringliteral">"LoadMovie"</span>, args);
</pre></div></dd></dl>
<dl compact><dt><b>events</b></dt><dd>respond to events with the <code><a class="el" href="wxactivex_8h.html#a10">EVT_ACTIVEX(controlId, eventName, handler)</a></code> &amp; <code><a class="el" href="wxactivex_8h.html#a11">EVT_ACTIVEX_DISPID(controlId, eventDispId, handler)</a></code> macros <div class="fragment"><pre>
BEGIN_EVENT_TABLE(wxIEFrame, wxFrame)
<a class="code" href="wxactivex_8h.html#a11">EVT_ACTIVEX_DISPID</a>(ID_MSHTML, DISPID_STATUSTEXTCHANGE, OnMSHTMLStatusTextChangeX)
<a class="code" href="wxactivex_8h.html#a10">EVT_ACTIVEX</a>(ID_MSHTML, <span class="stringliteral">"BeforeNavigate2"</span>, OnMSHTMLBeforeNavigate2X)
<a class="code" href="wxactivex_8h.html#a10">EVT_ACTIVEX</a>(ID_MSHTML, <span class="stringliteral">"TitleChange"</span>, OnMSHTMLTitleChangeX)
<a class="code" href="wxactivex_8h.html#a10">EVT_ACTIVEX</a>(ID_MSHTML, <span class="stringliteral">"NewWindow2"</span>, OnMSHTMLNewWindow2X)
<a class="code" href="wxactivex_8h.html#a10">EVT_ACTIVEX</a>(ID_MSHTML, <span class="stringliteral">"ProgressChange"</span>, OnMSHTMLProgressChangeX)
END_EVENT_TABLE()
</pre></div></dd></dl>
<p>
<p>
Definition at line <a class="el" href="wxactivex_8h-source.html#l00329">329</a> of file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>.<table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="a0" doxytag="wxActiveX::wxActiveX"></a>
&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a0">wxActiveX</a> (wxWindow *parent, REFCLSID clsid, wxWindowID id=-1, const wxPoint &amp;pos=wxDefaultPosition, const wxSize &amp;size=wxDefaultSize, long style=0, const wxString &amp;name=wxPanelNameStr)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Create using clsid.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a1" doxytag="wxActiveX::wxActiveX"></a>
&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a1">wxActiveX</a> (wxWindow *parent, wxString progId, wxWindowID id=-1, const wxPoint &amp;pos=wxDefaultPosition, const wxSize &amp;size=wxDefaultSize, long style=0, const wxString &amp;name=wxPanelNameStr)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>create using progid.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a3" doxytag="wxActiveX::GetEventCount"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a3">GetEventCount</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Number of events defined for this control.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>const <a class="el" href="classwxActiveX_1_1FuncX.html">FuncX</a> &amp;&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a4">GetEventDesc</a> (int idx) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns event description by index.</em> <a href="#a4"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a5" doxytag="wxActiveX::GetPropCount"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a5">GetPropCount</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Number of properties defined for this control.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>const <a class="el" href="classwxActiveX_1_1PropX.html">PropX</a> &amp;&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a6">GetPropDesc</a> (int idx) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns property description by index.</em> <a href="#a6"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>const <a class="el" href="classwxActiveX_1_1PropX.html">PropX</a> &amp;&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a7">GetPropDesc</a> (wxString name) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns property description by name.</em> <a href="#a7"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a8" doxytag="wxActiveX::GetMethodCount"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a8">GetMethodCount</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Number of methods defined for this control.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>const <a class="el" href="classwxActiveX_1_1FuncX.html">FuncX</a> &amp;&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a9">GetMethodDesc</a> (int idx) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns method description by name.</em> <a href="#a9"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>const <a class="el" href="classwxActiveX_1_1FuncX.html">FuncX</a> &amp;&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a10">GetMethodDesc</a> (wxString name) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns method description by name.</em> <a href="#a10"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a11" doxytag="wxActiveX::SetProp"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a11">SetProp</a> (MEMBERID name, VARIANTARG &amp;value)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Set property VARIANTARG value by MEMBERID.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a12" doxytag="wxActiveX::SetProp"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a12">SetProp</a> (const wxString &amp;name, const wxVariant &amp;value)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Set property using wxVariant by name.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>wxPropertySetter&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a13">Prop</a> (wxString name)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Generic Get/Set Property by name. Automatically handles most types.</em> <a href="#a13"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>wxVariant&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#a26">CallMethod</a> (wxString name, wxVariant args[], int nargs=-1)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Call a method of the ActiveX control. Automatically handles most types.</em> <a href="#a26"></a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Related Functions</h2></td></tr>
<tr><td colspan=2>(Note that these are not member functions.)<br><br></td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#k0">MSWVariantToVariant</a> (VARIANTARG &amp;va, wxVariant &amp;vx)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Convert MSW VARIANTARG to wxVariant. Handles basic types, need to add:<ul>
<li>VT_ARRAY | VT_*</li><li>better support for VT_UNKNOWN (currently treated as void *)</li><li>better support for VT_DISPATCH (currently treated as void *).</li></ul>
</em> <a href="#k0"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html#k1">VariantToMSWVariant</a> (const wxVariant &amp;vx, VARIANTARG &amp;va)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Convert wxVariant to MSW VARIANTARG. Handles basic types, need to add:<ul>
<li>VT_ARRAY | VT_*</li><li>better support for VT_UNKNOWN (currently treated as void *)</li><li>better support for VT_DISPATCH (currently treated as void *).</li></ul>
</em> <a href="#k1"></a><em></em></font><br><br></td></tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a name="a4" doxytag="wxActiveX::GetEventDesc"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> const <a class="el" href="classwxActiveX_1_1FuncX.html">FuncX</a>&amp; wxActiveX::GetEventDesc </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">int&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; <em>idx</em> </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap> const</td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
returns event description by index.
<p>
throws exception for invalid index </td>
</tr>
</table>
<a name="a6" doxytag="wxActiveX::GetPropDesc"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> const <a class="el" href="classwxActiveX_1_1PropX.html">PropX</a>&amp; wxActiveX::GetPropDesc </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">int&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; <em>idx</em> </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap> const</td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
returns property description by index.
<p>
throws exception for invalid index </td>
</tr>
</table>
<a name="a7" doxytag="wxActiveX::GetPropDesc"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> const <a class="el" href="classwxActiveX_1_1PropX.html">PropX</a>&amp; wxActiveX::GetPropDesc </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">wxString&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; <em>name</em> </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap> const</td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
returns property description by name.
<p>
throws exception for invalid name </td>
</tr>
</table>
<a name="a9" doxytag="wxActiveX::GetMethodDesc"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> const <a class="el" href="classwxActiveX_1_1FuncX.html">FuncX</a>&amp; wxActiveX::GetMethodDesc </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">int&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; <em>idx</em> </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap> const</td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
returns method description by name.
<p>
throws exception for invalid index </td>
</tr>
</table>
<a name="a10" doxytag="wxActiveX::GetMethodDesc"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> const <a class="el" href="classwxActiveX_1_1FuncX.html">FuncX</a>&amp; wxActiveX::GetMethodDesc </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">wxString&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; <em>name</em> </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap> const</td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
returns method description by name.
<p>
throws exception for invalid name </td>
</tr>
</table>
<a name="a13" doxytag="wxActiveX::Prop"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> wxPropertySetter wxActiveX::Prop </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">wxString&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; <em>name</em> </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap><code> [inline]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Generic Get/Set Property by name. Automatically handles most types.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign=top><em>name</em>&nbsp;</td><td>Property name to read/set </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>wxPropertySetter, which has overloads for setting/getting the property </dd></dl>
<p>
<dl compact><dt><b>Usage:</b></dt><dd><ul>
<li>Prop("&lt;name&gt;") = &lt;value&gt;</li><li>var = Prop("&lt;name&gt;")</li><li>e.g:<ul>
<li><div class="fragment"><pre> flash_ctl.Prop(<span class="stringliteral">"movie"</span>) = <span class="stringliteral">"file:///movies/test.swf"</span>;
</pre></div></li><li><div class="fragment"><pre> flash_ctl.Prop(<span class="stringliteral">"Playing"</span>) = <span class="keyword">false</span>;
</pre></div></li><li><div class="fragment"><pre> wxString current_movie = flash_ctl.Prop(<span class="stringliteral">"movie"</span>);
</pre></div></li></ul>
</li></ul>
</dd></dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign=top><em>raises</em>&nbsp;</td><td>exception if &lt;name&gt; is invalid </td></tr>
</table>
</dl>
<dl compact><dt><b>Note:</b></dt><dd>Have to add a few more type conversions yet ... </dd></dl>
<p>
Definition at line <a class="el" href="wxactivex_8h-source.html#l00458">458</a> of file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>. </td>
</tr>
</table>
<a name="a26" doxytag="wxActiveX::CallMethod"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> wxVariant wxActiveX::CallMethod </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">wxString&nbsp;</td>
<td class="mdname" nowrap>&nbsp; <em>name</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>wxVariant&nbsp;</td>
<td class="mdname" nowrap>&nbsp; <em>args</em>[], </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>int&nbsp;</td>
<td class="mdname" nowrap>&nbsp; <em>nargs</em> = -1</td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Call a method of the ActiveX control. Automatically handles most types.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign=top><em>name</em>&nbsp;</td><td>name of method to call </td></tr>
<tr><td valign=top><em>args</em>&nbsp;</td><td>array of wxVariant's, defaults to NULL (no args) </td></tr>
<tr><td valign=top><em>nargs</em>&nbsp;</td><td>number of arguments passed via args. Defaults to actual number of args for the method </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>wxVariant </dd></dl>
<p>
<dl compact><dt><b>Usage:</b></dt><dd><ul>
<li>result = CallMethod("&lt;name&gt;", args, nargs)</li><li>e.g.</li><li><div class="fragment"><pre>
wxVariant args[] = {0L, <span class="stringliteral">"file:///e:/dev/wxie/bug-zap.swf"</span>};
wxVariant result = X-&gt;CallMethod(<span class="stringliteral">"LoadMovie"</span>, args);
</pre></div></li></ul>
</dd></dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign=top><em>raises</em>&nbsp;</td><td>exception if &lt;name&gt; is invalid </td></tr>
</table>
</dl>
<dl compact><dt><b>Note:</b></dt><dd>Since wxVariant has built in type conversion, most the std types can be passed easily </dd></dl>
</td>
</tr>
</table>
<hr><h2>Friends And Related Function Documentation</h2>
<a name="k0" doxytag="wxActiveX::MSWVariantToVariant"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> bool MSWVariantToVariant </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">VARIANTARG &amp;&nbsp;</td>
<td class="mdname" nowrap>&nbsp; <em>va</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>wxVariant &amp;&nbsp;</td>
<td class="mdname" nowrap>&nbsp; <em>vx</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"><code> [related]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Convert MSW VARIANTARG to wxVariant. Handles basic types, need to add:<ul>
<li>VT_ARRAY | VT_*</li><li>better support for VT_UNKNOWN (currently treated as void *)</li><li>better support for VT_DISPATCH (currently treated as void *).</li></ul>
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign=top><em>va</em>&nbsp;</td><td>VARAIANTARG to convert from </td></tr>
<tr><td valign=top><em>vx</em>&nbsp;</td><td>Destination wxVariant </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>success/failure (true/false) </dd></dl>
</td>
</tr>
</table>
<a name="k1" doxytag="wxActiveX::VariantToMSWVariant"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> bool VariantToMSWVariant </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const wxVariant &amp;&nbsp;</td>
<td class="mdname" nowrap>&nbsp; <em>vx</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>VARIANTARG &amp;&nbsp;</td>
<td class="mdname" nowrap>&nbsp; <em>va</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"><code> [related]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Convert wxVariant to MSW VARIANTARG. Handles basic types, need to add:<ul>
<li>VT_ARRAY | VT_*</li><li>better support for VT_UNKNOWN (currently treated as void *)</li><li>better support for VT_DISPATCH (currently treated as void *).</li></ul>
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign=top><em>vx</em>&nbsp;</td><td>wxVariant to convert from </td></tr>
<tr><td valign=top><em>va</em>&nbsp;</td><td>Destination VARIANTARG </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>success/failure (true/false) </dd></dl>
</td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="wxactivex_8h-source.html">wxactivex.h</a></ul>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,28 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>wxActiveX::FuncX class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX::FuncX Class Reference</h1><code>#include &lt;<a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>&gt;</code>
<p>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Type &amp; Parameter info for Events and Methods.
<p>
refer to FUNCDESC in MSDN
<p>
<p>
Definition at line <a class="el" href="wxactivex_8h-source.html#l00350">350</a> of file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>.<table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="wxactivex_8h-source.html">wxactivex.h</a></ul>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,28 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>wxActiveX::ParamX class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX::ParamX Class Reference</h1><code>#include &lt;<a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>&gt;</code>
<p>
<hr><a name="_details"></a><h2>Detailed Description</h2>
General parameter and return type infoformation for Events, Properties and Methods.
<p>
refer to ELEMDESC, IDLDESC in MSDN
<p>
<p>
Definition at line <a class="el" href="wxactivex_8h-source.html#l00333">333</a> of file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>.<table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="wxactivex_8h-source.html">wxactivex.h</a></ul>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,26 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>wxActiveX::PropX class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX::PropX Class Reference</h1><code>#include &lt;<a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>&gt;</code>
<p>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Type info for properties.
<p>
<p>
Definition at line <a class="el" href="wxactivex_8h-source.html#l00362">362</a> of file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>.<table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="wxactivex_8h-source.html">wxactivex.h</a></ul>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,79 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title> TemplatewxAutoOleInterface&lt; I &gt; class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxAutoOleInterface&lt; I &gt; Class Template Reference</h1><code>#include &lt;<a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>&gt;</code>
<p>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;class I&gt;<br>
class wxAutoOleInterface&lt; I &gt;</h3>
Template class for smart interface handling.
<p>
<ul>
<li>Automatically dereferences ole interfaces</li><li>Smart Copy Semantics</li><li>Can Create Interfaces</li><li>Can query for other interfaces </li></ul>
<p>
<p>
Definition at line <a class="el" href="wxactivex_8h-source.html#l00045">45</a> of file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>.<table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="a0" doxytag="wxAutoOleInterface::wxAutoOleInterface"></a>
&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a0">wxAutoOleInterface</a> (I *pInterface=NULL)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>takes ownership of an existing interface Assumed to already have a AddRef() applied</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a1" doxytag="wxAutoOleInterface::wxAutoOleInterface"></a>
&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a1">wxAutoOleInterface</a> (REFIID riid, IUnknown *pUnk)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>queries for an interface</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a2" doxytag="wxAutoOleInterface::wxAutoOleInterface"></a>
&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a2">wxAutoOleInterface</a> (REFIID riid, IDispatch *pDispatch)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>queries for an interface</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a3" doxytag="wxAutoOleInterface::wxAutoOleInterface"></a>
&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a3">wxAutoOleInterface</a> (REFCLSID clsid, REFIID riid)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Creates an Interface.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a4" doxytag="wxAutoOleInterface::wxAutoOleInterface"></a>
&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a4">wxAutoOleInterface</a> (const wxAutoOleInterface&lt; I &gt; &amp;ti)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>copy constructor</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a5" doxytag="wxAutoOleInterface::operator="></a>
wxAutoOleInterface&lt; I &gt; &amp;&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a5">operator=</a> (const wxAutoOleInterface&lt; I &gt; &amp;ti)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>assignment operator</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a6" doxytag="wxAutoOleInterface::operator="></a>
wxAutoOleInterface&lt; I &gt; &amp;&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a6">operator=</a> (I *&amp;ti)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>takes ownership of an existing interface Assumed to already have a AddRef() applied</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a7" doxytag="wxAutoOleInterface::~wxAutoOleInterface"></a>
&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a7">~wxAutoOleInterface</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>invokes <a class="el" href="classwxAutoOleInterface.html#a8">Free()</a></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a8" doxytag="wxAutoOleInterface::Free"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a8">Free</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Releases interface (i.e decrements refCount).</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a9" doxytag="wxAutoOleInterface::QueryInterface"></a>
HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a9">QueryInterface</a> (REFIID riid, IUnknown *pUnk)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>queries for an interface</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a10" doxytag="wxAutoOleInterface::CreateInstance"></a>
HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a10">CreateInstance</a> (REFCLSID clsid, REFIID riid)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Create a Interface instance.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a11" doxytag="wxAutoOleInterface::operator I *"></a>
&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a11">operator I *</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns the interface pointer</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a12" doxytag="wxAutoOleInterface::operator->"></a>
I *&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a12">operator-&gt;</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns the dereferenced interface pointer</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a13" doxytag="wxAutoOleInterface::GetRef"></a>
I **&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a13">GetRef</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns a pointer to the interface pointer</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a14" doxytag="wxAutoOleInterface::Ok"></a>
bool&nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html#a14">Ok</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns true if we have a valid interface pointer</em></font><br><br></td></tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="wxactivex_8h-source.html">wxactivex.h</a></ul>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,49 @@
H1 { text-align: center; }
CAPTION { font-weight: bold }
A.qindex {}
A.qindexRef {}
A.el { text-decoration: none; font-weight: bold }
A.elRef { font-weight: bold }
A.code { text-decoration: none; font-weight: normal; color: #4444ee }
A.codeRef { font-weight: normal; color: #4444ee }
A:hover { text-decoration: none; background-color: #f2f2ff }
DL.el { margin-left: -1cm }
DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
TD.md { background-color: #f2f2ff; font-weight: bold; }
TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; }
TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; }
DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
BODY { background: white; color: black }
TD.indexkey {
background-color: #eeeeff;
font-weight: bold;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px
}
TD.indexvalue {
background-color: #eeeeff;
font-style: italic;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px
}
span.keyword { color: #008000 }
span.keywordtype { color: #604020 }
span.keywordflow { color: #e08000 }
span.comment { color: #800000 }
span.preprocessor { color: #806020 }
span.stringliteral { color: #002080 }
span.charliteral { color: #008080 }

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,18 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>File Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX File List</h1>Here is a list of all documented files with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="iehtmlwin_8h.html">iehtmlwin.h</a> <a href="iehtmlwin_8h-source.html">[code]</a></td><td class="indexvalue">Implements wxIEHtmlWin window class</td></tr>
<tr><td class="indexkey"><a class="el" href="wxactivex_8h.html">wxactivex.h</a> <a href="wxactivex_8h-source.html">[code]</a></td><td class="indexvalue">Implements <a class="el" href="classwxActiveX.html">wxActiveX</a> window class and OLE tools</td></tr>
</table>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,38 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Compound Member Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX Data Fields</h1>Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:<ul>
<li>CallMethod()
: <a class="el" href="classwxActiveX.html#a26">wxActiveX</a><li>CreateInstance()
: <a class="el" href="classwxAutoOleInterface.html#a10">wxAutoOleInterface&lt; I &gt;</a><li>Free()
: <a class="el" href="classwxAutoOleInterface.html#a8">wxAutoOleInterface&lt; I &gt;</a><li>GetEventCount()
: <a class="el" href="classwxActiveX.html#a3">wxActiveX</a><li>GetEventDesc()
: <a class="el" href="classwxActiveX.html#a4">wxActiveX</a><li>GetMethodCount()
: <a class="el" href="classwxActiveX.html#a8">wxActiveX</a><li>GetMethodDesc()
: <a class="el" href="classwxActiveX.html#a10">wxActiveX</a><li>GetPropCount()
: <a class="el" href="classwxActiveX.html#a5">wxActiveX</a><li>GetPropDesc()
: <a class="el" href="classwxActiveX.html#a7">wxActiveX</a><li>GetRef()
: <a class="el" href="classwxAutoOleInterface.html#a13">wxAutoOleInterface&lt; I &gt;</a><li>MSWVariantToVariant()
: <a class="el" href="classwxActiveX.html#k0">wxActiveX</a><li>Ok()
: <a class="el" href="classwxAutoOleInterface.html#a14">wxAutoOleInterface&lt; I &gt;</a><li>operator I *()
: <a class="el" href="classwxAutoOleInterface.html#a11">wxAutoOleInterface&lt; I &gt;</a><li>operator-&gt;()
: <a class="el" href="classwxAutoOleInterface.html#a12">wxAutoOleInterface&lt; I &gt;</a><li>operator=()
: <a class="el" href="classwxAutoOleInterface.html#a6">wxAutoOleInterface&lt; I &gt;</a><li>Prop()
: <a class="el" href="classwxActiveX.html#a13">wxActiveX</a><li>QueryInterface()
: <a class="el" href="classwxAutoOleInterface.html#a9">wxAutoOleInterface&lt; I &gt;</a><li>SetProp()
: <a class="el" href="classwxActiveX.html#a12">wxActiveX</a><li>VariantToMSWVariant()
: <a class="el" href="classwxActiveX.html#k1">wxActiveX</a><li>wxActiveX()
: <a class="el" href="classwxActiveX.html#a1">wxActiveX</a><li>wxAutoOleInterface()
: <a class="el" href="classwxAutoOleInterface.html#a4">wxAutoOleInterface&lt; I &gt;</a><li>~wxAutoOleInterface()
: <a class="el" href="classwxAutoOleInterface.html#a7">wxAutoOleInterface&lt; I &gt;</a></ul>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,20 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>File Member Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX Globals</h1>Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:<ul>
<li>EVT_ACTIVEX
: <a class="el" href="wxactivex_8h.html#a10">wxactivex.h</a><li>EVT_ACTIVEX_DISPID
: <a class="el" href="wxactivex_8h.html#a11">wxactivex.h</a><li>GetIIDName()
: <a class="el" href="wxactivex_8h.html#a14">wxactivex.h</a><li>OLEHResultToString()
: <a class="el" href="wxactivex_8h.html#a13">wxactivex.h</a></ul>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,22 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Hierarchical Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX Class Hierarchy</h1>This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
<li><a class="el" href="structNS__wxActiveX_1_1less__wxStringI.html">NS_wxActiveX::less_wxStringI</a>
<li><a class="el" href="classwxActiveX.html">wxActiveX</a>
<li><a class="el" href="classwxActiveX_1_1FuncX.html">wxActiveX::FuncX</a>
<li><a class="el" href="classwxActiveX_1_1ParamX.html">wxActiveX::ParamX</a>
<li><a class="el" href="classwxActiveX_1_1PropX.html">wxActiveX::PropX</a>
<li><a class="el" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt; I &gt;</a>
</ul>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,78 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>iehtmlwin.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>iehtmlwin.h</h1><a href="iehtmlwin_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001
00004 <span class="preprocessor">#ifndef _IEHTMLWIN_H_</span>
00005 <span class="preprocessor"></span><span class="preprocessor">#define _IEHTMLWIN_H_</span>
00006 <span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4101 4786)</span>
00007 <span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4786)</span>
00008 <span class="preprocessor"></span>
00009
00010 <span class="preprocessor">#include &lt;wx/setup.h&gt;</span>
00011 <span class="preprocessor">#include &lt;wx/wx.h&gt;</span>
00012 <span class="preprocessor">#include &lt;exdisp.h&gt;</span>
00013 <span class="preprocessor">#include &lt;iostream&gt;</span>
00014 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
00015
00016 <span class="preprocessor">#include "<a class="code" href="wxactivex_8h.html">wxactivex.h</a>"</span>
00017
00018
00019 <span class="keyword">enum</span> wxIEHtmlRefreshLevel
00020 {
00021 wxIEHTML_REFRESH_NORMAL = 0,
00022 wxIEHTML_REFRESH_IFEXPIRED = 1,
00023 wxIEHTML_REFRESH_CONTINUE = 2,
00024 wxIEHTML_REFRESH_COMPLETELY = 3
00025 };
00026
00027 <span class="keyword">class </span>IStreamAdaptorBase;
00028
00029 <span class="keyword">class </span>wxIEHtmlWin : <span class="keyword">public</span> <a class="code" href="classwxActiveX.html">wxActiveX</a>
00030 {
00031 <span class="keyword">public</span>:
00032 wxIEHtmlWin(wxWindow * parent, wxWindowID id = -1,
00033 <span class="keyword">const</span> wxPoint&amp; pos = wxDefaultPosition,
00034 <span class="keyword">const</span> wxSize&amp; size = wxDefaultSize,
00035 <span class="keywordtype">long</span> style = 0,
00036 <span class="keyword">const</span> wxString&amp; name = wxPanelNameStr);
00037 <span class="keyword">virtual</span> ~wxIEHtmlWin();
00038
00039 <span class="keywordtype">void</span> LoadUrl(<span class="keyword">const</span> wxString&amp;);
00040 <span class="keywordtype">bool</span> LoadString(wxString html);
00041 <span class="keywordtype">bool</span> LoadStream(istream *strm);
00042 <span class="keywordtype">bool</span> LoadStream(wxInputStream *is);
00043
00044 <span class="keywordtype">void</span> SetCharset(wxString charset);
00045 <span class="keywordtype">void</span> SetEditMode(<span class="keywordtype">bool</span> seton);
00046 <span class="keywordtype">bool</span> GetEditMode();
00047 wxString GetStringSelection(<span class="keywordtype">bool</span> asHTML = <span class="keyword">false</span>);
00048 wxString GetText(<span class="keywordtype">bool</span> asHTML = <span class="keyword">false</span>);
00049
00050 <span class="keywordtype">bool</span> GoBack();
00051 <span class="keywordtype">bool</span> GoForward();
00052 <span class="keywordtype">bool</span> GoHome();
00053 <span class="keywordtype">bool</span> GoSearch();
00054 <span class="keywordtype">bool</span> Refresh(wxIEHtmlRefreshLevel level);
00055 <span class="keywordtype">bool</span> Stop();
00056
00057 DECLARE_EVENT_TABLE();
00058
00059 <span class="keyword">protected</span>:
00060 <span class="keywordtype">void</span> SetupBrowser();
00061 <span class="keywordtype">bool</span> LoadStream(IStreamAdaptorBase *pstrm);
00062
00063 <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;IWebBrowser2&gt;</a> m_webBrowser;
00064 };
00065
00066 <span class="preprocessor">#endif </span><span class="comment">/* _IEHTMLWIN_H_ */</span>
</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,31 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>iehtmlwin.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>iehtmlwin.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
implements wxIEHtmlWin window class
<p>
<p>
Definition in file <a class="el" href="iehtmlwin_8h-source.html">iehtmlwin.h</a>.
<p>
<code>#include &lt;wx/setup.h&gt;</code><br>
<code>#include &lt;wx/wx.h&gt;</code><br>
<code>#include &lt;exdisp.h&gt;</code><br>
<code>#include &lt;iostream&gt;</code><br>
<code>#include "<a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>"</code><br>
<p>
<a href="iehtmlwin_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
</table>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,16 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Main Page</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX Documentation</h1>
<p>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,25 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>NS_wxActiveX Namespace Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>NS_wxActiveX Namespace Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
<a class="el" href="classwxActiveX.html">wxActiveX</a> Namespace for stuff I want to keep out of other tools way.
<p>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
<tr><td nowrap align=right valign=top>struct &nbsp;</td><td valign=bottom><a class="el" href="structNS__wxActiveX_1_1less__wxStringI.html">less_wxStringI</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>STL utilty class.</em> <a href="structNS__wxActiveX_1_1less__wxStringI.html#_details">More...</a><em></em></font><br><br></td></tr>
</table>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,17 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Namespace Index</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxActiveX Namespace List</h1>Here is a list of all documented namespaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="namespaceNS__wxActiveX.html">NS_wxActiveX</a></td><td class="indexvalue">WxActiveX Namespace for stuff I want to keep out of other tools way</td></tr>
</table>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,28 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>NS_wxActiveX::less_wxStringI struct Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>NS_wxActiveX::less_wxStringI Struct Reference</h1><code>#include &lt;<a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>&gt;</code>
<p>
<hr><a name="_details"></a><h2>Detailed Description</h2>
STL utilty class.
<p>
specific to <a class="el" href="classwxActiveX.html">wxActiveX</a>, for creating case insenstive maps etc
<p>
<p>
Definition at line <a class="el" href="wxactivex_8h-source.html#l00029">29</a> of file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>.<table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="wxactivex_8h-source.html">wxactivex.h</a></ul>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,477 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>wxactivex.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxactivex.h</h1><a href="wxactivex_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001
00005 <span class="preprocessor">#ifndef WX_ACTIVE_X</span>
00006 <span class="preprocessor"></span><span class="preprocessor">#define WX_ACTIVE_X</span>
00007 <span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4101 4786)</span>
00008 <span class="preprocessor"></span><span class="preprocessor">#pragma warning( disable : 4786)</span>
00009 <span class="preprocessor"></span>
00010
00011 <span class="preprocessor">#include &lt;wx/setup.h&gt;</span>
00012 <span class="preprocessor">#include &lt;wx/wx.h&gt;</span>
00013 <span class="preprocessor">#include &lt;wx/variant.h&gt;</span>
00014 <span class="preprocessor">#include &lt;wx/datetime.h&gt;</span>
00015 <span class="preprocessor">#include &lt;oleidl.h&gt;</span>
00016 <span class="preprocessor">#include &lt;exdisp.h&gt;</span>
00017 <span class="preprocessor">#include &lt;docobj.h&gt;</span>
00018 <span class="preprocessor">#include &lt;iostream&gt;</span>
00019 <span class="preprocessor">#include &lt;vector&gt;</span>
00020 <span class="preprocessor">#include &lt;map&gt;</span>
00021 <span class="keyword">using</span> <span class="keyword">namespace </span>std;
00022
<a name="l00024"></a><a class="code" href="namespaceNS__wxActiveX.html">00024</a> <span class="keyword">namespace </span>NS_wxActiveX
00025 {
<a name="l00029"></a><a class="code" href="structNS__wxActiveX_1_1less__wxStringI.html">00029</a> <span class="keyword">struct </span><a class="code" href="structNS__wxActiveX_1_1less__wxStringI.html">less_wxStringI</a>
00030 {
00031 <span class="keywordtype">bool</span> operator()(<span class="keyword">const</span> wxString&amp; x, <span class="keyword">const</span> wxString&amp; y)<span class="keyword"> const</span>
00032 <span class="keyword"> </span>{
00033 <span class="keywordflow">return</span> x.CmpNoCase(y) &lt; 0;
00034 };
00035 };
00036 };
00037
00038
<a name="l00045"></a><a class="code" href="classwxAutoOleInterface.html">00045</a> <span class="keyword">template</span> &lt;<span class="keyword">class</span> I&gt; <span class="keyword">class </span><a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface</a>
00046 {
00047 <span class="keyword">protected</span>:
00048 I *m_interface;
00049
00050 <span class="keyword">public</span>:
<a name="l00053"></a><a class="code" href="classwxAutoOleInterface.html#a0">00053</a> <span class="keyword">explicit</span> <a class="code" href="classwxAutoOleInterface.html#a0">wxAutoOleInterface</a>(I *pInterface = NULL) : m_interface(pInterface) {}
00054
<a name="l00056"></a><a class="code" href="classwxAutoOleInterface.html#a1">00056</a> <a class="code" href="classwxAutoOleInterface.html#a0">wxAutoOleInterface</a>(REFIID riid, IUnknown *pUnk) : m_interface(NULL)
00057 {
00058 <a class="code" href="classwxAutoOleInterface.html#a9">QueryInterface</a>(riid, pUnk);
00059 };
<a name="l00061"></a><a class="code" href="classwxAutoOleInterface.html#a2">00061</a> <a class="code" href="classwxAutoOleInterface.html#a0">wxAutoOleInterface</a>(REFIID riid, IDispatch *pDispatch) : m_interface(NULL)
00062 {
00063 <a class="code" href="classwxAutoOleInterface.html#a9">QueryInterface</a>(riid, pDispatch);
00064 };
00065
<a name="l00067"></a><a class="code" href="classwxAutoOleInterface.html#a3">00067</a> <a class="code" href="classwxAutoOleInterface.html#a0">wxAutoOleInterface</a>(REFCLSID clsid, REFIID riid) : m_interface(NULL)
00068 {
00069 <a class="code" href="classwxAutoOleInterface.html#a10">CreateInstance</a>(clsid, riid);
00070 };
00071
<a name="l00073"></a><a class="code" href="classwxAutoOleInterface.html#a4">00073</a> <a class="code" href="classwxAutoOleInterface.html#a0">wxAutoOleInterface</a>(<span class="keyword">const</span> <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;I&gt;</a>&amp; ti) : m_interface(NULL)
00074 {
00075 <a class="code" href="classwxAutoOleInterface.html#a5">operator = </a>(ti);
00076 }
00077
<a name="l00079"></a><a class="code" href="classwxAutoOleInterface.html#a5">00079</a> <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;I&gt;</a>&amp; <a class="code" href="classwxAutoOleInterface.html#a5">operator = </a>(<span class="keyword">const</span> <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;I&gt;</a>&amp; ti)
00080 {
00081 <span class="keywordflow">if</span> (ti.<a class="code" href="classwxAutoOleInterface.html#n0">m_interface</a>)
00082 ti.<a class="code" href="classwxAutoOleInterface.html#n0">m_interface</a>-&gt;AddRef();
00083 <a class="code" href="classwxAutoOleInterface.html#a8">Free</a>();
00084 m_interface = ti.<a class="code" href="classwxAutoOleInterface.html#n0">m_interface</a>;
00085 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00086 }
00087
<a name="l00090"></a><a class="code" href="classwxAutoOleInterface.html#a6">00090</a> <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;I&gt;</a>&amp; <a class="code" href="classwxAutoOleInterface.html#a5">operator = </a>(I *&amp;ti)
00091 {
00092 <a class="code" href="classwxAutoOleInterface.html#a8">Free</a>();
00093 m_interface = ti;
00094 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00095 }
00096
<a name="l00098"></a><a class="code" href="classwxAutoOleInterface.html#a7">00098</a> <a class="code" href="classwxAutoOleInterface.html#a7">~wxAutoOleInterface</a>()
00099 {
00100 <a class="code" href="classwxAutoOleInterface.html#a8">Free</a>();
00101 };
00102
00103
<a name="l00105"></a><a class="code" href="classwxAutoOleInterface.html#a8">00105</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classwxAutoOleInterface.html#a8">Free</a>()
00106 {
00107 <span class="keywordflow">if</span> (m_interface)
00108 m_interface-&gt;Release();
00109 m_interface = NULL;
00110 };
00111
<a name="l00113"></a><a class="code" href="classwxAutoOleInterface.html#a9">00113</a> HRESULT <a class="code" href="classwxAutoOleInterface.html#a9">QueryInterface</a>(REFIID riid, IUnknown *pUnk)
00114 {
00115 <a class="code" href="classwxAutoOleInterface.html#a8">Free</a>();
00116 wxASSERT(pUnk != NULL);
00117 <span class="keywordflow">return</span> pUnk-&gt;QueryInterface(riid, (<span class="keywordtype">void</span> **) &amp;m_interface);
00118 };
00119
<a name="l00121"></a><a class="code" href="classwxAutoOleInterface.html#a10">00121</a> HRESULT <a class="code" href="classwxAutoOleInterface.html#a10">CreateInstance</a>(REFCLSID clsid, REFIID riid)
00122 {
00123 <a class="code" href="classwxAutoOleInterface.html#a8">Free</a>();
00124 <span class="keywordflow">return</span> CoCreateInstance(clsid, NULL, CLSCTX_ALL, riid, (<span class="keywordtype">void</span> **) &amp;m_interface);
00125 };
00126
00127
<a name="l00129"></a><a class="code" href="classwxAutoOleInterface.html#a11">00129</a> <span class="keyword">inline</span> <a class="code" href="classwxAutoOleInterface.html#a11">operator I *</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_interface;}
00130
<a name="l00132"></a><a class="code" href="classwxAutoOleInterface.html#a12">00132</a> <span class="keyword">inline</span> I* <a class="code" href="classwxAutoOleInterface.html#a12">operator -&gt;</a>() {<span class="keywordflow">return</span> m_interface;}
<a name="l00134"></a><a class="code" href="classwxAutoOleInterface.html#a13">00134</a> <span class="keyword">inline</span> I** <a class="code" href="classwxAutoOleInterface.html#a13">GetRef</a>() {<span class="keywordflow">return</span> &amp;m_interface;}
<a name="l00136"></a><a class="code" href="classwxAutoOleInterface.html#a14">00136</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classwxAutoOleInterface.html#a14">Ok</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_interface != NULL;}
00137 };
00138
00139
00142 wxString <a class="code" href="wxactivex_8h.html#a13">OLEHResultToString</a>(HRESULT hr);
00145 wxString <a class="code" href="wxactivex_8h.html#a14">GetIIDName</a>(REFIID riid);
00146
00147 <span class="comment">//#define __WXOLEDEBUG</span>
00148
00149
00150 <span class="preprocessor">#ifdef __WXOLEDEBUG</span>
00151 <span class="preprocessor"></span><span class="preprocessor"> #define WXOLE_TRACE(str) {OutputDebugString(str);OutputDebugString("\r\n");}</span>
00152 <span class="preprocessor"></span><span class="preprocessor"> #define WXOLE_TRACEOUT(stuff)\</span>
00153 <span class="preprocessor"> {\</span>
00154 <span class="preprocessor"> wxString os;\</span>
00155 <span class="preprocessor"> os &lt;&lt; stuff &lt;&lt; "\r\n";\</span>
00156 <span class="preprocessor"> WXOLE_TRACE(os.mb_str());\</span>
00157 <span class="preprocessor"> }</span>
00158 <span class="preprocessor"></span>
00159 <span class="preprocessor"> #define WXOLE_WARN(__hr,msg)\</span>
00160 <span class="preprocessor"> {\</span>
00161 <span class="preprocessor"> if (__hr != S_OK)\</span>
00162 <span class="preprocessor"> {\</span>
00163 <span class="preprocessor"> wxString s = "*** ";\</span>
00164 <span class="preprocessor"> s += msg;\</span>
00165 <span class="preprocessor"> s += " : "+ OLEHResultToString(__hr);\</span>
00166 <span class="preprocessor"> WXOLE_TRACE(s.c_str());\</span>
00167 <span class="preprocessor"> }\</span>
00168 <span class="preprocessor"> }</span>
00169 <span class="preprocessor"></span><span class="preprocessor">#else</span>
00170 <span class="preprocessor"></span><span class="preprocessor"> #define WXOLE_TRACE(str)</span>
00171 <span class="preprocessor"></span><span class="preprocessor"> #define WXOLE_TRACEOUT(stuff)</span>
00172 <span class="preprocessor"></span><span class="preprocessor"> #define WXOLE_WARN(_proc,msg) {_proc;}</span>
00173 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00174 <span class="preprocessor"></span>
00175 <span class="keyword">class </span>wxOleInit
00176 {
00177 <span class="keyword">public</span>:
00178 <span class="keyword">static</span> IMalloc *GetIMalloc();
00179
00180 wxOleInit();
00181 ~wxOleInit();
00182 };
00183
00184 <span class="preprocessor">#define DECLARE_OLE_UNKNOWN(cls)\</span>
00185 <span class="preprocessor"> private:\</span>
00186 <span class="preprocessor"> class TAutoInitInt\</span>
00187 <span class="preprocessor"> {\</span>
00188 <span class="preprocessor"> public:\</span>
00189 <span class="preprocessor"> LONG l;\</span>
00190 <span class="preprocessor"> TAutoInitInt() : l(0) {}\</span>
00191 <span class="preprocessor"> };\</span>
00192 <span class="preprocessor"> TAutoInitInt refCount, lockCount;\</span>
00193 <span class="preprocessor"> wxOleInit oleInit;\</span>
00194 <span class="preprocessor"> static void _GetInterface(cls *self, REFIID iid, void **_interface, const char *&amp;desc);\</span>
00195 <span class="preprocessor"> public:\</span>
00196 <span class="preprocessor"> LONG GetRefCount();\</span>
00197 <span class="preprocessor"> HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void ** ppvObject);\</span>
00198 <span class="preprocessor"> ULONG STDMETHODCALLTYPE AddRef();\</span>
00199 <span class="preprocessor"> ULONG STDMETHODCALLTYPE Release();\</span>
00200 <span class="preprocessor"> ULONG STDMETHODCALLTYPE AddLock();\</span>
00201 <span class="preprocessor"> ULONG STDMETHODCALLTYPE ReleaseLock()</span>
00202 <span class="preprocessor"></span>
00203 <span class="preprocessor">#define DEFINE_OLE_TABLE(cls)\</span>
00204 <span class="preprocessor"> LONG cls::GetRefCount() {return refCount.l;}\</span>
00205 <span class="preprocessor"> HRESULT STDMETHODCALLTYPE cls::QueryInterface(REFIID iid, void ** ppvObject)\</span>
00206 <span class="preprocessor"> {\</span>
00207 <span class="preprocessor"> if (! ppvObject)\</span>
00208 <span class="preprocessor"> {\</span>
00209 <span class="preprocessor"> WXOLE_TRACE("*** NULL POINTER ***");\</span>
00210 <span class="preprocessor"> return E_FAIL;\</span>
00211 <span class="preprocessor"> };\</span>
00212 <span class="preprocessor"> const char *desc = NULL;\</span>
00213 <span class="preprocessor"> cls::_GetInterface(this, iid, ppvObject, desc);\</span>
00214 <span class="preprocessor"> if (! *ppvObject)\</span>
00215 <span class="preprocessor"> {\</span>
00216 <span class="preprocessor"> WXOLE_TRACEOUT("&lt;" &lt;&lt; GetIIDName(iid).c_str() &lt;&lt; "&gt; Not Found");\</span>
00217 <span class="preprocessor"> return E_NOINTERFACE;\</span>
00218 <span class="preprocessor"> };\</span>
00219 <span class="preprocessor"> WXOLE_TRACEOUT("QI : &lt;" &lt;&lt; desc &lt;&lt;"&gt;");\</span>
00220 <span class="preprocessor"> ((IUnknown * )(*ppvObject))-&gt;AddRef();\</span>
00221 <span class="preprocessor"> return S_OK;\</span>
00222 <span class="preprocessor"> };\</span>
00223 <span class="preprocessor"> ULONG STDMETHODCALLTYPE cls::AddRef()\</span>
00224 <span class="preprocessor"> {\</span>
00225 <span class="preprocessor"> WXOLE_TRACEOUT(# cls &lt;&lt; "::Add ref(" &lt;&lt; refCount.l &lt;&lt; ")");\</span>
00226 <span class="preprocessor"> InterlockedIncrement(&amp;refCount.l);\</span>
00227 <span class="preprocessor"> return refCount.l;\</span>
00228 <span class="preprocessor"> };\</span>
00229 <span class="preprocessor"> ULONG STDMETHODCALLTYPE cls::Release()\</span>
00230 <span class="preprocessor"> {\</span>
00231 <span class="preprocessor"> if (refCount.l &gt; 0)\</span>
00232 <span class="preprocessor"> {\</span>
00233 <span class="preprocessor"> InterlockedDecrement(&amp;refCount.l);\</span>
00234 <span class="preprocessor"> WXOLE_TRACEOUT(# cls &lt;&lt; "::Del ref(" &lt;&lt; refCount.l &lt;&lt; ")");\</span>
00235 <span class="preprocessor"> if (refCount.l == 0)\</span>
00236 <span class="preprocessor"> {\</span>
00237 <span class="preprocessor"> delete this;\</span>
00238 <span class="preprocessor"> return 0;\</span>
00239 <span class="preprocessor"> };\</span>
00240 <span class="preprocessor"> return refCount.l;\</span>
00241 <span class="preprocessor"> }\</span>
00242 <span class="preprocessor"> else\</span>
00243 <span class="preprocessor"> return 0;\</span>
00244 <span class="preprocessor"> }\</span>
00245 <span class="preprocessor"> ULONG STDMETHODCALLTYPE cls::AddLock()\</span>
00246 <span class="preprocessor"> {\</span>
00247 <span class="preprocessor"> WXOLE_TRACEOUT(# cls &lt;&lt; "::Add Lock(" &lt;&lt; lockCount.l &lt;&lt; ")");\</span>
00248 <span class="preprocessor"> InterlockedIncrement(&amp;lockCount.l);\</span>
00249 <span class="preprocessor"> return lockCount.l;\</span>
00250 <span class="preprocessor"> };\</span>
00251 <span class="preprocessor"> ULONG STDMETHODCALLTYPE cls::ReleaseLock()\</span>
00252 <span class="preprocessor"> {\</span>
00253 <span class="preprocessor"> if (lockCount.l &gt; 0)\</span>
00254 <span class="preprocessor"> {\</span>
00255 <span class="preprocessor"> InterlockedDecrement(&amp;lockCount.l);\</span>
00256 <span class="preprocessor"> WXOLE_TRACEOUT(# cls &lt;&lt; "::Del Lock(" &lt;&lt; lockCount.l &lt;&lt; ")");\</span>
00257 <span class="preprocessor"> return lockCount.l;\</span>
00258 <span class="preprocessor"> }\</span>
00259 <span class="preprocessor"> else\</span>
00260 <span class="preprocessor"> return 0;\</span>
00261 <span class="preprocessor"> }\</span>
00262 <span class="preprocessor"> DEFINE_OLE_BASE(cls)</span>
00263 <span class="preprocessor"></span>
00264 <span class="preprocessor">#define DEFINE_OLE_BASE(cls)\</span>
00265 <span class="preprocessor"> void cls::_GetInterface(cls *self, REFIID iid, void **_interface, const char *&amp;desc)\</span>
00266 <span class="preprocessor"> {\</span>
00267 <span class="preprocessor"> *_interface = NULL;\</span>
00268 <span class="preprocessor"> desc = NULL;</span>
00269 <span class="preprocessor"></span>
00270 <span class="preprocessor">#define OLE_INTERFACE(_iid, _type)\</span>
00271 <span class="preprocessor"> if (IsEqualIID(iid, _iid))\</span>
00272 <span class="preprocessor"> {\</span>
00273 <span class="preprocessor"> WXOLE_TRACE("Found Interface &lt;" # _type "&gt;");\</span>
00274 <span class="preprocessor"> *_interface = (IUnknown *) (_type *) self;\</span>
00275 <span class="preprocessor"> desc = # _iid;\</span>
00276 <span class="preprocessor"> return;\</span>
00277 <span class="preprocessor"> }</span>
00278 <span class="preprocessor"></span>
00279 <span class="preprocessor">#define OLE_IINTERFACE(_face) OLE_INTERFACE(IID_##_face, _face)</span>
00280 <span class="preprocessor"></span>
00281 <span class="preprocessor">#define OLE_INTERFACE_CUSTOM(func)\</span>
00282 <span class="preprocessor"> if (func(self, iid, _interface, desc))\</span>
00283 <span class="preprocessor"> {\</span>
00284 <span class="preprocessor"> return;\</span>
00285 <span class="preprocessor"> }</span>
00286 <span class="preprocessor"></span>
00287 <span class="preprocessor">#define END_OLE_TABLE\</span>
00288 <span class="preprocessor"> }</span>
00289 <span class="preprocessor"></span>
00290
00328
<a name="l00329"></a><a class="code" href="classwxActiveX.html">00329</a> <span class="keyword">class </span><a class="code" href="classwxActiveX.html">wxActiveX</a> : <span class="keyword">public</span> wxWindow {
00330 <span class="keyword">public</span>:
<a name="l00333"></a><a class="code" href="classwxActiveX_1_1ParamX.html">00333</a> <span class="keyword">class </span><a class="code" href="classwxActiveX_1_1ParamX.html">ParamX</a>
00334 {
00335 <span class="keyword">public</span>:
00336 USHORT flags;
00337 <span class="keywordtype">bool</span> isPtr, isSafeArray;
00338 VARTYPE vt;
00339 wxString name;
00340
00341 <a class="code" href="classwxActiveX_1_1ParamX.html">ParamX</a>() : vt(VT_EMPTY) {}
00342 <span class="keyword">inline</span> <span class="keywordtype">bool</span> IsIn()<span class="keyword"> const </span>{<span class="keywordflow">return</span> (flags &amp; IDLFLAG_FIN) != 0;}
00343 <span class="keyword">inline</span> <span class="keywordtype">bool</span> IsOut()<span class="keyword"> const </span>{<span class="keywordflow">return</span> (flags &amp; IDLFLAG_FOUT) != 0;}
00344 <span class="keyword">inline</span> <span class="keywordtype">bool</span> IsRetVal()<span class="keyword"> const </span>{<span class="keywordflow">return</span> (flags &amp; IDLFLAG_FRETVAL) != 0;}
00345 };
00346 <span class="keyword">typedef</span> vector&lt;ParamX&gt; ParamXArray;
00347
<a name="l00350"></a><a class="code" href="classwxActiveX_1_1FuncX.html">00350</a> <span class="keyword">class </span><a class="code" href="classwxActiveX_1_1FuncX.html">FuncX</a>
00351 {
00352 <span class="keyword">public</span>:
00353 wxString name;
00354 MEMBERID memid;
00355 <span class="keywordtype">bool</span> hasOut;
00356
00357 <a class="code" href="classwxActiveX_1_1ParamX.html">ParamX</a> retType;
00358 ParamXArray params;
00359 };
00360
<a name="l00362"></a><a class="code" href="classwxActiveX_1_1PropX.html">00362</a> <span class="keyword">class </span><a class="code" href="classwxActiveX_1_1PropX.html">PropX</a>
00363 {
00364 <span class="keyword">public</span>:
00365 wxString name;
00366 MEMBERID memid;
00367 <a class="code" href="classwxActiveX_1_1ParamX.html">ParamX</a> type;
00368 <a class="code" href="classwxActiveX_1_1ParamX.html">ParamX</a> arg;
00369 <span class="keywordtype">bool</span> putByRef;
00370
00371 <a class="code" href="classwxActiveX_1_1PropX.html">PropX</a>() : putByRef (<span class="keyword">false</span>) {}
00372 <span class="keyword">inline</span> <span class="keywordtype">bool</span> CanGet()<span class="keyword"> const </span>{<span class="keywordflow">return</span> type.<a class="code" href="classwxActiveX_1_1ParamX.html#m3">vt</a> != VT_EMPTY;}
00373 <span class="keyword">inline</span> <span class="keywordtype">bool</span> CanSet()<span class="keyword"> const </span>{<span class="keywordflow">return</span> arg.<a class="code" href="classwxActiveX_1_1ParamX.html#m3">vt</a> != VT_EMPTY;}
00374 };
00375
00377 <a class="code" href="classwxActiveX.html#a0">wxActiveX</a>(wxWindow * parent, REFCLSID clsid, wxWindowID id = -1,
00378 <span class="keyword">const</span> wxPoint&amp; pos = wxDefaultPosition,
00379 <span class="keyword">const</span> wxSize&amp; size = wxDefaultSize,
00380 <span class="keywordtype">long</span> style = 0,
00381 <span class="keyword">const</span> wxString&amp; name = wxPanelNameStr);
00383 <a class="code" href="classwxActiveX.html#a0">wxActiveX</a>(wxWindow * parent, wxString progId, wxWindowID id = -1,
00384 <span class="keyword">const</span> wxPoint&amp; pos = wxDefaultPosition,
00385 <span class="keyword">const</span> wxSize&amp; size = wxDefaultSize,
00386 <span class="keywordtype">long</span> style = 0,
00387 <span class="keyword">const</span> wxString&amp; name = wxPanelNameStr);
00388 <span class="keyword">virtual</span> ~<a class="code" href="classwxActiveX.html">wxActiveX</a>();
00389
<a name="l00391"></a><a class="code" href="classwxActiveX.html#a3">00391</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classwxActiveX.html#a3">GetEventCount</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_events.size();}
00394 <span class="keyword">const</span> FuncX&amp; <a class="code" href="classwxActiveX.html#a4">GetEventDesc</a>(<span class="keywordtype">int</span> idx) <span class="keyword">const</span>;
00395
<a name="l00397"></a><a class="code" href="classwxActiveX.html#a5">00397</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classwxActiveX.html#a5">GetPropCount</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_props.size();}
00400 <span class="keyword">const</span> PropX&amp; <a class="code" href="classwxActiveX.html#a6">GetPropDesc</a>(<span class="keywordtype">int</span> idx) <span class="keyword">const</span>;
00403 <span class="keyword">const</span> PropX&amp; <a class="code" href="classwxActiveX.html#a6">GetPropDesc</a>(wxString name) <span class="keyword">const</span>;
00404
<a name="l00406"></a><a class="code" href="classwxActiveX.html#a8">00406</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classwxActiveX.html#a8">GetMethodCount</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_methods.size();}
00409 <span class="keyword">const</span> FuncX&amp; <a class="code" href="classwxActiveX.html#a9">GetMethodDesc</a>(<span class="keywordtype">int</span> idx) <span class="keyword">const</span>;
00412 <span class="keyword">const</span> FuncX&amp; <a class="code" href="classwxActiveX.html#a9">GetMethodDesc</a>(wxString name) <span class="keyword">const</span>;
00413
00415 <span class="keywordtype">void</span> <a class="code" href="classwxActiveX.html#a11">SetProp</a>(MEMBERID name, VARIANTARG&amp; value);
00417 <span class="keywordtype">void</span> <a class="code" href="classwxActiveX.html#a11">SetProp</a>(<span class="keyword">const</span> wxString &amp;name, <span class="keyword">const</span> wxVariant &amp;value);
00418
00419 <span class="keyword">class </span>wxPropertySetter
00420 {
00421 <span class="keyword">public</span>:
00422 <a class="code" href="classwxActiveX.html">wxActiveX</a> *m_ctl;
00423 wxString m_propName;
00424
00425 wxPropertySetter(<a class="code" href="classwxActiveX.html">wxActiveX</a> *ctl, wxString propName) :
00426 m_ctl(ctl), m_propName(propName) {}
00427
00428 <span class="keyword">inline</span> <span class="keyword">const</span> wxPropertySetter&amp; operator = (wxVariant v)<span class="keyword"> const</span>
00429 <span class="keyword"> </span>{
00430 m_ctl-&gt;<a class="code" href="classwxActiveX.html#a11">SetProp</a>(m_propName, v);
00431 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00432 };
00433
00434 <span class="keyword">inline</span> operator wxVariant()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_ctl-&gt;<a class="code" href="classwxActiveX.html#a16">GetPropAsWxVariant</a>(m_propName);};
00435 <span class="keyword">inline</span> operator wxString()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_ctl-&gt;<a class="code" href="classwxActiveX.html#a17">GetPropAsString</a>(m_propName);};
00436 <span class="keyword">inline</span> operator char()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_ctl-&gt;<a class="code" href="classwxActiveX.html#a18">GetPropAsChar</a>(m_propName);};
00437 <span class="keyword">inline</span> operator long()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_ctl-&gt;<a class="code" href="classwxActiveX.html#a19">GetPropAsLong</a>(m_propName);};
00438 <span class="keyword">inline</span> operator bool()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_ctl-&gt;<a class="code" href="classwxActiveX.html#a20">GetPropAsBool</a>(m_propName);};
00439 <span class="keyword">inline</span> operator double()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_ctl-&gt;<a class="code" href="classwxActiveX.html#a21">GetPropAsDouble</a>(m_propName);};
00440 <span class="keyword">inline</span> operator wxDateTime()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_ctl-&gt;<a class="code" href="classwxActiveX.html#a22">GetPropAsDateTime</a>(m_propName);};
00441 <span class="keyword">inline</span> operator void *()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_ctl-&gt;<a class="code" href="classwxActiveX.html#a23">GetPropAsPointer</a>(m_propName);};
00442 };
00443
<a name="l00458"></a><a class="code" href="classwxActiveX.html#a13">00458</a> <span class="keyword">inline</span> wxPropertySetter <a class="code" href="classwxActiveX.html#a13">Prop</a>(wxString name) {<span class="keywordflow">return</span> wxPropertySetter(<span class="keyword">this</span>, name);}
00459
00460 VARIANT GetPropAsVariant(MEMBERID name);
00461 VARIANT GetPropAsVariant(<span class="keyword">const</span> wxString&amp; name);
00462 wxVariant GetPropAsWxVariant(<span class="keyword">const</span> wxString&amp; name);
00463 wxString GetPropAsString(<span class="keyword">const</span> wxString&amp; name);
00464 <span class="keywordtype">char</span> GetPropAsChar(<span class="keyword">const</span> wxString&amp; name);
00465 <span class="keywordtype">long</span> GetPropAsLong(<span class="keyword">const</span> wxString&amp; name);
00466 <span class="keywordtype">bool</span> GetPropAsBool(<span class="keyword">const</span> wxString&amp; name);
00467 <span class="keywordtype">double</span> GetPropAsDouble(<span class="keyword">const</span> wxString&amp; name);
00468 wxDateTime GetPropAsDateTime(<span class="keyword">const</span> wxString&amp; name);
00469 <span class="keywordtype">void</span> *GetPropAsPointer(<span class="keyword">const</span> wxString&amp; name);
00470
00471 <span class="comment">// methods</span>
00472 <span class="comment">// VARIANTARG form is passed straight to Invoke, </span>
00473 <span class="comment">// so args in *REVERSE* order</span>
00474 VARIANT <a class="code" href="classwxActiveX.html#a26">CallMethod</a>(MEMBERID name, VARIANTARG args[], <span class="keywordtype">int</span> argc);
00475 VARIANT <a class="code" href="classwxActiveX.html#a26">CallMethod</a>(wxString name, VARIANTARG args[] = NULL, <span class="keywordtype">int</span> argc = -1);
00476 <span class="comment">// args are in *NORMAL* order</span>
00477 <span class="comment">// args can be a single wxVariant or an array</span>
00493 <span class="comment"> wxVariant CallMethod(wxString name, wxVariant args[], int nargs = -1);</span>
00494
00495 HRESULT ConnectAdvise(REFIID riid, IUnknown *eventSink);
00496
00497 <span class="keywordtype">void</span> OnSize(wxSizeEvent&amp;);
00498 <span class="keywordtype">void</span> OnPaint(wxPaintEvent&amp; event);
00499 <span class="keywordtype">void</span> OnMouse(wxMouseEvent&amp; event);
00500 <span class="keywordtype">void</span> OnSetFocus(wxFocusEvent&amp;);
00501 <span class="keywordtype">void</span> OnKillFocus(wxFocusEvent&amp;);
00502
00503 DECLARE_EVENT_TABLE();
00504
00505 <span class="keyword">protected</span>:
00506 <span class="keyword">friend</span> <span class="keyword">class </span>FrameSite;
00507 <span class="keyword">friend</span> <span class="keyword">class </span>wxActiveXEvents;
00508
00509 <span class="keyword">typedef</span> map&lt;MEMBERID, FuncX&gt; FuncXMap;
00510 <span class="keyword">typedef</span> map&lt;wxString, FuncX, NS_wxActiveX::less_wxStringI&gt; FuncXStringMap;
00511 <span class="keyword">typedef</span> map&lt;wxString, PropX, NS_wxActiveX::less_wxStringI&gt; PropXMap;
00512 <span class="keyword">typedef</span> <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;IConnectionPoint&gt;</a> wxOleConnectionPoint;
00513 <span class="keyword">typedef</span> pair&lt;wxOleConnectionPoint, DWORD&gt; wxOleConnection;
00514 <span class="keyword">typedef</span> vector&lt;wxOleConnection&gt; wxOleConnectionArray;
00515
00516 <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;IDispatch&gt;</a> m_Dispatch;
00517 <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;IOleClientSite&gt;</a> m_clientSite;
00518 <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;IUnknown&gt;</a> m_ActiveX;
00519 <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;IOleObject&gt;</a> m_oleObject;
00520 <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;IOleInPlaceObject&gt;</a> m_oleInPlaceObject;
00521 <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;IOleInPlaceActiveObject&gt;</a>
00522
00523 m_oleInPlaceActiveObject;
00524 <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;IOleDocumentView&gt;</a> m_docView;
00525 <a class="code" href="classwxAutoOleInterface.html">wxAutoOleInterface&lt;IViewObject&gt;</a> m_viewObject;
00526 HWND m_oleObjectHWND;
00527 <span class="keywordtype">bool</span> m_bAmbientUserMode;
00528 DWORD m_docAdviseCookie;
00529 wxOleConnectionArray m_connections;
00530
00531 <span class="keywordtype">void</span> CreateActiveX(REFCLSID clsid);
00532 <span class="keywordtype">void</span> CreateActiveX(LPOLESTR progId);
00533 HRESULT AmbientPropertyChanged(DISPID dispid);
00534
00535 <span class="keywordtype">void</span> GetTypeInfo();
00536 <span class="keywordtype">void</span> GetTypeInfo(ITypeInfo *ti, <span class="keywordtype">bool</span> defInterface, <span class="keywordtype">bool</span> defEventSink);
00537
00538
00539 <span class="comment">// events</span>
00540 FuncXMap m_events;
00541
00542 <span class="comment">// properties</span>
00543 PropXMap m_props;
00544
00545 <span class="comment">// Methods</span>
00546 FuncXStringMap m_methods;
00547
00548 <span class="keywordtype">long</span> MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
00549 };
00550
00551 <span class="comment">// events</span>
00552 <span class="keyword">class </span>wxActiveXEvent : <span class="keyword">public</span> wxCommandEvent
00553 {
00554 <span class="keyword">private</span>:
00555 <span class="keyword">friend</span> <span class="keyword">class </span>wxActiveXEvents;
00556
00557 wxVariant m_params;
00558
00559 <span class="keyword">public</span>:
00560
00561 <span class="keyword">virtual</span> wxEvent *Clone()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">new</span> wxActiveXEvent(*<span class="keyword">this</span>); }
00562
00563 wxString EventName();
00564 <span class="keywordtype">int</span> ParamCount() <span class="keyword">const</span>;
00565 wxString ParamType(<span class="keywordtype">int</span> idx);
00566 wxString ParamName(<span class="keywordtype">int</span> idx);
00567 wxVariant&amp; operator[] (<span class="keywordtype">int</span> idx);
00568 wxVariant&amp; operator[] (wxString name);
00569 };
00570
00571 <span class="keyword">const</span> wxEventType&amp; RegisterActiveXEvent(<span class="keyword">const</span> wxChar *eventName);
00572 <span class="keyword">const</span> wxEventType&amp; RegisterActiveXEvent(DISPID event);
00573
00574 <span class="keyword">typedef</span> void (wxEvtHandler::*wxActiveXEventFunction)(wxActiveXEvent&amp;);
00575
<a name="l00578"></a><a class="code" href="wxactivex_8h.html#a10">00578</a> <span class="preprocessor">#define EVT_ACTIVEX(id, eventName, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(wxT(eventName)), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) &amp; fn, (wxObject *) NULL ),</span>
<a name="l00581"></a><a class="code" href="wxactivex_8h.html#a11">00581</a> <span class="preprocessor">#define EVT_ACTIVEX_DISPID(id, eventDispId, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(eventDispId), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) &amp; fn, (wxObject *) NULL ),</span>
00582 <span class="preprocessor"></span>
00583 <span class="comment">//util</span>
00584 <span class="keywordtype">bool</span> wxDateTimeToVariant(wxDateTime dt, VARIANTARG&amp; va);
00585 <span class="keywordtype">bool</span> VariantToWxDateTime(VARIANTARG va, wxDateTime&amp; dt);
00596 <span class="keywordtype">bool</span> MSWVariantToVariant(VARIANTARG&amp; va, wxVariant&amp; vx);
00607 <span class="keywordtype">bool</span> VariantToMSWVariant(<span class="keyword">const</span> wxVariant&amp; vx, VARIANTARG&amp; va);
00608
00609 <span class="preprocessor">#endif </span><span class="comment">/* _IEHTMLWIN_H_ */</span>
</pre></div><hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,216 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>wxactivex.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3-rc3 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>wxactivex.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
implements <a class="el" href="classwxActiveX.html">wxActiveX</a> window class and OLE tools
<p>
<p>
Definition in file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>.
<p>
<code>#include &lt;wx/setup.h&gt;</code><br>
<code>#include &lt;wx/wx.h&gt;</code><br>
<code>#include &lt;wx/variant.h&gt;</code><br>
<code>#include &lt;wx/datetime.h&gt;</code><br>
<code>#include &lt;oleidl.h&gt;</code><br>
<code>#include &lt;exdisp.h&gt;</code><br>
<code>#include &lt;docobj.h&gt;</code><br>
<code>#include &lt;iostream&gt;</code><br>
<code>#include &lt;vector&gt;</code><br>
<code>#include &lt;map&gt;</code><br>
<p>
<a href="wxactivex_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Namespaces</h2></td></tr>
<tr><td nowrap align=right valign=top>namespace &nbsp;</td><td valign=bottom><a class="el" href="namespaceNS__wxActiveX.html">NS_wxActiveX</a></td></tr>
<tr><td nowrap align=right valign=top>namespace &nbsp;</td><td valign=bottom><b>std</b></td></tr>
<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
<tr><td nowrap align=right valign=top>class &nbsp;</td><td valign=bottom><a class="el" href="classwxAutoOleInterface.html">wxAutoOleInterface</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Template class for smart interface handling.</em> <a href="classwxAutoOleInterface.html#_details">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>class &nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX.html">wxActiveX</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Main class for embedding a ActiveX control.</em> <a href="classwxActiveX.html#_details">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>class &nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX_1_1ParamX.html">ParamX</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>General parameter and return type infoformation for Events, Properties and Methods.</em> <a href="classwxActiveX_1_1ParamX.html#_details">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>class &nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX_1_1FuncX.html">FuncX</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Type &amp; Parameter info for Events and Methods.</em> <a href="classwxActiveX_1_1FuncX.html#_details">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>class &nbsp;</td><td valign=bottom><a class="el" href="classwxActiveX_1_1PropX.html">PropX</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Type info for properties.</em> <a href="classwxActiveX_1_1PropX.html#_details">More...</a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="a10" doxytag="wxactivex.h::EVT_ACTIVEX"></a>
#define&nbsp;</td><td valign=bottom><a class="el" href="wxactivex_8h.html#a10">EVT_ACTIVEX</a>(id, eventName, fn)&nbsp;&nbsp;&nbsp;DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(wxT(eventName)), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) &amp; fn, (wxObject *) NULL ),</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Event handle for events by name.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a11" doxytag="wxactivex.h::EVT_ACTIVEX_DISPID"></a>
#define&nbsp;</td><td valign=bottom><a class="el" href="wxactivex_8h.html#a11">EVT_ACTIVEX_DISPID</a>(id, eventDispId, fn)&nbsp;&nbsp;&nbsp;DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(eventDispId), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) &amp; fn, (wxObject *) NULL ),</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Event handle for events by DISPID (dispath id).</em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Functions</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="a13" doxytag="wxactivex.h::OLEHResultToString"></a>
wxString&nbsp;</td><td valign=bottom><a class="el" href="wxactivex_8h.html#a13">OLEHResultToString</a> (HRESULT hr)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Converts a std HRESULT to its error code. Hardcoded, by no means a definitive list.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a14" doxytag="wxactivex.h::GetIIDName"></a>
wxString&nbsp;</td><td valign=bottom><a class="el" href="wxactivex_8h.html#a14">GetIIDName</a> (REFIID riid)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the string description of a IID. Hardcoded, by no means a definitive list.</em></font><br><br></td></tr>
</table>
<hr><h2>Define Documentation</h2>
<a name="a3" doxytag="wxactivex.h::DECLARE_OLE_UNKNOWN"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define DECLARE_OLE_UNKNOWN</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">cls&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
<b>Value:</b><div class="fragment"><pre><span class="keyword">private</span>:\
<span class="keyword">class </span>TAutoInitInt\
{\
<span class="keyword">public</span>:\
LONG l;\
TAutoInitInt() : l(0) {}\
};\
TAutoInitInt refCount, lockCount;\
wxOleInit oleInit;\
<span class="keyword">static</span> <span class="keywordtype">void</span> _GetInterface(cls *self, REFIID iid, <span class="keywordtype">void</span> **_interface, <span class="keyword">const</span> <span class="keywordtype">char</span> *&amp;desc);\
<span class="keyword">public</span>:\
LONG GetRefCount();\
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, <span class="keywordtype">void</span> ** ppvObject);\
ULONG STDMETHODCALLTYPE AddRef();\
ULONG STDMETHODCALLTYPE Release();\
ULONG STDMETHODCALLTYPE AddLock();\
ULONG STDMETHODCALLTYPE ReleaseLock()
</pre></div>
<p>
Definition at line <a class="el" href="wxactivex_8h-source.html#l00184">184</a> of file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>. </td>
</tr>
</table>
<a name="a5" doxytag="wxactivex.h::DEFINE_OLE_BASE"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define DEFINE_OLE_BASE</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">cls&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
<b>Value:</b><div class="fragment"><pre><span class="keywordtype">void</span> cls::_GetInterface(cls *self, REFIID iid, <span class="keywordtype">void</span> **_interface, <span class="keyword">const</span> <span class="keywordtype">char</span> *&amp;desc)\
{\
*_interface = NULL;\
desc = NULL;
</pre></div>
<p>
Definition at line <a class="el" href="wxactivex_8h-source.html#l00264">264</a> of file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>. </td>
</tr>
</table>
<a name="a6" doxytag="wxactivex.h::OLE_INTERFACE"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define OLE_INTERFACE</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">_iid, <tr>
<td></td>
<td></td>
<td class="md" nowrap>_type&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
<b>Value:</b><div class="fragment"><pre><span class="keywordflow">if</span> (IsEqualIID(iid, _iid))\
{\
WXOLE_TRACE(<span class="stringliteral">"Found Interface &lt;"</span> # _type <span class="stringliteral">"&gt;"</span>);\
*_interface = (IUnknown *) (_type *) self;\
desc = # _iid;\
<span class="keywordflow">return</span>;\
}
</pre></div>
<p>
Definition at line <a class="el" href="wxactivex_8h-source.html#l00270">270</a> of file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>. </td>
</tr>
</table>
<a name="a8" doxytag="wxactivex.h::OLE_INTERFACE_CUSTOM"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> #define OLE_INTERFACE_CUSTOM</td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">func&nbsp;</td>
<td class="mdname1" valign="top" nowrap>&nbsp; </td>
<td class="md" valign="top">)&nbsp;</td>
<td class="md" nowrap>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
<b>Value:</b><div class="fragment"><pre><span class="keywordflow">if</span> (func(self, iid, _interface, desc))\
{\
<span class="keywordflow">return</span>;\
}
</pre></div>
<p>
Definition at line <a class="el" href="wxactivex_8h-source.html#l00281">281</a> of file <a class="el" href="wxactivex_8h-source.html">wxactivex.h</a>. </td>
</tr>
</table>
<hr><address style="align: right;"><small>Generated on Tue Apr 1 14:51:12 2003 for wxActiveX by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.3-rc3 </small></address>
</body>
</html>

View File

@@ -0,0 +1,39 @@
all: refman.dvi
ps: refman.ps
pdf: refman.pdf
ps_2on1: refman_2on1.ps
pdf_2on1: refman_2on1.pdf
refman.ps: refman.dvi
dvips -o refman.ps refman.dvi
refman.pdf: refman.ps
gswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=refman.pdf -c save pop -f refman.ps
refman.dvi: refman.tex doxygen.sty
echo "Running latex..."
latex refman.tex
echo "Running makeindex..."
makeindex refman.idx
echo "Rerunning latex...."
latex refman.tex
latex_count=5 ; \
while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
do \
echo "Rerunning latex...." ;\
latex refman.tex ;\
latex_count=`expr $$latex_count - 1` ;\
done
refman_2on1.ps: refman.ps
psnup -2 refman.ps >refman_2on1.ps
refman_2on1.pdf: refman_2on1.ps
gswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=refman_2on1.pdf -c save pop -f refman_2on1.ps
clean:
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out

View File

@@ -0,0 +1,9 @@
\section{wx\-Active\-X Data Structures}
Here are the data structures with brief descriptions:\begin{CompactList}
\item\contentsline{section}{{\bf NS\_\-wx\-Active\-X::less\_\-wx\-String\-I} (STL utilty class)}{\pageref{structNS__wxActiveX_1_1less__wxStringI}}{}
\item\contentsline{section}{{\bf wx\-Active\-X} (Main class for embedding a Active\-X control)}{\pageref{classwxActiveX}}{}
\item\contentsline{section}{{\bf wx\-Active\-X::Func\-X} (Type \& Parameter info for Events and Methods)}{\pageref{classwxActiveX_1_1FuncX}}{}
\item\contentsline{section}{{\bf wx\-Active\-X::Param\-X} (General parameter and return type infoformation for Events, Properties and Methods)}{\pageref{classwxActiveX_1_1ParamX}}{}
\item\contentsline{section}{{\bf wx\-Active\-X::Prop\-X} (Type info for properties)}{\pageref{classwxActiveX_1_1PropX}}{}
\item\contentsline{section}{{\bf wx\-Auto\-Ole\-Interface$<$ I $>$} (Template class for smart interface handling)}{\pageref{classwxAutoOleInterface}}{}
\end{CompactList}

View File

@@ -0,0 +1,285 @@
\section{wx\-Active\-X Class Reference}
\label{classwxActiveX}\index{wxActiveX@{wxActiveX}}
{\tt \#include $<$wxactivex.h$>$}
\subsection{Detailed Description}
Main class for embedding a Active\-X control.
Use by itself or derive from it \begin{Desc}
\item[Note:]The utility program (wxie) can generate a list of events, methods \& properties for a control. First display the control (File$|$Display), then get the type info (Active\-X$|$Get Type Info) - these are copied to the clipboard. Eventually this will be expanded to autogenerate wx\-Windows source files for a control with all methods etc encapsulated. \end{Desc}
\begin{Desc}
\item[Usage: ]construct using a Prog\-Id or class id
\footnotesize\begin{verbatim} new wxActiveX(parent, CLSID_WebBrowser, id, pos, size, style, name)
\end{verbatim}\normalsize
\footnotesize\begin{verbatim} new wxActiveX(parent, "ShockwaveFlash.ShockwaveFlash", id, pos, size, style, name)
\end{verbatim}\normalsize
\end{Desc}
\begin{Desc}
\item[Properties]Properties can be set using {\tt {\bf Set\-Prop()}} and set/retrieved using {\tt {\bf Prop()}}
\footnotesize\begin{verbatim} SetProp(name, wxVariant(x))
\end{verbatim}\normalsize
or
\footnotesize\begin{verbatim} wxString Prop("<name>") = x
\end{verbatim}\normalsize
\footnotesize\begin{verbatim} wxString result = Prop("<name>")
\end{verbatim}\normalsize
\footnotesize\begin{verbatim} flash_ctl.Prop("movie") = "file:///movies/test.swf";
\end{verbatim}\normalsize
\footnotesize\begin{verbatim} flash_ctl.Prop("Playing") = false;
\end{verbatim}\normalsize
\footnotesize\begin{verbatim} wxString current_movie = flash_ctl.Prop("movie");
\end{verbatim}\normalsize
\end{Desc}
\begin{Desc}
\item[Methods]Methods are invoked with {\tt {\bf Call\-Method()}}
\footnotesize\begin{verbatim} wxVariant result = CallMethod("<name>", args, nargs = -1)
\end{verbatim}\normalsize
\footnotesize\begin{verbatim} wxVariant args[] = {0L, "file:///e:/dev/wxie/bug-zap.swf"};
wxVariant result = X->CallMethod("LoadMovie", args);
\end{verbatim}\normalsize
\end{Desc}
\begin{Desc}
\item[events]respond to events with the {\tt {\bf EVT\_\-ACTIVEX(control\-Id, event\-Name, handler)}} \& {\tt {\bf EVT\_\-ACTIVEX\_\-DISPID(control\-Id, event\-Disp\-Id, handler)}} macros
\footnotesize\begin{verbatim}
BEGIN_EVENT_TABLE(wxIEFrame, wxFrame)
EVT_ACTIVEX_DISPID(ID_MSHTML, DISPID_STATUSTEXTCHANGE, OnMSHTMLStatusTextChangeX)
EVT_ACTIVEX(ID_MSHTML, "BeforeNavigate2", OnMSHTMLBeforeNavigate2X)
EVT_ACTIVEX(ID_MSHTML, "TitleChange", OnMSHTMLTitleChangeX)
EVT_ACTIVEX(ID_MSHTML, "NewWindow2", OnMSHTMLNewWindow2X)
EVT_ACTIVEX(ID_MSHTML, "ProgressChange", OnMSHTMLProgressChangeX)
END_EVENT_TABLE()
\end{verbatim}\normalsize
\end{Desc}
Definition at line 329 of file wxactivex.h.\subsection*{Public Member Functions}
\begin{CompactItemize}
\item
\index{wxActiveX@{wxActiveX}!wxActiveX@{wxActiveX}}\index{wxActiveX@{wxActiveX}!wxActiveX@{wxActiveX}}
{\bf wx\-Active\-X} (wx\-Window $\ast$parent, REFCLSID clsid, wx\-Window\-ID id=-1, const wx\-Point \&pos=wx\-Default\-Position, const wx\-Size \&size=wx\-Default\-Size, long style=0, const wx\-String \&name=wx\-Panel\-Name\-Str)\label{classwxActiveX_a0}
\begin{CompactList}\small\item\em Create using clsid.\item\end{CompactList}\item
\index{wxActiveX@{wxActiveX}!wxActiveX@{wxActiveX}}\index{wxActiveX@{wxActiveX}!wxActiveX@{wxActiveX}}
{\bf wx\-Active\-X} (wx\-Window $\ast$parent, wx\-String prog\-Id, wx\-Window\-ID id=-1, const wx\-Point \&pos=wx\-Default\-Position, const wx\-Size \&size=wx\-Default\-Size, long style=0, const wx\-String \&name=wx\-Panel\-Name\-Str)\label{classwxActiveX_a1}
\begin{CompactList}\small\item\em create using progid.\item\end{CompactList}\item
\index{GetEventCount@{GetEventCount}!wxActiveX@{wxActiveX}}\index{wxActiveX@{wxActiveX}!GetEventCount@{GetEventCount}}
int {\bf Get\-Event\-Count} () const\label{classwxActiveX_a3}
\begin{CompactList}\small\item\em Number of events defined for this control.\item\end{CompactList}\item
const {\bf Func\-X} \& {\bf Get\-Event\-Desc} (int idx) const
\begin{CompactList}\small\item\em returns event description by index.\item\end{CompactList}\item
\index{GetPropCount@{GetPropCount}!wxActiveX@{wxActiveX}}\index{wxActiveX@{wxActiveX}!GetPropCount@{GetPropCount}}
int {\bf Get\-Prop\-Count} () const\label{classwxActiveX_a5}
\begin{CompactList}\small\item\em Number of properties defined for this control.\item\end{CompactList}\item
const {\bf Prop\-X} \& {\bf Get\-Prop\-Desc} (int idx) const
\begin{CompactList}\small\item\em returns property description by index.\item\end{CompactList}\item
const {\bf Prop\-X} \& {\bf Get\-Prop\-Desc} (wx\-String name) const
\begin{CompactList}\small\item\em returns property description by name.\item\end{CompactList}\item
\index{GetMethodCount@{GetMethodCount}!wxActiveX@{wxActiveX}}\index{wxActiveX@{wxActiveX}!GetMethodCount@{GetMethodCount}}
int {\bf Get\-Method\-Count} () const\label{classwxActiveX_a8}
\begin{CompactList}\small\item\em Number of methods defined for this control.\item\end{CompactList}\item
const {\bf Func\-X} \& {\bf Get\-Method\-Desc} (int idx) const
\begin{CompactList}\small\item\em returns method description by name.\item\end{CompactList}\item
const {\bf Func\-X} \& {\bf Get\-Method\-Desc} (wx\-String name) const
\begin{CompactList}\small\item\em returns method description by name.\item\end{CompactList}\item
\index{SetProp@{SetProp}!wxActiveX@{wxActiveX}}\index{wxActiveX@{wxActiveX}!SetProp@{SetProp}}
void {\bf Set\-Prop} (MEMBERID name, VARIANTARG \&value)\label{classwxActiveX_a11}
\begin{CompactList}\small\item\em Set property VARIANTARG value by MEMBERID.\item\end{CompactList}\item
\index{SetProp@{SetProp}!wxActiveX@{wxActiveX}}\index{wxActiveX@{wxActiveX}!SetProp@{SetProp}}
void {\bf Set\-Prop} (const wx\-String \&name, const wx\-Variant \&value)\label{classwxActiveX_a12}
\begin{CompactList}\small\item\em Set property using wx\-Variant by name.\item\end{CompactList}\item
wx\-Property\-Setter {\bf Prop} (wx\-String name)
\begin{CompactList}\small\item\em Generic Get/Set Property by name. Automatically handles most types.\item\end{CompactList}\item
wx\-Variant {\bf Call\-Method} (wx\-String name, wx\-Variant args[$\,$], int nargs=-1)
\begin{CompactList}\small\item\em Call a method of the Active\-X control. Automatically handles most types.\item\end{CompactList}\end{CompactItemize}
\subsection*{Related Functions}
(Note that these are not member functions.)\begin{CompactItemize}
\item
bool {\bf MSWVariant\-To\-Variant} (VARIANTARG \&va, wx\-Variant \&vx)
\begin{CompactList}\small\item\em Convert MSW VARIANTARG to wx\-Variant. Handles basic types, need to add:\begin{itemize}
\item VT\_\-ARRAY $|$ VT\_\-$\ast$\item better support for VT\_\-UNKNOWN (currently treated as void $\ast$)\item better support for VT\_\-DISPATCH (currently treated as void $\ast$).\end{itemize}
\item\end{CompactList}\item
bool {\bf Variant\-To\-MSWVariant} (const wx\-Variant \&vx, VARIANTARG \&va)
\begin{CompactList}\small\item\em Convert wx\-Variant to MSW VARIANTARG. Handles basic types, need to add:\begin{itemize}
\item VT\_\-ARRAY $|$ VT\_\-$\ast$\item better support for VT\_\-UNKNOWN (currently treated as void $\ast$)\item better support for VT\_\-DISPATCH (currently treated as void $\ast$).\end{itemize}
\item\end{CompactList}\end{CompactItemize}
\subsection{Member Function Documentation}
\index{wxActiveX@{wx\-Active\-X}!GetEventDesc@{GetEventDesc}}
\index{GetEventDesc@{GetEventDesc}!wxActiveX@{wx\-Active\-X}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const {\bf Func\-X}\& wx\-Active\-X::Get\-Event\-Desc (int {\em idx}) const}\label{classwxActiveX_a4}
returns event description by index.
throws exception for invalid index \index{wxActiveX@{wx\-Active\-X}!GetPropDesc@{GetPropDesc}}
\index{GetPropDesc@{GetPropDesc}!wxActiveX@{wx\-Active\-X}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const {\bf Prop\-X}\& wx\-Active\-X::Get\-Prop\-Desc (int {\em idx}) const}\label{classwxActiveX_a6}
returns property description by index.
throws exception for invalid index \index{wxActiveX@{wx\-Active\-X}!GetPropDesc@{GetPropDesc}}
\index{GetPropDesc@{GetPropDesc}!wxActiveX@{wx\-Active\-X}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const {\bf Prop\-X}\& wx\-Active\-X::Get\-Prop\-Desc (wx\-String {\em name}) const}\label{classwxActiveX_a7}
returns property description by name.
throws exception for invalid name \index{wxActiveX@{wx\-Active\-X}!GetMethodDesc@{GetMethodDesc}}
\index{GetMethodDesc@{GetMethodDesc}!wxActiveX@{wx\-Active\-X}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const {\bf Func\-X}\& wx\-Active\-X::Get\-Method\-Desc (int {\em idx}) const}\label{classwxActiveX_a9}
returns method description by name.
throws exception for invalid index \index{wxActiveX@{wx\-Active\-X}!GetMethodDesc@{GetMethodDesc}}
\index{GetMethodDesc@{GetMethodDesc}!wxActiveX@{wx\-Active\-X}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}const {\bf Func\-X}\& wx\-Active\-X::Get\-Method\-Desc (wx\-String {\em name}) const}\label{classwxActiveX_a10}
returns method description by name.
throws exception for invalid name \index{wxActiveX@{wx\-Active\-X}!Prop@{Prop}}
\index{Prop@{Prop}!wxActiveX@{wx\-Active\-X}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}wx\-Property\-Setter wx\-Active\-X::Prop (wx\-String {\em name})\hspace{0.3cm}{\tt [inline]}}\label{classwxActiveX_a13}
Generic Get/Set Property by name. Automatically handles most types.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em name}]Property name to read/set \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]wx\-Property\-Setter, which has overloads for setting/getting the property \end{Desc}
\begin{Desc}
\item[Usage:]\begin{itemize}
\item Prop(\char`\"{}$<$name$>$\char`\"{}) = $<$value$>$\item var = Prop(\char`\"{}$<$name$>$\char`\"{})\item e.g:\begin{itemize}
\item
\footnotesize\begin{verbatim} flash_ctl.Prop("movie") = "file:///movies/test.swf";
\end{verbatim}\normalsize
\item
\footnotesize\begin{verbatim} flash_ctl.Prop("Playing") = false;
\end{verbatim}\normalsize
\item
\footnotesize\begin{verbatim} wxString current_movie = flash_ctl.Prop("movie");
\end{verbatim}\normalsize
\end{itemize}
\end{itemize}
\end{Desc}
\begin{Desc}
\item[Exceptions:]
\begin{description}
\item[{\em raises}]exception if $<$name$>$ is invalid \end{description}
\end{Desc}
\begin{Desc}
\item[Note:]Have to add a few more type conversions yet ... \end{Desc}
Definition at line 458 of file wxactivex.h.\index{wxActiveX@{wx\-Active\-X}!CallMethod@{CallMethod}}
\index{CallMethod@{CallMethod}!wxActiveX@{wx\-Active\-X}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}wx\-Variant wx\-Active\-X::Call\-Method (wx\-String {\em name}, wx\-Variant {\em args}[$\,$], int {\em nargs} = -1)}\label{classwxActiveX_a26}
Call a method of the Active\-X control. Automatically handles most types.
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em name}]name of method to call \item[{\em args}]array of wx\-Variant's, defaults to NULL (no args) \item[{\em nargs}]number of arguments passed via args. Defaults to actual number of args for the method \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]wx\-Variant \end{Desc}
\begin{Desc}
\item[Usage:]\begin{itemize}
\item result = Call\-Method(\char`\"{}$<$name$>$\char`\"{}, args, nargs)\item e.g.\item
\footnotesize\begin{verbatim}
wxVariant args[] = {0L, "file:///e:/dev/wxie/bug-zap.swf"};
wxVariant result = X->CallMethod("LoadMovie", args);
\end{verbatim}\normalsize
\end{itemize}
\end{Desc}
\begin{Desc}
\item[Exceptions:]
\begin{description}
\item[{\em raises}]exception if $<$name$>$ is invalid \end{description}
\end{Desc}
\begin{Desc}
\item[Note:]Since wx\-Variant has built in type conversion, most the std types can be passed easily \end{Desc}
\subsection{Friends And Related Function Documentation}
\index{wxActiveX@{wx\-Active\-X}!MSWVariantToVariant@{MSWVariantToVariant}}
\index{MSWVariantToVariant@{MSWVariantToVariant}!wxActiveX@{wx\-Active\-X}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool MSWVariant\-To\-Variant (VARIANTARG \& {\em va}, wx\-Variant \& {\em vx})\hspace{0.3cm}{\tt [related]}}\label{classwxActiveX_k0}
Convert MSW VARIANTARG to wx\-Variant. Handles basic types, need to add:\begin{itemize}
\item VT\_\-ARRAY $|$ VT\_\-$\ast$\item better support for VT\_\-UNKNOWN (currently treated as void $\ast$)\item better support for VT\_\-DISPATCH (currently treated as void $\ast$).\end{itemize}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em va}]VARAIANTARG to convert from \item[{\em vx}]Destination wx\-Variant \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]success/failure (true/false) \end{Desc}
\index{wxActiveX@{wx\-Active\-X}!VariantToMSWVariant@{VariantToMSWVariant}}
\index{VariantToMSWVariant@{VariantToMSWVariant}!wxActiveX@{wx\-Active\-X}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool Variant\-To\-MSWVariant (const wx\-Variant \& {\em vx}, VARIANTARG \& {\em va})\hspace{0.3cm}{\tt [related]}}\label{classwxActiveX_k1}
Convert wx\-Variant to MSW VARIANTARG. Handles basic types, need to add:\begin{itemize}
\item VT\_\-ARRAY $|$ VT\_\-$\ast$\item better support for VT\_\-UNKNOWN (currently treated as void $\ast$)\item better support for VT\_\-DISPATCH (currently treated as void $\ast$).\end{itemize}
\begin{Desc}
\item[Parameters:]
\begin{description}
\item[{\em vx}]wx\-Variant to convert from \item[{\em va}]Destination VARIANTARG \end{description}
\end{Desc}
\begin{Desc}
\item[Returns:]success/failure (true/false) \end{Desc}
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
{\bf wxactivex.h}\end{CompactItemize}

View File

@@ -0,0 +1,18 @@
\section{wx\-Active\-X::Func\-X Class Reference}
\label{classwxActiveX_1_1FuncX}\index{wxActiveX::FuncX@{wxActiveX::FuncX}}
{\tt \#include $<$wxactivex.h$>$}
\subsection{Detailed Description}
Type \& Parameter info for Events and Methods.
refer to FUNCDESC in MSDN
Definition at line 350 of file wxactivex.h.
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
{\bf wxactivex.h}\end{CompactItemize}

View File

@@ -0,0 +1,18 @@
\section{wx\-Active\-X::Param\-X Class Reference}
\label{classwxActiveX_1_1ParamX}\index{wxActiveX::ParamX@{wxActiveX::ParamX}}
{\tt \#include $<$wxactivex.h$>$}
\subsection{Detailed Description}
General parameter and return type infoformation for Events, Properties and Methods.
refer to ELEMDESC, IDLDESC in MSDN
Definition at line 333 of file wxactivex.h.
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
{\bf wxactivex.h}\end{CompactItemize}

View File

@@ -0,0 +1,16 @@
\section{wx\-Active\-X::Prop\-X Class Reference}
\label{classwxActiveX_1_1PropX}\index{wxActiveX::PropX@{wxActiveX::PropX}}
{\tt \#include $<$wxactivex.h$>$}
\subsection{Detailed Description}
Type info for properties.
Definition at line 362 of file wxactivex.h.
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
{\bf wxactivex.h}\end{CompactItemize}

View File

@@ -0,0 +1,85 @@
\section{wx\-Auto\-Ole\-Interface$<$ I $>$ Class Template Reference}
\label{classwxAutoOleInterface}\index{wxAutoOleInterface@{wxAutoOleInterface}}
{\tt \#include $<$wxactivex.h$>$}
\subsection{Detailed Description}
\subsubsection*{template$<$class I$>$ class wx\-Auto\-Ole\-Interface$<$ I $>$}
Template class for smart interface handling.
\begin{itemize}
\item Automatically dereferences ole interfaces\item Smart Copy Semantics\item Can Create Interfaces\item Can query for other interfaces \end{itemize}
Definition at line 45 of file wxactivex.h.\subsection*{Public Member Functions}
\begin{CompactItemize}
\item
\index{wxAutoOleInterface@{wxAutoOleInterface}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!wxAutoOleInterface@{wxAutoOleInterface}}
{\bf wx\-Auto\-Ole\-Interface} (I $\ast$p\-Interface=NULL)\label{classwxAutoOleInterface_a0}
\begin{CompactList}\small\item\em takes ownership of an existing interface Assumed to already have a Add\-Ref() applied\item\end{CompactList}\item
\index{wxAutoOleInterface@{wxAutoOleInterface}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!wxAutoOleInterface@{wxAutoOleInterface}}
{\bf wx\-Auto\-Ole\-Interface} (REFIID riid, IUnknown $\ast$p\-Unk)\label{classwxAutoOleInterface_a1}
\begin{CompactList}\small\item\em queries for an interface\item\end{CompactList}\item
\index{wxAutoOleInterface@{wxAutoOleInterface}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!wxAutoOleInterface@{wxAutoOleInterface}}
{\bf wx\-Auto\-Ole\-Interface} (REFIID riid, IDispatch $\ast$p\-Dispatch)\label{classwxAutoOleInterface_a2}
\begin{CompactList}\small\item\em queries for an interface\item\end{CompactList}\item
\index{wxAutoOleInterface@{wxAutoOleInterface}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!wxAutoOleInterface@{wxAutoOleInterface}}
{\bf wx\-Auto\-Ole\-Interface} (REFCLSID clsid, REFIID riid)\label{classwxAutoOleInterface_a3}
\begin{CompactList}\small\item\em Creates an Interface.\item\end{CompactList}\item
\index{wxAutoOleInterface@{wxAutoOleInterface}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!wxAutoOleInterface@{wxAutoOleInterface}}
{\bf wx\-Auto\-Ole\-Interface} (const wx\-Auto\-Ole\-Interface$<$ I $>$ \&ti)\label{classwxAutoOleInterface_a4}
\begin{CompactList}\small\item\em copy constructor\item\end{CompactList}\item
\index{operator=@{operator=}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!operator=@{operator=}}
wx\-Auto\-Ole\-Interface$<$ I $>$ \& {\bf operator=} (const wx\-Auto\-Ole\-Interface$<$ I $>$ \&ti)\label{classwxAutoOleInterface_a5}
\begin{CompactList}\small\item\em assignment operator\item\end{CompactList}\item
\index{operator=@{operator=}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!operator=@{operator=}}
wx\-Auto\-Ole\-Interface$<$ I $>$ \& {\bf operator=} (I $\ast$\&ti)\label{classwxAutoOleInterface_a6}
\begin{CompactList}\small\item\em takes ownership of an existing interface Assumed to already have a Add\-Ref() applied\item\end{CompactList}\item
\index{~wxAutoOleInterface@{$\sim$wxAutoOleInterface}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!~wxAutoOleInterface@{$\sim$wxAutoOleInterface}}
{\bf $\sim$wx\-Auto\-Ole\-Interface} ()\label{classwxAutoOleInterface_a7}
\begin{CompactList}\small\item\em invokes {\bf Free()}\item\end{CompactList}\item
\index{Free@{Free}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!Free@{Free}}
void {\bf Free} ()\label{classwxAutoOleInterface_a8}
\begin{CompactList}\small\item\em Releases interface (i.e decrements ref\-Count).\item\end{CompactList}\item
\index{QueryInterface@{QueryInterface}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!QueryInterface@{QueryInterface}}
HRESULT {\bf Query\-Interface} (REFIID riid, IUnknown $\ast$p\-Unk)\label{classwxAutoOleInterface_a9}
\begin{CompactList}\small\item\em queries for an interface\item\end{CompactList}\item
\index{CreateInstance@{CreateInstance}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!CreateInstance@{CreateInstance}}
HRESULT {\bf Create\-Instance} (REFCLSID clsid, REFIID riid)\label{classwxAutoOleInterface_a10}
\begin{CompactList}\small\item\em Create a Interface instance.\item\end{CompactList}\item
\index{operator I *@{operator I $\ast$}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!operator I *@{operator I $\ast$}}
{\bf operator I $\ast$} () const\label{classwxAutoOleInterface_a11}
\begin{CompactList}\small\item\em returns the interface pointer\item\end{CompactList}\item
\index{operator->@{operator-$>$}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!operator->@{operator-$>$}}
I $\ast$ {\bf operator $\rightarrow$ } ()\label{classwxAutoOleInterface_a12}
\begin{CompactList}\small\item\em returns the dereferenced interface pointer\item\end{CompactList}\item
\index{GetRef@{GetRef}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!GetRef@{GetRef}}
I $\ast$$\ast$ {\bf Get\-Ref} ()\label{classwxAutoOleInterface_a13}
\begin{CompactList}\small\item\em returns a pointer to the interface pointer\item\end{CompactList}\item
\index{Ok@{Ok}!wxAutoOleInterface@{wxAutoOleInterface}}\index{wxAutoOleInterface@{wxAutoOleInterface}!Ok@{Ok}}
bool {\bf Ok} () const\label{classwxAutoOleInterface_a14}
\begin{CompactList}\small\item\em returns true if we have a valid interface pointer\item\end{CompactList}\end{CompactItemize}
The documentation for this class was generated from the following file:\begin{CompactItemize}
\item
{\bf wxactivex.h}\end{CompactItemize}

View File

@@ -0,0 +1,65 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{doxygen}
\RequirePackage{calc}
\RequirePackage{array}
\pagestyle{fancyplain}
\addtolength{\headwidth}{\marginparsep}
\addtolength{\headwidth}{\marginparwidth}
\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
\lhead[\fancyplain{}{\bfseries\thepage}]
{\fancyplain{}{\bfseries\rightmark}}
\rhead[\fancyplain{}{\bfseries\leftmark}]
{\fancyplain{}{\bfseries\thepage}}
\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Tue Apr 1 14:51:12 2003 for wx\-Active\-X by Doxygen }]{}
\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Tue Apr 1 14:51:12 2003 for wx\-Active\-X by Doxygen }}
\cfoot{}
\newenvironment{CompactList}
{\begin{list}{}{
\setlength{\leftmargin}{0.5cm}
\setlength{\itemsep}{0pt}
\setlength{\parsep}{0pt}
\setlength{\topsep}{0pt}
\renewcommand{\makelabel}{}}}
{\end{list}}
\newenvironment{CompactItemize}
{
\begin{itemize}
\setlength{\itemsep}{-3pt}
\setlength{\parsep}{0pt}
\setlength{\topsep}{0pt}
\setlength{\partopsep}{0pt}
}
{\end{itemize}}
\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}
\newlength{\tmplength}
\newenvironment{TabularC}[1]
{
\setlength{\tmplength}
{\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}
\par\begin{tabular*}{\linewidth}
{*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}
}
{\end{tabular*}\par}
\newcommand{\entrylabel}[1]{
{\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\\}}}
\newenvironment{Desc}
{\begin{list}{}
{
\settowidth{\labelwidth}{40pt}
\setlength{\leftmargin}{\labelwidth}
\setlength{\parsep}{0pt}
\setlength{\itemsep}{-4pt}
\renewcommand{\makelabel}{\entrylabel}
}
}
{\end{list}}
\newenvironment{Indent}
{\begin{list}{}{\setlength{\leftmargin}{0.5cm}}
\item[]\ignorespaces}
{\unskip\end{list}}
\setlength{\parindent}{0cm}
\setlength{\parskip}{0.2cm}
\addtocounter{secnumdepth}{1}
\sloppy

View File

@@ -0,0 +1,5 @@
\section{wx\-Active\-X File List}
Here is a list of all documented files with brief descriptions:\begin{CompactList}
\item\contentsline{section}{{\bf iehtmlwin.h} (Implements wx\-IEHtml\-Win window class)}{\pageref{iehtmlwin_8h}}{}
\item\contentsline{section}{{\bf wxactivex.h} (Implements {\bf wx\-Active\-X} window class and OLE tools)}{\pageref{wxactivex_8h}}{}
\end{CompactList}

View File

@@ -0,0 +1,9 @@
\section{wx\-Active\-X Class Hierarchy}
This inheritance list is sorted roughly, but not completely, alphabetically:\begin{CompactList}
\item \contentsline{section}{NS\_\-wx\-Active\-X::less\_\-wx\-String\-I}{\pageref{structNS__wxActiveX_1_1less__wxStringI}}{}
\item \contentsline{section}{wx\-Active\-X}{\pageref{classwxActiveX}}{}
\item \contentsline{section}{wx\-Active\-X::Func\-X}{\pageref{classwxActiveX_1_1FuncX}}{}
\item \contentsline{section}{wx\-Active\-X::Param\-X}{\pageref{classwxActiveX_1_1ParamX}}{}
\item \contentsline{section}{wx\-Active\-X::Prop\-X}{\pageref{classwxActiveX_1_1PropX}}{}
\item \contentsline{section}{wx\-Auto\-Ole\-Interface$<$ I $>$}{\pageref{classwxAutoOleInterface}}{}
\end{CompactList}

View File

@@ -0,0 +1,16 @@
\section{iehtmlwin.h File Reference}
\label{iehtmlwin_8h}\index{iehtmlwin.h@{iehtmlwin.h}}
\subsection{Detailed Description}
implements wx\-IEHtml\-Win window class
Definition in file {\bf iehtmlwin.h}.
{\tt \#include $<$wx/setup.h$>$}\par
{\tt \#include $<$wx/wx.h$>$}\par
{\tt \#include $<$exdisp.h$>$}\par
{\tt \#include $<$iostream$>$}\par
{\tt \#include \char`\"{}wxactivex.h\char`\"{}}\par

View File

@@ -0,0 +1,14 @@
\section{NS\_\-wx\-Active\-X Namespace Reference}
\label{namespaceNS__wxActiveX}\index{NS_wxActiveX@{NS\_\-wxActiveX}}
\subsection{Detailed Description}
{\bf wx\-Active\-X} Namespace for stuff I want to keep out of other tools way.
\subsection*{Data Structures}
\begin{CompactItemize}
\item
struct {\bf less\_\-wx\-String\-I}
\begin{CompactList}\small\item\em STL utilty class.\item\end{CompactList}\end{CompactItemize}

View File

@@ -0,0 +1,4 @@
\section{wx\-Active\-X Namespace List}
Here is a list of all documented namespaces with brief descriptions:\begin{CompactList}
\item\contentsline{section}{{\bf NS\_\-wx\-Active\-X} (Wx\-Active\-X Namespace for stuff I want to keep out of other tools way)}{\pageref{namespaceNS__wxActiveX}}{}
\end{CompactList}

View File

@@ -0,0 +1,51 @@
\documentclass[a4paper]{book}
\usepackage{a4wide}
\usepackage{makeidx}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{float}
\usepackage{textcomp}
\usepackage{alltt}
\usepackage{doxygen}
\makeindex
\setcounter{tocdepth}{1}
\setlength{\footrulewidth}{0.4pt}
\begin{document}
\begin{titlepage}
\vspace*{7cm}
\begin{center}
{\Large wx\-Active\-X Reference Manual}\\
\vspace*{1cm}
{\large Generated by Doxygen 1.3-rc3}\\
\vspace*{0.5cm}
{\small Tue Apr 1 14:51:12 2003}\\
\end{center}
\end{titlepage}
\clearemptydoublepage
\pagenumbering{roman}
\tableofcontents
\clearemptydoublepage
\pagenumbering{arabic}
\chapter{wx\-Active\-X Namespace Index}
\input{namespaces}
\chapter{wx\-Active\-X Hierarchical Index}
\input{hierarchy}
\chapter{wx\-Active\-X Data Structure Index}
\input{annotated}
\chapter{wx\-Active\-X File Index}
\input{files}
\chapter{wx\-Active\-X Namespace Documentation}
\input{namespaceNS__wxActiveX}
\chapter{wx\-Active\-X Data Structure Documentation}
\input{structNS__wxActiveX_1_1less__wxStringI}
\include{classwxActiveX}
\include{classwxActiveX_1_1FuncX}
\include{classwxActiveX_1_1ParamX}
\include{classwxActiveX_1_1PropX}
\include{classwxAutoOleInterface}
\chapter{wx\-Active\-X File Documentation}
\input{iehtmlwin_8h}
\include{wxactivex_8h}
\printindex
\end{document}

View File

@@ -0,0 +1,18 @@
\section{NS\_\-wx\-Active\-X::less\_\-wx\-String\-I Struct Reference}
\label{structNS__wxActiveX_1_1less__wxStringI}\index{NS_wxActiveX::less_wxStringI@{NS\_\-wxActiveX::less\_\-wxStringI}}
{\tt \#include $<$wxactivex.h$>$}
\subsection{Detailed Description}
STL utilty class.
specific to {\bf wx\-Active\-X}, for creating case insenstive maps etc
Definition at line 29 of file wxactivex.h.
The documentation for this struct was generated from the following file:\begin{CompactItemize}
\item
{\bf wxactivex.h}\end{CompactItemize}

View File

@@ -0,0 +1,139 @@
\section{wxactivex.h File Reference}
\label{wxactivex_8h}\index{wxactivex.h@{wxactivex.h}}
\subsection{Detailed Description}
implements {\bf wx\-Active\-X} window class and OLE tools
Definition in file {\bf wxactivex.h}.
{\tt \#include $<$wx/setup.h$>$}\par
{\tt \#include $<$wx/wx.h$>$}\par
{\tt \#include $<$wx/variant.h$>$}\par
{\tt \#include $<$wx/datetime.h$>$}\par
{\tt \#include $<$oleidl.h$>$}\par
{\tt \#include $<$exdisp.h$>$}\par
{\tt \#include $<$docobj.h$>$}\par
{\tt \#include $<$iostream$>$}\par
{\tt \#include $<$vector$>$}\par
{\tt \#include $<$map$>$}\par
\subsection*{Namespaces}
\begin{CompactItemize}
\item
namespace {\bf NS\_\-wx\-Active\-X}
\item
namespace {\bf std}
\end{CompactItemize}
\subsection*{Data Structures}
\begin{CompactItemize}
\item
class {\bf wx\-Auto\-Ole\-Interface}
\begin{CompactList}\small\item\em Template class for smart interface handling.\item\end{CompactList}\item
class {\bf wx\-Active\-X}
\begin{CompactList}\small\item\em Main class for embedding a Active\-X control.\item\end{CompactList}\item
class {\bf Param\-X}
\begin{CompactList}\small\item\em General parameter and return type infoformation for Events, Properties and Methods.\item\end{CompactList}\item
class {\bf Func\-X}
\begin{CompactList}\small\item\em Type \& Parameter info for Events and Methods.\item\end{CompactList}\item
class {\bf Prop\-X}
\begin{CompactList}\small\item\em Type info for properties.\item\end{CompactList}\end{CompactItemize}
\subsection*{Defines}
\begin{CompactItemize}
\item
\index{EVT_ACTIVEX@{EVT\_\-ACTIVEX}!wxactivex.h@{wxactivex.h}}\index{wxactivex.h@{wxactivex.h}!EVT_ACTIVEX@{EVT\_\-ACTIVEX}}
\#define {\bf EVT\_\-ACTIVEX}(id, event\-Name, fn)\ DECLARE\_\-EVENT\_\-TABLE\_\-ENTRY(Register\-Active\-XEvent(wx\-T(event\-Name)), id, -1, (wx\-Object\-Event\-Function) (wx\-Event\-Function) (wx\-Active\-XEvent\-Function) \& fn, (wx\-Object $\ast$) NULL ),\label{wxactivex_8h_a10}
\begin{CompactList}\small\item\em Event handle for events by name.\item\end{CompactList}\item
\index{EVT_ACTIVEX_DISPID@{EVT\_\-ACTIVEX\_\-DISPID}!wxactivex.h@{wxactivex.h}}\index{wxactivex.h@{wxactivex.h}!EVT_ACTIVEX_DISPID@{EVT\_\-ACTIVEX\_\-DISPID}}
\#define {\bf EVT\_\-ACTIVEX\_\-DISPID}(id, event\-Disp\-Id, fn)\ DECLARE\_\-EVENT\_\-TABLE\_\-ENTRY(Register\-Active\-XEvent(event\-Disp\-Id), id, -1, (wx\-Object\-Event\-Function) (wx\-Event\-Function) (wx\-Active\-XEvent\-Function) \& fn, (wx\-Object $\ast$) NULL ),\label{wxactivex_8h_a11}
\begin{CompactList}\small\item\em Event handle for events by DISPID (dispath id).\item\end{CompactList}\end{CompactItemize}
\subsection*{Functions}
\begin{CompactItemize}
\item
\index{OLEHResultToString@{OLEHResultToString}!wxactivex.h@{wxactivex.h}}\index{wxactivex.h@{wxactivex.h}!OLEHResultToString@{OLEHResultToString}}
wx\-String {\bf OLEHResult\-To\-String} (HRESULT hr)\label{wxactivex_8h_a13}
\begin{CompactList}\small\item\em Converts a std HRESULT to its error code. Hardcoded, by no means a definitive list.\item\end{CompactList}\item
\index{GetIIDName@{GetIIDName}!wxactivex.h@{wxactivex.h}}\index{wxactivex.h@{wxactivex.h}!GetIIDName@{GetIIDName}}
wx\-String {\bf Get\-IIDName} (REFIID riid)\label{wxactivex_8h_a14}
\begin{CompactList}\small\item\em Returns the string description of a IID. Hardcoded, by no means a definitive list.\item\end{CompactList}\end{CompactItemize}
\subsection{Define Documentation}
\index{wxactivex.h@{wxactivex.h}!DECLARE_OLE_UNKNOWN@{DECLARE\_\-OLE\_\-UNKNOWN}}
\index{DECLARE_OLE_UNKNOWN@{DECLARE\_\-OLE\_\-UNKNOWN}!wxactivex.h@{wxactivex.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define DECLARE\_\-OLE\_\-UNKNOWN(cls)}\label{wxactivex_8h_a3}
{\bf Value:}
\footnotesize\begin{verbatim}private:\
class TAutoInitInt\
{\
public:\
LONG l;\
TAutoInitInt() : l(0) {}\
};\
TAutoInitInt refCount, lockCount;\
wxOleInit oleInit;\
static void _GetInterface(cls *self, REFIID iid, void **_interface, const char *&desc);\
public:\
LONG GetRefCount();\
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void ** ppvObject);\
ULONG STDMETHODCALLTYPE AddRef();\
ULONG STDMETHODCALLTYPE Release();\
ULONG STDMETHODCALLTYPE AddLock();\
ULONG STDMETHODCALLTYPE ReleaseLock()
\end{verbatim}\normalsize
Definition at line 184 of file wxactivex.h.\index{wxactivex.h@{wxactivex.h}!DEFINE_OLE_BASE@{DEFINE\_\-OLE\_\-BASE}}
\index{DEFINE_OLE_BASE@{DEFINE\_\-OLE\_\-BASE}!wxactivex.h@{wxactivex.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define DEFINE\_\-OLE\_\-BASE(cls)}\label{wxactivex_8h_a5}
{\bf Value:}
\footnotesize\begin{verbatim}void cls::_GetInterface(cls *self, REFIID iid, void **_interface, const char *&desc)\
{\
*_interface = NULL;\
desc = NULL;
\end{verbatim}\normalsize
Definition at line 264 of file wxactivex.h.\index{wxactivex.h@{wxactivex.h}!OLE_INTERFACE@{OLE\_\-INTERFACE}}
\index{OLE_INTERFACE@{OLE\_\-INTERFACE}!wxactivex.h@{wxactivex.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define OLE\_\-INTERFACE(\_\-iid, \_\-type)}\label{wxactivex_8h_a6}
{\bf Value:}
\footnotesize\begin{verbatim}if (IsEqualIID(iid, _iid))\
{\
WXOLE_TRACE("Found Interface <" # _type ">");\
*_interface = (IUnknown *) (_type *) self;\
desc = # _iid;\
return;\
}
\end{verbatim}\normalsize
Definition at line 270 of file wxactivex.h.\index{wxactivex.h@{wxactivex.h}!OLE_INTERFACE_CUSTOM@{OLE\_\-INTERFACE\_\-CUSTOM}}
\index{OLE_INTERFACE_CUSTOM@{OLE\_\-INTERFACE\_\-CUSTOM}!wxactivex.h@{wxactivex.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}\#define OLE\_\-INTERFACE\_\-CUSTOM(func)}\label{wxactivex_8h_a8}
{\bf Value:}
\footnotesize\begin{verbatim}if (func(self, iid, _interface, desc))\
{\
return;\
}
\end{verbatim}\normalsize
Definition at line 281 of file wxactivex.h.

View File

@@ -0,0 +1,53 @@
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.

View File

@@ -0,0 +1,24 @@
CC = gcc
PROGRAM = wxIE
CFLAGS = -I/m/snowball/icicle/gswd/devenv/include -D__WXMOTIF__
LFLAGS = -L/m/snowball/icicle/devenv/lib
# implementation
.SUFFIXES: .o .cpp
SOURCES:sh= /bin/ls *.cpp
OBJECTS = $(SOURCES:.cpp=.o)
.cpp.o :
$(CC) -c $(CFLAGS) `wx-config --cflags` -o $@ $<
$(PROGRAM): $(OBJECTS)
$(CC) -o $(PROGRAM) $(OBJECTS) $(LFLAGS) `wx-config --libs`
clean:
rm -f *.o $(PROGRAM)

View File

@@ -0,0 +1,24 @@
CC = gcc
PROGRAM = wxIE
CFLAGS = -I/m/snowball/icicle/gswd/devenv/include -D__WXGTK__
LFLAGS = -L/m/snowball/icicle/devenv/lib
# implementation
.SUFFIXES: .o .cpp
SOURCES:sh= /bin/ls *.cpp
OBJECTS = $(SOURCES:.cpp=.o)
.cpp.o :
$(CC) -c $(CFLAGS) `wx-config --cflags` -o $@ $<
$(PROGRAM): $(OBJECTS)
$(CC) -o $(PROGRAM) $(OBJECTS) $(LFLAGS) `wx-config --libs`
clean:
rm -f *.o $(PROGRAM)

View File

@@ -0,0 +1,24 @@
CC = gcc
PROGRAM = wxIE
CFLAGS = -I/m/snowball/icicle/gswd/devenv/include -D__WXMOTIF__
LFLAGS = -L/m/snowball/icicle/devenv/lib
# implementation
.SUFFIXES: .o .cpp
SOURCES:sh= /bin/ls *.cpp
OBJECTS = $(SOURCES:.cpp=.o)
.cpp.o :
$(CC) -c $(CFLAGS) `wx-config --cflags` -o $@ $<
$(PROGRAM): $(OBJECTS)
$(CC) -o $(PROGRAM) $(OBJECTS) $(LFLAGS) `wx-config --libs`
clean:
rm -f *.o $(PROGRAM)

View File

@@ -0,0 +1,2 @@
Flash needs the following GUID for its event interface
{D27CDB6D-AE6D-11CF-96B8-444553540000}

View File

@@ -0,0 +1,149 @@
Lindsay Mathieson
Email : <lmathieson@optusnet.com.au>
This is prelimanary stuff - the controls need extra methods and events etc,
feel free to email with suggestions &/or patches.
Tested with wxWindows 2.3.2.
Built with MS Visual C++ 6.0 & DevStudio
Minor use of templates and STL
-----------------------------------------------------------
This sample illustrates using wxActiveX and wxIEHtmlWin too:
1. Host an arbitrary ActiveX control
1.1 - Capture and logging of all events from control
2. Specifically host the MSHTML Control
wxActiveX:
==========
wxActiveX is used to host and siplay any activeX control, all the wxWindows developer
needs to know is either the ProgID or CLSID of the control in question.
Derived From:
- wxWindow
Include Files:
- wxactivex.h
Source Files:
- wxactivex.cpp
Event Handling:
---------------
- EVT_ACTIVEX(id, eventName, handler) (handler = void OnActiveX(wxActiveXEvent& event))
- EVT_ACTIVEX_DISPID(id, eventDispId, handler) (handler = void OnActiveX(wxActiveXEvent& event))
class wxActiveXEvent : public wxNotifyEvent
wxString EventName();
int ParamCount() const;
wxString ParamType(int idx);
wxString ParamName(int idx);
wxVariant operator[] (int idx) const; // parameter by index
wxVariant& operator[] (int idx);
wxVariant operator[] (wxString name) const; // named parameters
wxVariant& operator[] (wxString name);
Members:
--------
wxActiveX::wxActiveX(wxWindow * parent, REFCLSID clsid, wxWindowID id = -1);
- Creates a activeX control identified by clsid
e.g
wxFrame *frame = new wxFrame(this, -1, "test");
wxActiveX *X = new wxActiveX(frame, CLSID_WebBrowser);
wxActiveX::wxActiveX(wxWindow * parent, wxString progId, wxWindowID id = -1);
- Creates a activeX control identified by progId
e.g.
wxFrame *frame = new wxFrame(this, -1, "test");
wxActiveX *X = new wxActiveX(frame, "MSCAL.Calendar");
wxActiveX::~wxActiveX();
- Destroys the control
- disconnects all connection points
- int GetEventCount() const;
Number of events generated by control
- const FuncX& GetEvent(int idx) const;
Names, Params and Typeinfo for events
HRESULT wxActiveX::ConnectAdvise(REFIID riid, IUnknown *eventSink);
- Connects a event sink. Connections are automaticlly diconnected in the destructor
e.g.
FS_DWebBrowserEvents2 *events = new FS_DWebBrowserEvents2(iecontrol);
hret = iecontrol->ConnectAdvise(DIID_DWebBrowserEvents2, events);
if (! SUCCEEDED(hret))
delete events;
Sample Events:
--------------
EVT_ACTIVEX(ID_MSHTML, "BeforeNavigate2", OnMSHTMLBeforeNavigate2X)
void wxIEFrame::OnMSHTMLBeforeNavigate2X(wxActiveXEvent& event)
{
wxString url = event["Url"];
int rc = wxMessageBox(url, "Allow open url ?", wxYES_NO);
if (rc != wxYES)
event["Cancel"] = true;
};
wxIEHtmlWin:
============
wxIEHtmlWin is a specialisation of the wxActiveX control for hosting the MSHTML control.
Derived From:
- wxActiveX
- wxWindow
Event Handling:
---------------
- see wxActiveX
Members:
--------
wxIEHtmlWin::wxIEHtmlWin(wxWindow * parent, wxWindowID id = -1);
- Constructs and initialises the MSHTML control
- LoadUrl("about:blank") is called
wxIEHtmlWin::~wxIEHtmlWin();
- destroys the control
void wxIEHtmlWin::LoadUrl(const wxString&);
- Attempts to browse to the url, the control uses its internal (MS)
network streams
bool wxIEHtmlWin::LoadString(wxString html);
- Load the passed HTML string
bool wxIEHtmlWin::LoadStream(istream *strm);
- load the passed HTML stream. The control takes ownership of
the pointer, deleting when finished.
bool wxIEHtmlWin::LoadStream(wxInputStream *is);
- load the passed HTML stream. The control takes ownership of
the pointer, deleting when finished.
void wxIEHtmlWin::SetCharset(wxString charset);
- Sets the charset of the loaded document
void wxIEHtmlWin::SetEditMode(bool seton);
- Sets edit mode.
NOTE: This does work, but is bare bones - we need more events exposed before
this is usable as an HTML editor.
bool wxIEHtmlWin::GetEditMode();
- Returns the edit mode setting
wxString wxIEHtmlWin::GetStringSelection(bool asHTML = false);
- Returns the currently selected text (plain or HTML text)
wxString GetText(bool asHTML = false);
- Returns the body text (plain or HTML text)
Lindsay Mathieson
Email : <lmathieson@optusnet.com.au>

View File

@@ -0,0 +1,70 @@
/*
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
*/
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by wxIE.rc
//
#define DUMMY 4
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@@ -0,0 +1,284 @@
/*
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
*/
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
// For compilers that support precompilation, includes "wx/wx.h".
#if defined(__WXGTK__) || defined(__WXMOTIF__)
#include "wx/wx.h"
#endif
#include "wx/wxprec.h"
#include "wx/filedlg.h"
#include "wx/textdlg.h"
#include "wxActiveXFrame.h"
#include <sstream>
using namespace std;
#include "wx/splitter.h"
#include "wx/textctrl.h"
#include "wx/clipbrd.h"
#include <wx/msgdlg.h>
enum
{
// menu items
MENU_GETTYPEINFO = 700,
MENU_INVOKEMETHOD,
MENU_TEST
};
BEGIN_EVENT_TABLE(wxActiveXFrame, wxFrame)
EVT_MENU(MENU_GETTYPEINFO, wxActiveXFrame::OnGetTypeInfo)
EVT_MENU(MENU_INVOKEMETHOD, wxActiveXFrame::OnInvokeMethod)
EVT_MENU(MENU_TEST, wxActiveXFrame::OnTest)
END_EVENT_TABLE()
wxActiveXFrame::wxActiveXFrame(wxWindow *parent, wxString title) :
wxFrame(parent, -1, title)
{
// create a menu bar
wxMenu *xMenu = new wxMenu("", wxMENU_TEAROFF);
xMenu->Append(MENU_GETTYPEINFO, "Get Type Info", "");
xMenu->Append(MENU_INVOKEMETHOD, "Invoke Method (no params)", "");
xMenu->Append(MENU_TEST, "Test", "For debugging purposes");
// now append the freshly created menu to the menu bar...
wxMenuBar *menuBar = new wxMenuBar();
menuBar->Append(xMenu, "&ActiveX");
// ... and attach this menu bar to the frame
SetMenuBar(menuBar);
wxSplitterWindow *sp = new wxSplitterWindow(this);
X = new wxActiveX(sp, title, 101);
textLog = new wxTextCtrl(sp, -1, "", wxPoint(0,0), wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY);
sp->SplitHorizontally(X, textLog, 0);
// conenct all events
for (int i = 0; i < X->GetEventCount(); i++)
{
const wxActiveX::FuncX& func = X->GetEventDesc(i);
const wxEventType& ev = RegisterActiveXEvent((DISPID) func.memid);
Connect(101, ev, (wxObjectEventFunction) OnActiveXEvent);
};
}
wxString VarTypeAsString(VARTYPE vt)
{
#define VT(vtype, desc) case vtype : return desc
if (vt & VT_BYREF)
vt -= VT_BYREF;
if (vt & VT_ARRAY)
vt -= VT_ARRAY;
switch (vt)
{
VT(VT_SAFEARRAY, "SafeArray");
VT(VT_EMPTY, "empty");
VT(VT_NULL, "null");
VT(VT_UI1, "byte");
VT(VT_I1, "char");
VT(VT_I2, "short");
VT(VT_I4, "long");
VT(VT_UI2, "unsigned short");
VT(VT_UI4, "unsigned long");
VT(VT_INT, "int");
VT(VT_UINT, "unsigned int");
VT(VT_R4, "real(4)");
VT(VT_R8, "real(8)");
VT(VT_CY, "Currency");
VT(VT_DATE, "wxDate");
VT(VT_BSTR, "wxString");
VT(VT_DISPATCH, "IDispatch");
VT(VT_ERROR, "SCode Error");
VT(VT_BOOL, "bool");
VT(VT_VARIANT, "wxVariant");
VT(VT_UNKNOWN, "IUknown");
VT(VT_VOID, "void");
VT(VT_PTR, "void *");
VT(VT_USERDEFINED, "*user defined*");
default:
{
wxString s;
s << "Unknown(" << vt << ")";
return s;
};
};
#undef VT
};
#define ENDL "\r\n"
void OutFunc(wxString& os, const wxActiveX::FuncX& func)
{
os << VarTypeAsString(func.retType.vt) << " " << func.name << "(";
for (unsigned int p = 0; p < func.params.size(); p++)
{
const wxActiveX::ParamX& param = func.params[p];
if (param.IsIn() && param.IsOut())
os << "[IN OUT] ";
else if (param.IsIn())
os << "[IN] ";
else if (param.IsIn())
os << "[OUT] ";
os << VarTypeAsString(param.vt) << " " << (param.isPtr ? "*" : "") << param.name;
if (p < func.params.size() - 1)
os << ", ";
};
os << ")" << ENDL;
};
void wxActiveXFrame::OnGetTypeInfo(wxCommandEvent& event)
{
wxString os;
int i =0;
os <<
"Props" << ENDL <<
"=====" << ENDL;
for (i = 0; i < X->GetPropCount(); i++)
{
wxActiveX::PropX prop = X->GetPropDesc(i);
os << VarTypeAsString(prop.type.vt) << " " << prop.name << "(";
if (prop.CanSet())
{
os << VarTypeAsString(prop.arg.vt);
};
os << ")" << ENDL;
};
os << ENDL;
os <<
"Events" << ENDL <<
"======" << ENDL;
for (i = 0; i < X->GetEventCount(); i++)
OutFunc(os, X->GetEventDesc(i));
os << ENDL;
os <<
"Methods" << ENDL <<
"=======" << ENDL;
for (i = 0; i < X->GetMethodCount(); i++)
OutFunc(os, X->GetMethodDesc(i));
os << ENDL;
if (wxTheClipboard->Open())
{
wxDataObjectSimple *wo = new wxTextDataObject(os);
wxTheClipboard->SetData(wo);
wxTheClipboard->Flush();
wxTheClipboard->Close();
};
wxMessageBox(os, "Type Info", wxOK, this);
};
void wxActiveXFrame::OnInvokeMethod(wxCommandEvent& event)
{
//wxTextEntryDialog dlg(this, "Method");
//if (dlg.ShowModal() == wxID_OK)
// X->CallMethod(dlg.GetValue());
};
void wxActiveXFrame::OnTest(wxCommandEvent& event)
{
// flash testing
wxVariant args[] = {0L, "http://www.macromedia.com/support/flash/ts/documents/java_script_comm/flash_to_javascript.swf"};
X->CallMethod("LoadMovie", args);
//X->Prop("Movie") = "http://www.macromedia.com/support/flash/ts/documents/java_script_comm/flash_to_javascript.swf";
// mc cal testing
//X->Prop("year") = 1964L;
//X->Prop("Value") = wxDateTime::Now();
// pdf testing
//wxVariant file = "C:\\WINNT\\wx2\\docs\\pdf\\dialoged.pdf";
//X->CallMethod("LoadFile", &file);
};
void wxActiveXFrame::OnActiveXEvent(wxActiveXEvent& event)
{
#ifdef UNICODE
wostringstream os;
#else
ostringstream os;
#endif
os << (const wxChar *) event.EventName() << wxT("(");
for (int p = 0; p < event.ParamCount(); p++)
{
os <<
(const wxChar *) event.ParamType(p) << wxT(" ") <<
(const wxChar *) event.ParamName(p) << wxT(" = ") <<
(const wxChar *) (wxString) event[p];
if (p < event.ParamCount() - 1)
os << wxT(", ");
};
os << wxT(")") << endl;
wxString data = os.str().c_str();
textLog->AppendText(data);
};

View File

@@ -0,0 +1,77 @@
/*
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
*/
#ifndef wxActiveXFrame_h
#define wxActiveXFrame_h
#include "wxactivex.h"
class wxActiveXFrame : public wxFrame
{
public:
wxActiveX *X;
wxTextCtrl *textLog;
wxActiveXFrame(wxWindow *parent, wxString title);
DECLARE_EVENT_TABLE()
void OnGetTypeInfo(wxCommandEvent& event);
void OnInvokeMethod(wxCommandEvent& event);
void OnTest(wxCommandEvent& event);
void OnActiveXEvent(wxActiveXEvent& event);
};
#endif

View File

@@ -0,0 +1,404 @@
# Microsoft Developer Studio Project File - Name="wxIE" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=wxIE - Win32 Unicode Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "wxIE.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "wxIE.mak" CFG="wxIE - Win32 Unicode Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "wxIE - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "wxIE - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "wxIE - Win32 Unicode Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "wxIE - Win32 Unicode Release" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "wxIE - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "$(WXWIN)\include" /I "$(WXWIN)\contrib\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /YX /FD /c
# ADD BASE RSC /l 0xc09 /d "NDEBUG"
# ADD RSC /l 0xc09 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmsw.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /libpath:"$(WXWIN)\Lib" /libpath:"$(WXWIN)\contrib\Lib"
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "wxIE - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "$(WXWIN)\lib\vc_dll\mswd" /I "$(WXWIN)\include" /I "$(WXWIN)\contrib\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /GZ /c
# ADD BASE RSC /l 0xc09 /d "_DEBUG"
# ADD RSC /l 0xc09 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxbase25d.lib wxbase25d_net.lib wxbase25d_xml.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /pdbtype:sept /libpath:"$(WXWIN)\Lib" /libpath:"$(WXWIN)\lib\vc_dll" /libpath:"$(WXWIN)\contrib\Lib"
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "wxIE - Win32 Unicode Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "wxIE___Win32_Unicode_Debug"
# PROP BASE Intermediate_Dir "wxIE___Win32_Unicode_Debug"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "wxIE___Win32_Unicode_Debug"
# PROP Intermediate_Dir "wxIE___Win32_Unicode_Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "$(WXWIN)\include" /I "$(WXWIN)\contrib\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "$(WXWIN)\include" /I "$(WXWIN)\contrib\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D UNICODE=1 /Yu"wx/wxprec.h" /FD /GZ /c
# ADD BASE RSC /l 0xc09 /d "_DEBUG"
# ADD RSC /l 0xc09 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /out:"wxIE.exe" /pdbtype:sept /libpath:"$(WXWIN)\Lib" /libpath:"$(WXWIN)\contrib\Lib"
# SUBTRACT BASE LINK32 /pdb:none
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswud.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /out:"wxIE.exe" /pdbtype:sept /libpath:"$(WXWIN)\Lib" /libpath:"$(WXWIN)\contrib\Lib"
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "wxIE - Win32 Unicode Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "wxIE___Win32_Unicode_Release"
# PROP BASE Intermediate_Dir "wxIE___Win32_Unicode_Release"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "wxIE___Win32_Unicode_Release"
# PROP Intermediate_Dir "wxIE___Win32_Unicode_Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "$(WXWIN)\include" /I "$(WXWIN)\contrib\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "$(WXWIN)\include" /I "$(WXWIN)\contrib\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /YX /FD /c
# ADD BASE RSC /l 0xc09 /d "NDEBUG"
# ADD RSC /l 0xc09 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx.lib xpm.lib png.lib zlib.lib jpeg.lib tiff.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /out:"wxIE.exe"
# SUBTRACT BASE LINK32 /pdb:none
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxmswu.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /out:"wxIE.exe" /libpath:"$(WXWIN)\Lib" /libpath:"$(WXWIN)\contrib\Lib"
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "wxIE - Win32 Release"
# Name "wxIE - Win32 Debug"
# Name "wxIE - Win32 Unicode Debug"
# Name "wxIE - Win32 Unicode Release"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\IEHtmlWin.cpp
!IF "$(CFG)" == "wxIE - Win32 Release"
# SUBTRACT CPP /YX
!ELSEIF "$(CFG)" == "wxIE - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "wxIE - Win32 Unicode Debug"
# SUBTRACT BASE CPP /YX /Yc /Yu
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "wxIE - Win32 Unicode Release"
# SUBTRACT BASE CPP /YX
# SUBTRACT CPP /YX
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\wxactivex.cpp
!IF "$(CFG)" == "wxIE - Win32 Release"
!ELSEIF "$(CFG)" == "wxIE - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "wxIE - Win32 Unicode Debug"
# SUBTRACT BASE CPP /YX /Yc /Yu
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "wxIE - Win32 Unicode Release"
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\wxActiveXFrame.cpp
# End Source File
# Begin Source File
SOURCE=.\wxIE.rc
# End Source File
# Begin Source File
SOURCE=.\wxIEApp.cpp
# ADD CPP /Yc"wx/wxprec.h"
# End Source File
# Begin Source File
SOURCE=.\wxIEFrm.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\IEHtmlWin.h
# End Source File
# Begin Source File
SOURCE=.\resource.h
# End Source File
# Begin Source File
SOURCE=.\wxactivex.h
# End Source File
# Begin Source File
SOURCE=.\wxActiveXFrame.h
# End Source File
# Begin Source File
SOURCE=.\wxIEApp.h
# End Source File
# Begin Source File
SOURCE=.\wxIEFrm.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# Begin Source File
SOURCE=.\wx\msw\blank.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\bullseye.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\colours.bmp
# End Source File
# Begin Source File
SOURCE=.\wx\msw\cross.bmp
# End Source File
# Begin Source File
SOURCE=.\wx\msw\disable.bmp
# End Source File
# Begin Source File
SOURCE=.\wx\msw\error.ico
# End Source File
# Begin Source File
SOURCE=.\wx\msw\hand.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\info.ico
# End Source File
# Begin Source File
SOURCE=.\wx\msw\magnif1.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\noentry.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\pbrush.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\pencil.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\plot_dwn.bmp
# End Source File
# Begin Source File
SOURCE=.\wx\msw\plot_enl.bmp
# End Source File
# Begin Source File
SOURCE=.\wx\msw\plot_shr.bmp
# End Source File
# Begin Source File
SOURCE=.\wx\msw\plot_up.bmp
# End Source File
# Begin Source File
SOURCE=.\wx\msw\plot_zin.bmp
# End Source File
# Begin Source File
SOURCE=.\wx\msw\plot_zot.bmp
# End Source File
# Begin Source File
SOURCE=.\wx\msw\pntleft.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\pntright.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\query.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\question.ico
# End Source File
# Begin Source File
SOURCE=.\wx\msw\roller.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\size.cur
# End Source File
# Begin Source File
SOURCE=.\wx\msw\tick.bmp
# End Source File
# Begin Source File
SOURCE=.\wx\msw\tip.ico
# End Source File
# Begin Source File
SOURCE=.\wx\msw\warning.ico
# End Source File
# Begin Source File
SOURCE=.\wx\msw\watch1.cur
# End Source File
# Begin Source File
SOURCE=.\wxIE.ico
# End Source File
# End Group
# Begin Source File
SOURCE=.\default.doxygen
# End Source File
# Begin Source File
SOURCE=.\license.txt
# End Source File
# Begin Source File
SOURCE=.\makefile
# PROP Exclude_From_Scan -1
# PROP BASE Exclude_From_Build 1
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\makefile.gtk
# PROP Exclude_From_Scan -1
# PROP BASE Exclude_From_Build 1
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\makefile.mtf
# PROP Exclude_From_Scan -1
# PROP BASE Exclude_From_Build 1
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\notes.txt
# End Source File
# Begin Source File
SOURCE=.\readme.txt
# End Source File
# Begin Source File
SOURCE=.\wxIE.xpm
# PROP Exclude_From_Scan -1
# PROP BASE Exclude_From_Build 1
# PROP Exclude_From_Build 1
# End Source File
# End Target
# End Project

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

View File

@@ -0,0 +1,169 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
//#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
#include <winuser.rh>
#include <commctrl.rh>
#include <dde.rh>
#include <winnt.rh>
#include <dlgs.h>
#include <winver.h>
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
/*
WXDISABLE_BUTTON_BITMAP BITMAP MOVEABLE PURE "wx/msw/disable.bmp"
WXBITMAP_STD_COLOURS BITMAP MOVEABLE PURE "wx/msw/colours.bmp"
TICK_BMP BITMAP MOVEABLE PURE "wx/msw/tick.bmp"
PLOT_ZOT_BMP BITMAP MOVEABLE PURE "wx/msw/plot_zot.bmp"
PLOT_ZIN_BMP BITMAP MOVEABLE PURE "wx/msw/plot_zin.bmp"
PLOT_UP_BMP BITMAP MOVEABLE PURE "wx/msw/plot_up.bmp"
PLOT_SHR_BMP BITMAP MOVEABLE PURE "wx/msw/plot_shr.bmp"
PLOT_ENL_BMP BITMAP MOVEABLE PURE "wx/msw/plot_enl.bmp"
PLOT_DWN_BMP BITMAP MOVEABLE PURE "wx/msw/plot_dwn.bmp"
CROSS_BMP BITMAP MOVEABLE PURE "wx/msw/cross.bmp"
*/
/////////////////////////////////////////////////////////////////////////////
//
// Cursor
//
/*
WXCURSOR_WATCH CURSOR DISCARDABLE "wx\\msw\\watch1.cur"
WXCURSOR_SIZING CURSOR DISCARDABLE "wx/msw/size.cur"
WXCURSOR_ROLLER CURSOR DISCARDABLE "wx/msw/roller.cur"
WXCURSOR_QARROW CURSOR DISCARDABLE "wx/msw/query.cur"
WXCURSOR_PRIGHT CURSOR DISCARDABLE "wx/msw/pntright.cur"
WXCURSOR_PLEFT CURSOR DISCARDABLE "wx/msw/pntleft.cur"
WXCURSOR_PENCIL CURSOR DISCARDABLE "wx/msw/pencil.cur"
WXCURSOR_PBRUSH CURSOR DISCARDABLE "wx/msw/pbrush.cur"
WXCURSOR_NO_ENTRY CURSOR DISCARDABLE "wx/msw/noentry.cur"
WXCURSOR_MAGNIFIER CURSOR DISCARDABLE "wx/msw/magnif1.cur"
WXCURSOR_HAND CURSOR DISCARDABLE "wx/msw/hand.cur"
WXCURSOR_BULLSEYE CURSOR DISCARDABLE "wx/msw/bullseye.cur"
WXCURSOR_BLANK CURSOR DISCARDABLE "wx/msw/blank.cur"
*/
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
WXRESIZEABLEDIALOG DIALOG DISCARDABLE 34, 22, 144, 75
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
BEGIN
END
WXNOCAPTIONDIALOG DIALOG DISCARDABLE 34, 22, 144, 75
STYLE WS_POPUP
BEGIN
END
WXCAPTIONDIALOG DIALOG DISCARDABLE 34, 22, 144, 75
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dummy dialog"
BEGIN
END
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
WXIE ICON DISCARDABLE "wxIE.ico"
/*
WXICON_WARNING ICON DISCARDABLE "wx\\msw\\warning.ico"
WXICON_TIP ICON DISCARDABLE "wx/msw/tip.ico"
WXICON_QUESTION ICON DISCARDABLE "wx/msw/question.ico"
WXICON_INFO ICON DISCARDABLE "wx/msw/info.ico"
WXICON_ERROR ICON DISCARDABLE "wx/msw/error.ico"
*/
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
WXWINDOWMENU MENU DISCARDABLE
BEGIN
POPUP "&Window"
BEGIN
MENUITEM "&Cascade", 4002
MENUITEM "Tile &Horizontally", 4001
MENUITEM "Tile &Vertically", 4005
MENUITEM "", 65535
MENUITEM "&Arrange Icons", 4003
MENUITEM "&Next", 4004
END
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -0,0 +1,44 @@
/* XPM */
static char *wxIE_xpm[] = {
/* columns rows colors chars-per-pixel */
"32 32 6 1",
" c Black",
". c Blue",
"X c #00bf00",
"o c Red",
"O c Yellow",
"+ c Gray100",
/* pixels */
" ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" ",
" ++++++ ++++++++++++++++++ .... ",
" ++++++ ++++++++++++++++++ .... ",
" ++++++ ++++++++++++++++++ .... ",
" ++++++ ++++++++++++++++++ .... ",
" ++++++ ++++++++++++++++++ .... ",
" ++++++ ++++++++++++++++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" "
};

View File

@@ -0,0 +1,99 @@
/*
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
*/
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
// For compilers that support precompilation, includes "wx/wx.h".
#if defined(__WXGTK__) || defined(__WXMOTIF__)
#include "wx/wx.h"
#endif
#include "wx/wxprec.h"
#include "wxIEApp.h"
#include "wxIEFrm.h"
#include "resource.h"
// Create a new application object: this macro will allow wxWindows to create
// the application object during program execution (it's better than using a
// static object for many reasons) and also declares the accessor function
// wxGetApp() which will return the reference of the right type (i.e. wxIEApp and
// not wxApp)
IMPLEMENT_APP(wxIEApp)
// ============================================================================
// implementation
// ============================================================================
// ----------------------------------------------------------------------------
// the application class
// ----------------------------------------------------------------------------
// 'Main program' equivalent: the program execution "starts" here
bool wxIEApp::OnInit()
{
// create the main application window
wxIEFrame *frame = new wxIEFrame(wxT("IE Test"));
// and show it (the frames, unlike simple controls, are not shown when
// created initially)
frame->Show(TRUE);
// success: wxApp::OnRun() will be called which will enter the main message
// loop and the application will run. If we returned FALSE here, the
// application would exit immediately.
return TRUE;
}

View File

@@ -0,0 +1,66 @@
/*
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
*/
// Define a new application type, each program should derive a class from wxApp
class wxIEApp : public wxApp
{
public:
// override base class virtuals
// ----------------------------
// this one is called on application startup and is a good place for the app
// initialization (doing it here and not in the ctor allows to have an error
// return: if OnInit() returns false, the application terminates)
virtual bool OnInit();
};

View File

@@ -0,0 +1,381 @@
/*
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
*/
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
// For compilers that support precompilation, includes "wx/wx.h".
#if defined(__WXGTK__) || defined(__WXMOTIF__)
#include "wx/wx.h"
#endif
#include "wx/wxprec.h"
#include "wx/filedlg.h"
#include "wxIEApp.h"
#include "wxIEFrm.h"
#include "wxActiveXFrame.h"
#include <istream>
#include <fstream>
using namespace std;
#include <exdispid.h>
// ----------------------------------------------------------------------------
// resources
// ----------------------------------------------------------------------------
// the application icon
#if defined(__WXGTK__) || defined(__WXMOTIF__)
#include "wxIE.xpm"
#endif
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
// IDs for the controls and the menu commands
enum
{
// menu items
FILE_QUIT = 1,
FILE_OPEN,
FILE_BROWSE,
FILE_HTML_EDITMODE,
FILE_TEST_HTML,
FILE_TEST_SELECT,
FILE_TEST_HTMLSELECT,
FILE_TEST_GETTEXT,
FILE_TEST_HTMLGETTEXT,
FILE_TEST_HOME,
FILE_TEST_ACTIVEX,
FILE_ABOUT,
// controls
ID_MSHTML = 501,
ID_PROGRESS_GAUGE
};
// ----------------------------------------------------------------------------
// event tables and other macros for wxWindows
// ----------------------------------------------------------------------------
// the event tables connect the wxWindows events with the functions (event
// handlers) which process them. It can be also done at run-time, but for the
// simple menu events like this the static method is much simpler.
BEGIN_EVENT_TABLE(wxIEFrame, wxFrame)
EVT_SIZE(wxIEFrame::OnSize)
EVT_MENU(FILE_QUIT, wxIEFrame::OnQuit)
EVT_MENU(FILE_BROWSE, wxIEFrame::OnBrowse)
EVT_MENU(FILE_OPEN, wxIEFrame::OnOpen)
EVT_MENU(FILE_HTML_EDITMODE, wxIEFrame::OnEditMode)
EVT_UPDATE_UI(FILE_HTML_EDITMODE, wxIEFrame::OnEditModeUI)
EVT_MENU(FILE_TEST_HTML, wxIEFrame::OnTestHTML)
EVT_MENU(FILE_TEST_SELECT, wxIEFrame::OnTestSelect)
EVT_MENU(FILE_TEST_HTMLSELECT, wxIEFrame::OnTestHTMLSelect)
EVT_MENU(FILE_TEST_GETTEXT, wxIEFrame::OnTestGetText)
EVT_MENU(FILE_TEST_HTMLGETTEXT, wxIEFrame::OnTestHTMLGetText)
EVT_MENU(FILE_TEST_HOME, wxIEFrame::OnTestHome)
EVT_MENU(FILE_TEST_ACTIVEX, wxIEFrame::OnTestActiveX)
EVT_MENU(FILE_ABOUT, wxIEFrame::OnAbout)
// ActiveX Events
EVT_ACTIVEX_DISPID(ID_MSHTML, DISPID_STATUSTEXTCHANGE, OnMSHTMLStatusTextChangeX)
EVT_ACTIVEX(ID_MSHTML, "BeforeNavigate2", OnMSHTMLBeforeNavigate2X)
EVT_ACTIVEX(ID_MSHTML, "TitleChange", OnMSHTMLTitleChangeX)
EVT_ACTIVEX(ID_MSHTML, "NewWindow2", OnMSHTMLNewWindow2X)
EVT_ACTIVEX(ID_MSHTML, "ProgressChange", OnMSHTMLProgressChangeX)
END_EVENT_TABLE()
// ----------------------------------------------------------------------------
// main frame
// ----------------------------------------------------------------------------
// frame constructor
wxIEFrame::wxIEFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
: wxFrame((wxFrame *)NULL, -1, title, pos, size)
{
// set the frame icon
SetIcon(wxICON(wxIE));
// create a menu bar
wxMenu *menuFile = new wxMenu("", wxMENU_TEAROFF);
// the "About" item should be in the help menu
wxMenu *helpMenu = new wxMenu;
helpMenu->Append(FILE_ABOUT, "&About...\tCtrl-A", "Show about dialog");
menuFile->Append(FILE_TEST_HTML, "Test HTML", "Demonstrates LoadString()");
menuFile->Append(FILE_OPEN, "Open HTML File", "Demonstrates LoadStream(istream *)");
menuFile->Append(FILE_BROWSE, "Browse Web Page", "Demonstrates LoadUrl(url)");
menuFile->Append(FILE_HTML_EDITMODE, "Edit Mode", "Demonstrates editing html", true);
menuFile->AppendSeparator();
menuFile->Append(FILE_TEST_SELECT, "Get Selected Text", "Demonstrates GetStringSelection(false)");
menuFile->Append(FILE_TEST_HTMLSELECT, "Get HTML Selected Text", "Demonstrates GetStringSelection(true)");
menuFile->AppendSeparator();
menuFile->Append(FILE_TEST_GETTEXT, "Get Text", "Demonstrates GetText(false)");
menuFile->Append(FILE_TEST_HTMLGETTEXT, "Get HTML Text", "Demonstrates GetText(true)");
menuFile->Append(FILE_TEST_HOME, "Open Home Page", "Demonstrates GoHome()");
menuFile->AppendSeparator();
menuFile->Append(FILE_TEST_ACTIVEX, "Display a ActiveX control", "Demonstrates the Generic ActiveX Container");
menuFile->AppendSeparator();
menuFile->Append(FILE_QUIT, "E&xit\tAlt-X", "Quit this program");
// now append the freshly created menu to the menu bar...
wxMenuBar *menuBar = new wxMenuBar();
menuBar->Append(menuFile, "&File");
menuBar->Append(helpMenu, "&Help");
// ... and attach this menu bar to the frame
SetMenuBar(menuBar);
// create a status bar just for fun (by default with 1 pane only)
wxStatusBar * sb = CreateStatusBar(2);
SetStatusText("Ready");
// progress gauge (belongs to status bar)
m_gauge = new wxGauge(sb, ID_PROGRESS_GAUGE, 100);
// IE Control
m_ie = new wxIEHtmlWin(this, ID_MSHTML);
}
// event handlers
void wxIEFrame::OnSize(wxSizeEvent& event)
{
wxFrame::OnSize(event);
wxStatusBar* sb = GetStatusBar();
if (! sb)
return;
wxRect rc;
sb->GetFieldRect(1, rc);
m_gauge->SetSize(rc);
};
void wxIEFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
// TRUE is to force the frame to close
Close(TRUE);
}
void wxIEFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxString msg;
msg.Printf( _T("About wxIE...\n"));
wxMessageBox(msg, "About wxIE", wxOK | wxICON_INFORMATION, this);
}
void wxIEFrame::OnTestHTML(wxCommandEvent& WXUNUSED(event))
{
wxString html =
"<HTML><BODY><H1>Hello World</H1>Plain Text</body></html>";
m_ie->LoadString(html);
}
void wxIEFrame::OnTestSelect(wxCommandEvent& WXUNUSED(event))
{
wxString s = m_ie->GetStringSelection();
wxMessageBox(s);
}
void wxIEFrame::OnTestHTMLSelect(wxCommandEvent& WXUNUSED(event))
{
wxString s = m_ie->GetStringSelection(true);
wxMessageBox(s);
}
void wxIEFrame::OnTestGetText(wxCommandEvent& WXUNUSED(event))
{
wxString s = m_ie->GetText();
wxMessageBox(s);
}
void wxIEFrame::OnTestHTMLGetText(wxCommandEvent& WXUNUSED(event))
{
wxString s = m_ie->GetText(true);
wxMessageBox(s);
}
void wxIEFrame::OnTestHome(wxCommandEvent& WXUNUSED(event))
{
m_ie->GoHome();
};
void wxIEFrame::OnOpen(wxCommandEvent& WXUNUSED(event))
{
wxFileDialog dlg(this, "Chooose a HTML File", "", "", "HTML files (*.html; *.htm)|*.html;*.htm|",wxOPEN);
if (dlg.ShowModal() == wxID_OK)
{
wxString fname = dlg.GetPath();
ifstream *is = new ifstream(fname.mb_str());
m_ie->LoadStream(is);
};
}
void wxIEFrame::OnEditMode(wxCommandEvent& WXUNUSED(event))
{
m_ie->SetEditMode(! m_ie->GetEditMode());
}
void wxIEFrame::OnEditModeUI(wxUpdateUIEvent& event)
{
if (m_ie)
event.Check(m_ie->GetEditMode());
}
void wxIEFrame::OnBrowse(wxCommandEvent& WXUNUSED(event))
{
wxString url = wxGetTextFromUser("Enter URL:", "Browse", "", this);
m_ie->LoadUrl(url);
}
void wxIEFrame::OnMSHTMLStatusTextChangeX(wxActiveXEvent& event)
{
SetStatusText(event["Text"]);
};
void wxIEFrame::OnMSHTMLBeforeNavigate2X(wxActiveXEvent& event)
{
wxString url = event["Url"];
if (url == "about:blank")
return;
int rc = wxMessageBox(url, "Allow open url ?", wxYES_NO);
if (rc != wxYES)
event["Cancel"] = true;
};
void wxIEFrame::OnMSHTMLTitleChangeX(wxActiveXEvent& event)
{
SetTitle(event["Text"]);
};
void wxIEFrame::OnMSHTMLNewWindow2X(wxActiveXEvent& event)
{
int rc = wxMessageBox("New Window requested", "Allow New Window ?", wxYES_NO);
if (rc != wxYES)
event["Cancel"] = true;
};
void wxIEFrame::OnMSHTMLProgressChangeX(wxActiveXEvent& event)
{
if ((long) event["ProgressMax"] != m_gauge->GetRange())
m_gauge->SetRange((long) event["ProgressMax"]);
m_gauge->SetValue((long) event["Progress"]);
};
void wxIEFrame::OnTestActiveX(wxCommandEvent& WXUNUSED(event))
{
// Some known prog ids
//#define PROGID "Shell.Explorer"
//#define PROGID CLSID_WebBrowser
//#define PROGID CLSID_MozillaBrowser
//#define PROGID CLSID_HTMLDocument
//#define PROGID "MSCAL.Calendar"
//#define PROGID "WordPad.Document"
//#define PROGID "SoftwareFX.ChartFX"
//#define PROGID "PDF.PdfCtrl"
#define PROGID "ShockwaveFlash.ShockwaveFlash"
wxDialog dlg(this, -1, wxString(wxT("Test ActiveX")));
wxFlexGridSizer *sz = new wxFlexGridSizer(2);
sz->Add(new wxStaticText(&dlg, -1, wxT("Enter a ActiveX ProgId")), 0, wxALL, 5 );
wxComboBox *cb = new wxComboBox(&dlg, 101, "");
cb->Append(wxT("ShockwaveFlash.ShockwaveFlash"));
cb->Append(wxT("MSCAL.Calendar"));
cb->Append(wxT("Shell.Explorer"));
cb->Append(wxT("WordPad.Document.1"));
cb->Append(wxT("SoftwareFX.ChartFX.20"));
cb->Append(wxT("PDF.PdfCtrl.5"));
cb->SetSelection(0);
sz->Add(cb, 0, wxALL, 5 );
// next row
sz->Add(new wxButton(&dlg, wxID_CANCEL, "Cancel"), 0, wxALIGN_RIGHT|wxALL, 5 );
sz->Add(new wxButton(&dlg, wxID_OK, "Ok"), 0, wxALIGN_RIGHT|wxALL, 5 );
dlg.SetAutoLayout( TRUE );
dlg.SetSizer(sz);
sz->Fit(&dlg);
sz->SetSizeHints(&dlg);
if (dlg.ShowModal() == wxID_OK)
{
wxString progId = cb->GetValue();
wxActiveXFrame *frame = new wxActiveXFrame(this, progId);
frame->Show();
};
}

View File

@@ -0,0 +1,95 @@
/*
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
*/
#include "IEHtmlWin.h"
#include "wx/gauge.h"
// Define a new frame type: this is going to be our main frame
class wxIEFrame : public wxFrame
{
public:
wxIEHtmlWin *m_ie;
wxGauge *m_gauge;
// ctor(s)
wxIEFrame(const wxString& title, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize);
// event handlers (these functions should _not_ be virtual)
void OnSize(wxSizeEvent& event);
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
void OnEditMode(wxCommandEvent& event);
void OnEditModeUI(wxUpdateUIEvent& event);
void OnBrowse(wxCommandEvent& event);
void OnOpen(wxCommandEvent& event);
void OnTestHTML(wxCommandEvent& event);
void OnTestSelect(wxCommandEvent& event);
void OnTestHTMLSelect(wxCommandEvent& event);
void OnTestGetText(wxCommandEvent& event);
void OnTestHTMLGetText(wxCommandEvent& event);
void OnTestHome(wxCommandEvent& event);
void OnTestActiveX(wxCommandEvent& event);
private:
// any class wishing to process wxWindows events must use this macro
DECLARE_EVENT_TABLE()
void OnMSHTMLStatusTextChangeX(wxActiveXEvent& event);
void OnMSHTMLBeforeNavigate2X(wxActiveXEvent& event);
void OnMSHTMLTitleChangeX(wxActiveXEvent& event);
void OnMSHTMLNewWindow2X(wxActiveXEvent& event);
void OnMSHTMLProgressChangeX(wxActiveXEvent& event);
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,676 @@
/*
wxActiveX Library Licence, Version 3
====================================
Copyright (C) 2003 Lindsay Mathieson [, ...]
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
wxActiveX LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxActiveX Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.
*/
/*! \file wxactivex.h
\brief implements wxActiveX window class and OLE tools
*/
#ifndef WX_ACTIVE_X
#define WX_ACTIVE_X
#pragma warning( disable : 4101 4786)
#pragma warning( disable : 4786)
#include <wx/setup.h>
#include <wx/wx.h>
#include <wx/variant.h>
#include <wx/datetime.h>
#include <oleidl.h>
#include <exdisp.h>
#include <docobj.h>
#include <iostream>
#include <vector>
#include <map>
using namespace std;
/// \brief wxActiveX Namespace for stuff I want to keep out of other tools way.
namespace NS_wxActiveX
{
/// STL utilty class.
/// specific to wxActiveX, for creating
/// case insenstive maps etc
struct less_wxStringI
{
bool operator()(const wxString& x, const wxString& y) const
{
return x.CmpNoCase(y) < 0;
};
};
};
//////////////////////////////////////////
/// Template class for smart interface handling.
/// - Automatically dereferences ole interfaces
/// - Smart Copy Semantics
/// - Can Create Interfaces
/// - Can query for other interfaces
template <class I> class wxAutoOleInterface
{
protected:
I *m_interface;
public:
/// takes ownership of an existing interface
/// Assumed to already have a AddRef() applied
explicit wxAutoOleInterface(I *pInterface = NULL) : m_interface(pInterface) {}
/// queries for an interface
wxAutoOleInterface(REFIID riid, IUnknown *pUnk) : m_interface(NULL)
{
QueryInterface(riid, pUnk);
};
/// queries for an interface
wxAutoOleInterface(REFIID riid, IDispatch *pDispatch) : m_interface(NULL)
{
QueryInterface(riid, pDispatch);
};
/// Creates an Interface
wxAutoOleInterface(REFCLSID clsid, REFIID riid) : m_interface(NULL)
{
CreateInstance(clsid, riid);
};
/// copy constructor
wxAutoOleInterface(const wxAutoOleInterface<I>& ti) : m_interface(NULL)
{
operator = (ti);
}
/// assignment operator
wxAutoOleInterface<I>& operator = (const wxAutoOleInterface<I>& ti)
{
if (ti.m_interface)
ti.m_interface->AddRef();
Free();
m_interface = ti.m_interface;
return *this;
}
/// takes ownership of an existing interface
/// Assumed to already have a AddRef() applied
wxAutoOleInterface<I>& operator = (I *&ti)
{
Free();
m_interface = ti;
return *this;
}
/// invokes Free()
~wxAutoOleInterface()
{
Free();
};
/// Releases interface (i.e decrements refCount)
inline void Free()
{
if (m_interface)
m_interface->Release();
m_interface = NULL;
};
/// queries for an interface
HRESULT QueryInterface(REFIID riid, IUnknown *pUnk)
{
Free();
wxCHECK(pUnk != NULL, -1);
return pUnk->QueryInterface(riid, (void **) &m_interface);
};
/// Create a Interface instance
HRESULT CreateInstance(REFCLSID clsid, REFIID riid)
{
Free();
return CoCreateInstance(clsid, NULL, CLSCTX_ALL, riid, (void **) &m_interface);
};
/// returns the interface pointer
inline operator I *() const {return m_interface;}
/// returns the dereferenced interface pointer
inline I* operator ->() {return m_interface;}
/// returns a pointer to the interface pointer
inline I** GetRef() {return &m_interface;}
/// returns true if we have a valid interface pointer
inline bool Ok() const {return m_interface != NULL;}
};
/// \brief Converts a std HRESULT to its error code.
/// Hardcoded, by no means a definitive list.
wxString OLEHResultToString(HRESULT hr);
/// \brief Returns the string description of a IID.
/// Hardcoded, by no means a definitive list.
wxString GetIIDName(REFIID riid);
//#define __WXOLEDEBUG
#ifdef __WXOLEDEBUG
#define WXOLE_TRACE(str) {OutputDebugString(str);OutputDebugString("\r\n");}
#define WXOLE_TRACEOUT(stuff)\
{\
wxString os;\
os << stuff << "\r\n";\
WXOLE_TRACE(os.mb_str());\
}
#define WXOLE_WARN(__hr,msg)\
{\
if (__hr != S_OK)\
{\
wxString s = "*** ";\
s += msg;\
s += " : "+ OLEHResultToString(__hr);\
WXOLE_TRACE(s.c_str());\
}\
}
#else
#define WXOLE_TRACE(str)
#define WXOLE_TRACEOUT(stuff)
#define WXOLE_WARN(_proc,msg) {_proc;}
#endif
class wxOleInit
{
public:
static IMalloc *GetIMalloc();
wxOleInit();
~wxOleInit();
};
#define DECLARE_OLE_UNKNOWN(cls)\
private:\
class TAutoInitInt\
{\
public:\
LONG l;\
TAutoInitInt() : l(0) {}\
};\
TAutoInitInt refCount, lockCount;\
wxOleInit oleInit;\
static void _GetInterface(cls *self, REFIID iid, void **_interface, const char *&desc);\
public:\
LONG GetRefCount();\
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void ** ppvObject);\
ULONG STDMETHODCALLTYPE AddRef();\
ULONG STDMETHODCALLTYPE Release();\
ULONG STDMETHODCALLTYPE AddLock();\
ULONG STDMETHODCALLTYPE ReleaseLock()
#define DEFINE_OLE_TABLE(cls)\
LONG cls::GetRefCount() {return refCount.l;}\
HRESULT STDMETHODCALLTYPE cls::QueryInterface(REFIID iid, void ** ppvObject)\
{\
if (! ppvObject)\
{\
WXOLE_TRACE("*** NULL POINTER ***");\
return E_FAIL;\
};\
const char *desc = NULL;\
cls::_GetInterface(this, iid, ppvObject, desc);\
if (! *ppvObject)\
{\
WXOLE_TRACEOUT("<" << GetIIDName(iid).c_str() << "> Not Found");\
return E_NOINTERFACE;\
};\
WXOLE_TRACEOUT("QI : <" << desc <<">");\
((IUnknown * )(*ppvObject))->AddRef();\
return S_OK;\
};\
ULONG STDMETHODCALLTYPE cls::AddRef()\
{\
WXOLE_TRACEOUT(# cls << "::Add ref(" << refCount.l << ")");\
InterlockedIncrement(&refCount.l);\
return refCount.l;\
};\
ULONG STDMETHODCALLTYPE cls::Release()\
{\
if (refCount.l > 0)\
{\
InterlockedDecrement(&refCount.l);\
WXOLE_TRACEOUT(# cls << "::Del ref(" << refCount.l << ")");\
if (refCount.l == 0)\
{\
delete this;\
return 0;\
};\
return refCount.l;\
}\
else\
return 0;\
}\
ULONG STDMETHODCALLTYPE cls::AddLock()\
{\
WXOLE_TRACEOUT(# cls << "::Add Lock(" << lockCount.l << ")");\
InterlockedIncrement(&lockCount.l);\
return lockCount.l;\
};\
ULONG STDMETHODCALLTYPE cls::ReleaseLock()\
{\
if (lockCount.l > 0)\
{\
InterlockedDecrement(&lockCount.l);\
WXOLE_TRACEOUT(# cls << "::Del Lock(" << lockCount.l << ")");\
return lockCount.l;\
}\
else\
return 0;\
}\
DEFINE_OLE_BASE(cls)
#define DEFINE_OLE_BASE(cls)\
void cls::_GetInterface(cls *self, REFIID iid, void **_interface, const char *&desc)\
{\
*_interface = NULL;\
desc = NULL;
#define OLE_INTERFACE(_iid, _type)\
if (IsEqualIID(iid, _iid))\
{\
WXOLE_TRACE("Found Interface <" # _type ">");\
*_interface = (IUnknown *) (_type *) self;\
desc = # _iid;\
return;\
}
#define OLE_IINTERFACE(_face) OLE_INTERFACE(IID_##_face, _face)
#define OLE_INTERFACE_CUSTOM(func)\
if (func(self, iid, _interface, desc))\
{\
return;\
}
#define END_OLE_TABLE\
}
/// Main class for embedding a ActiveX control.
/// Use by itself or derive from it
/// \note The utility program (wxie) can generate a list of events, methods & properties
/// for a control.
/// First display the control (File|Display),
/// then get the type info (ActiveX|Get Type Info) - these are copied to the clipboard.
/// Eventually this will be expanded to autogenerate
/// wxWindows source files for a control with all methods etc encapsulated.
/// \par Usage:
/// construct using a ProgId or class id
/// \code new wxActiveX(parent, CLSID_WebBrowser, id, pos, size, style, name)\endcode
/// \code new wxActiveX(parent, "ShockwaveFlash.ShockwaveFlash", id, pos, size, style, name)\endcode
/// \par Properties
/// Properties can be set using \c SetProp() and set/retrieved using \c Prop()
/// \code SetProp(name, wxVariant(x)) \endcode or
/// \code wxString Prop("<name>") = x\endcode
/// \code wxString result = Prop("<name>")\endcode
/// \code flash_ctl.Prop("movie") = "file:///movies/test.swf";\endcode
/// \code flash_ctl.Prop("Playing") = false;\endcode
/// \code wxString current_movie = flash_ctl.Prop("movie");\endcode
/// \par Methods
/// Methods are invoked with \c CallMethod()
/// \code wxVariant result = CallMethod("<name>", args, nargs = -1)\endcode
/// \code wxVariant args[] = {0L, "file:///e:/dev/wxie/bug-zap.swf"};
/// wxVariant result = X->CallMethod("LoadMovie", args);\endcode
/// \par events
/// respond to events with the
/// \c EVT_ACTIVEX(controlId, eventName, handler) &
/// \c EVT_ACTIVEX_DISPID(controlId, eventDispId, handler) macros
/// \code
/// BEGIN_EVENT_TABLE(wxIEFrame, wxFrame)
/// EVT_ACTIVEX_DISPID(ID_MSHTML, DISPID_STATUSTEXTCHANGE, OnMSHTMLStatusTextChangeX)
/// EVT_ACTIVEX(ID_MSHTML, "BeforeNavigate2", OnMSHTMLBeforeNavigate2X)
/// EVT_ACTIVEX(ID_MSHTML, "TitleChange", OnMSHTMLTitleChangeX)
/// EVT_ACTIVEX(ID_MSHTML, "NewWindow2", OnMSHTMLNewWindow2X)
/// EVT_ACTIVEX(ID_MSHTML, "ProgressChange", OnMSHTMLProgressChangeX)
/// END_EVENT_TABLE()\endcode
class wxActiveX : public wxWindow {
public:
/// General parameter and return type infoformation for Events, Properties and Methods.
/// refer to ELEMDESC, IDLDESC in MSDN
class ParamX
{
public:
USHORT flags;
bool isPtr;
bool isSafeArray;
bool isOptional;
VARTYPE vt;
wxString name;
ParamX() : isOptional(false), vt(VT_EMPTY) {}
inline bool IsIn() const {return (flags & IDLFLAG_FIN) != 0;}
inline bool IsOut() const {return (flags & IDLFLAG_FOUT) != 0;}
inline bool IsRetVal() const {return (flags & IDLFLAG_FRETVAL) != 0;}
};
typedef vector<ParamX> ParamXArray;
/// Type & Parameter info for Events and Methods.
/// refer to FUNCDESC in MSDN
class FuncX
{
public:
wxString name;
MEMBERID memid;
bool hasOut;
ParamX retType;
ParamXArray params;
};
typedef vector<FuncX> FuncXArray;
/// Type info for properties.
class PropX
{
public:
wxString name;
MEMBERID memid;
ParamX type;
ParamX arg;
bool putByRef;
PropX() : putByRef (false) {}
inline bool CanGet() const {return type.vt != VT_EMPTY;}
inline bool CanSet() const {return arg.vt != VT_EMPTY;}
};
typedef vector<PropX> PropXArray;
/// Create using clsid.
wxActiveX(wxWindow * parent, REFCLSID clsid, wxWindowID id = -1,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxPanelNameStr);
/// create using progid.
wxActiveX(wxWindow * parent, const wxString& progId, wxWindowID id = -1,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxPanelNameStr);
virtual ~wxActiveX();
/// Number of events defined for this control.
inline int GetEventCount() const {return m_events.size();}
/// returns event description by index.
/// throws exception for invalid index
const FuncX& GetEventDesc(int idx) const;
/// Number of properties defined for this control.
inline int GetPropCount() const {return m_props.size();}
/// returns property description by index.
/// throws exception for invalid index
const PropX& GetPropDesc(int idx) const;
/// returns property description by name.
/// throws exception for invalid name
const PropX& GetPropDesc(const wxString& name) const;
/// Number of methods defined for this control.
inline int GetMethodCount() const {return m_methods.size();}
/// returns method description by name.
/// throws exception for invalid index
const FuncX& GetMethodDesc(int idx) const;
/// returns method description by name.
/// throws exception for invalid name
const FuncX& GetMethodDesc(const wxString& name) const;
/// Set property VARIANTARG value by MEMBERID.
void SetProp(MEMBERID name, VARIANTARG& value);
/// Set property using wxVariant by name.
void SetProp(const wxString &name, const wxVariant &value);
class wxPropertySetter
{
public:
wxActiveX *m_ctl;
wxString m_propName;
wxPropertySetter(wxActiveX *ctl, const wxString& propName) :
m_ctl(ctl), m_propName(propName) {}
inline const wxPropertySetter& operator = (wxVariant v) const
{
m_ctl->SetProp(m_propName, v);
return *this;
};
inline operator wxVariant() const {return m_ctl->GetPropAsWxVariant(m_propName);};
inline operator wxString() const {return m_ctl->GetPropAsString(m_propName);};
inline operator char() const {return m_ctl->GetPropAsChar(m_propName);};
inline operator long() const {return m_ctl->GetPropAsLong(m_propName);};
inline operator bool() const {return m_ctl->GetPropAsBool(m_propName);};
inline operator double() const {return m_ctl->GetPropAsDouble(m_propName);};
inline operator wxDateTime() const {return m_ctl->GetPropAsDateTime(m_propName);};
inline operator void *() const {return m_ctl->GetPropAsPointer(m_propName);};
};
/// \fn inline wxPropertySetter Prop(wxString name) {return wxPropertySetter(this, name);}
/// \param name Property name to read/set
/// \return wxPropertySetter, which has overloads for setting/getting the property
/// \brief Generic Get/Set Property by name.
/// Automatically handles most types
/// \par Usage:
/// - Prop("\<name\>") = \<value\>
/// - var = Prop("\<name\>")
/// - e.g:
/// - \code flash_ctl.Prop("movie") = "file:///movies/test.swf";\endcode
/// - \code flash_ctl.Prop("Playing") = false;\endcode
/// - \code wxString current_movie = flash_ctl.Prop("movie");\endcode
/// \exception raises exception if \<name\> is invalid
/// \note Have to add a few more type conversions yet ...
inline wxPropertySetter Prop(wxString name) {return wxPropertySetter(this, name);}
VARIANT GetPropAsVariant(MEMBERID name);
VARIANT GetPropAsVariant(const wxString& name);
wxVariant GetPropAsWxVariant(const wxString& name);
wxString GetPropAsString(const wxString& name);
char GetPropAsChar(const wxString& name);
long GetPropAsLong(const wxString& name);
bool GetPropAsBool(const wxString& name);
double GetPropAsDouble(const wxString& name);
wxDateTime GetPropAsDateTime(const wxString& name);
void *GetPropAsPointer(const wxString& name);
// methods
// VARIANTARG form is passed straight to Invoke,
// so args in *REVERSE* order
VARIANT CallMethod(MEMBERID name, VARIANTARG args[], int argc);
VARIANT CallMethod(const wxString& name, VARIANTARG args[] = NULL, int argc = -1);
// args are in *NORMAL* order
// args can be a single wxVariant or an array
/// \fn wxVariant CallMethod(wxString name, wxVariant args[], int nargs = -1);
/// \param name name of method to call
/// \param args array of wxVariant's, defaults to NULL (no args)
/// \param nargs number of arguments passed via args. Defaults to actual number of args for the method
/// \return wxVariant
/// \brief Call a method of the ActiveX control.
/// Automatically handles most types
/// \par Usage:
/// - result = CallMethod("\<name\>", args, nargs)
/// - e.g.
/// - \code
/// wxVariant args[] = {0L, "file:///e:/dev/wxie/bug-zap.swf"};
/// wxVariant result = X->CallMethod("LoadMovie", args);\endcode
/// \exception raises exception if \<name\> is invalid
/// \note Since wxVariant has built in type conversion, most the std types can be passed easily
wxVariant CallMethod(const wxString& name, wxVariant args[], int nargs = -1);
HRESULT ConnectAdvise(REFIID riid, IUnknown *eventSink);
void OnSize(wxSizeEvent&);
void OnPaint(wxPaintEvent& event);
void OnMouse(wxMouseEvent& event);
void OnSetFocus(wxFocusEvent&);
void OnKillFocus(wxFocusEvent&);
DECLARE_EVENT_TABLE();
protected:
friend class FrameSite;
friend class wxActiveXEvents;
typedef map<MEMBERID, int> MemberIdMap;
typedef map<wxString, int, NS_wxActiveX::less_wxStringI> NameMap;
typedef wxAutoOleInterface<IConnectionPoint> wxOleConnectionPoint;
typedef pair<wxOleConnectionPoint, DWORD> wxOleConnection;
typedef vector<wxOleConnection> wxOleConnectionArray;
wxAutoOleInterface<IDispatch> m_Dispatch;
wxAutoOleInterface<IOleClientSite> m_clientSite;
wxAutoOleInterface<IUnknown> m_ActiveX;
wxAutoOleInterface<IOleObject> m_oleObject;
wxAutoOleInterface<IOleInPlaceObject> m_oleInPlaceObject;
wxAutoOleInterface<IOleInPlaceActiveObject>
m_oleInPlaceActiveObject;
wxAutoOleInterface<IOleDocumentView> m_docView;
wxAutoOleInterface<IViewObject> m_viewObject;
HWND m_oleObjectHWND;
bool m_bAmbientUserMode;
DWORD m_docAdviseCookie;
wxOleConnectionArray m_connections;
void CreateActiveX(REFCLSID clsid);
void CreateActiveX(LPOLESTR progId);
HRESULT AmbientPropertyChanged(DISPID dispid);
void GetTypeInfo();
void GetTypeInfo(ITypeInfo *ti, bool defInterface, bool defEventSink);
// events
FuncXArray m_events;
MemberIdMap m_eventMemberIds;
// properties
PropXArray m_props;
NameMap m_propNames;
// Methods
FuncXArray m_methods;
NameMap m_methodNames;
long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
};
// events
class wxActiveXEvent : public wxCommandEvent
{
private:
friend class wxActiveXEvents;
wxVariant m_params;
public:
virtual wxEvent *Clone() const { return new wxActiveXEvent(*this); }
wxString EventName();
int ParamCount() const;
wxString ParamType(int idx);
wxString ParamName(int idx);
wxVariant& operator[] (int idx);
wxVariant& operator[] (wxString name);
private:
DECLARE_CLASS(wxActiveXEvent)
};
const wxEventType& RegisterActiveXEvent(const wxChar *eventName);
const wxEventType& RegisterActiveXEvent(DISPID event);
typedef void (wxEvtHandler::*wxActiveXEventFunction)(wxActiveXEvent&);
/// \def EVT_ACTIVEX(id, eventName, fn)
/// \brief Event handle for events by name
#define EVT_ACTIVEX(id, eventName, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(wxT(eventName)), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) & fn, (wxObject *) NULL ),
/// \def EVT_ACTIVEX_DISPID(id, eventDispId, fn)
/// \brief Event handle for events by DISPID (dispath id)
#define EVT_ACTIVEX_DISPID(id, eventDispId, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(eventDispId), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) & fn, (wxObject *) NULL ),
//util
bool wxDateTimeToVariant(wxDateTime dt, VARIANTARG& va);
bool VariantToWxDateTime(VARIANTARG va, wxDateTime& dt);
/// \relates wxActiveX
/// \fn bool MSWVariantToVariant(VARIANTARG& va, wxVariant& vx);
/// \param va VARAIANTARG to convert from
/// \param vx Destination wxVariant
/// \return success/failure (true/false)
/// \brief Convert MSW VARIANTARG to wxVariant.
/// Handles basic types, need to add:
/// - VT_ARRAY | VT_*
/// - better support for VT_UNKNOWN (currently treated as void *)
/// - better support for VT_DISPATCH (currently treated as void *)
bool MSWVariantToVariant(VARIANTARG& va, wxVariant& vx);
/// \relates wxActiveX
/// \fn bool VariantToMSWVariant(const wxVariant& vx, VARIANTARG& va);
/// \param vx wxVariant to convert from
/// \param va Destination VARIANTARG
/// \return success/failure (true/false)
/// \brief Convert wxVariant to MSW VARIANTARG.
/// Handles basic types, need to add:
/// - VT_ARRAY | VT_*
/// - better support for VT_UNKNOWN (currently treated as void *)
/// - better support for VT_DISPATCH (currently treated as void *)
bool VariantToMSWVariant(const wxVariant& vx, VARIANTARG& va);
#endif /* _IEHTMLWIN_H_ */

View File

@@ -0,0 +1,2 @@
del wxie.zip
pkzip -max -add -dir -recurse -excl=CVS\*.* -excl=CVS\*.* -excl=debug\*.* wxie *.*

View File

@@ -0,0 +1,104 @@
import os
import wx
if wx.Platform == '__WXMSW__':
from wx.lib.flashwin import FlashWindow
from Main import opj
#----------------------------------------------------------------------
class TestPanel(wx.Panel):
def __init__(self, parent, log):
wx.Panel.__init__(self, parent, -1)
self.pdf = None
sizer = wx.BoxSizer(wx.VERTICAL)
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
self.flash = FlashWindow(self, style=wx.SUNKEN_BORDER)
self.flash.LoadMovie(0, 'file://' + os.path.abspath('data/Asteroid_blaster.swf'))
sizer.Add(self.flash, proportion=1, flag=wx.EXPAND)
btn = wx.Button(self, wx.NewId(), "Open Flash File")
self.Bind(wx.EVT_BUTTON, self.OnOpenFileButton, btn)
btnSizer.Add(btn, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
btn = wx.Button(self, wx.NewId(), "Open Flash URL")
self.Bind(wx.EVT_BUTTON, self.OnOpenURLButton, btn)
btnSizer.Add(btn, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
btnSizer.Add((50,-1), proportion=2, flag=wx.EXPAND)
sizer.Add(btnSizer, proportion=0, flag=wx.EXPAND)
self.SetSizer(sizer)
self.SetAutoLayout(True)
def OnOpenFileButton(self, event):
dlg = wx.FileDialog(self, wildcard="*.swf")
if dlg.ShowModal() == wx.ID_OK:
wx.BeginBusyCursor()
self.flash.LoadMovie(0, 'file://' + dlg.GetPath())
wx.EndBusyCursor()
dlg.Destroy()
def OnOpenURLButton(self, event):
dlg = wx.TextEntryDialog(self, "Enter a URL of a .swf file", "Enter URL")
if dlg.ShowModal() == wx.ID_OK:
wx.BeginBusyCursor()
# setting the movie property works too
self.flash.movie = dlg.GetValue()
wx.EndBusyCursor()
dlg.Destroy()
#----------------------------------------------------------------------
def runTest(frame, nb, log):
if wx.Platform == '__WXMSW__':
win = TestPanel(nb, log)
return win
else:
dlg = wx.MessageDialog(frame, 'This demo only works on MSW.',
'Sorry', wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy()
overview = """\<html><body>
<h2>wx.lib.pdfwin.FlashWindow</h2>
The wx.lib.pdfwin.FlashWindow class is yet another example of using
ActiveX controls from wxPython using the new wx.activex module. This
allows you to use an ActiveX control as if it is a wx.Window, you can
call its methods, set/get properties, and receive events from the
ActiveX control in a very intuitive way.
<p> Using this class is simpler than ActiveXWrapper, doesn't rely on
the win32all extensions, and is more "wx\'ish", meaning that it uses
events and etc. as would be expected from any other wx window.
<p> This demo embeds the Shackwave Flash control, and lets you play a game.
</body></html>
"""
#----------------------------------------------------------------------
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])

View File

@@ -0,0 +1,225 @@
# 11/18/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o Updated for wx namespace
#
import wx
if wx.Platform == '__WXMSW__':
import wx.lib.iewin as iewin
#----------------------------------------------------------------------
class TestPanel(wx.Window):
def __init__(self, parent, log, frame=None):
wx.Window.__init__(
self, parent, -1,
style=wx.TAB_TRAVERSAL|wx.CLIP_CHILDREN|wx.NO_FULL_REPAINT_ON_RESIZE
)
self.log = log
self.current = "http://wxPython.org/"
self.frame = frame
if frame:
self.titleBase = frame.GetTitle()
sizer = wx.BoxSizer(wx.VERTICAL)
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
self.ie = iewin.IEHtmlWindow(self, -1, style = wx.NO_FULL_REPAINT_ON_RESIZE)
btn = wx.Button(self, -1, "Open", style=wx.BU_EXACTFIT)
self.Bind(wx.EVT_BUTTON, self.OnOpenButton, btn)
btnSizer.Add(btn, 0, wx.EXPAND|wx.ALL, 2)
btn = wx.Button(self, -1, "Home", style=wx.BU_EXACTFIT)
self.Bind(wx.EVT_BUTTON, self.OnHomeButton, btn)
btnSizer.Add(btn, 0, wx.EXPAND|wx.ALL, 2)
btn = wx.Button(self, -1, "<--", style=wx.BU_EXACTFIT)
self.Bind(wx.EVT_BUTTON, self.OnPrevPageButton, btn)
btnSizer.Add(btn, 0, wx.EXPAND|wx.ALL, 2)
btn = wx.Button(self, -1, "-->", style=wx.BU_EXACTFIT)
self.Bind(wx.EVT_BUTTON, self.OnNextPageButton, btn)
btnSizer.Add(btn, 0, wx.EXPAND|wx.ALL, 2)
btn = wx.Button(self, -1, "Stop", style=wx.BU_EXACTFIT)
self.Bind(wx.EVT_BUTTON, self.OnStopButton, btn)
btnSizer.Add(btn, 0, wx.EXPAND|wx.ALL, 2)
btn = wx.Button(self, -1, "Search", style=wx.BU_EXACTFIT)
self.Bind(wx.EVT_BUTTON, self.OnSearchPageButton, btn)
btnSizer.Add(btn, 0, wx.EXPAND|wx.ALL, 2)
btn = wx.Button(self, -1, "Refresh", style=wx.BU_EXACTFIT)
self.Bind(wx.EVT_BUTTON, self.OnRefreshPageButton, btn)
btnSizer.Add(btn, 0, wx.EXPAND|wx.ALL, 2)
txt = wx.StaticText(self, -1, "Location:")
btnSizer.Add(txt, 0, wx.CENTER|wx.ALL, 2)
self.location = wx.ComboBox(
self, -1, "", style=wx.CB_DROPDOWN|wx.PROCESS_ENTER
)
self.Bind(wx.EVT_COMBOBOX, self.OnLocationSelect, self.location)
self.location.Bind(wx.EVT_KEY_UP, self.OnLocationKey)
self.location.Bind(wx.EVT_CHAR, self.IgnoreReturn)
btnSizer.Add(self.location, 1, wx.EXPAND|wx.ALL, 2)
sizer.Add(btnSizer, 0, wx.EXPAND)
sizer.Add(self.ie, 1, wx.EXPAND)
self.ie.LoadUrl(self.current)
self.location.Append(self.current)
self.SetSizer(sizer)
# Since this is a wxWindow we have to call Layout ourselves
self.Bind(wx.EVT_SIZE, self.OnSize)
# Hook up the event handlers for the IE window
self.Bind(iewin.EVT_BeforeNavigate2, self.OnBeforeNavigate2, self.ie)
self.Bind(iewin.EVT_NewWindow2, self.OnNewWindow2, self.ie)
self.Bind(iewin.EVT_DocumentComplete, self.OnDocumentComplete, self.ie)
##self.Bind(iewin.EVT_ProgressChange, self.OnProgressChange, self.ie)
self.Bind(iewin.EVT_StatusTextChange, self.OnStatusTextChange, self.ie)
self.Bind(iewin.EVT_TitleChange, self.OnTitleChange, self.ie)
def ShutdownDemo(self):
# put the frame title back
if self.frame:
self.frame.SetTitle(self.titleBase)
def OnSize(self, evt):
self.Layout()
def OnLocationSelect(self, evt):
url = self.location.GetStringSelection()
self.log.write('OnLocationSelect: %s\n' % url)
self.ie.Navigate(url)
def OnLocationKey(self, evt):
if evt.KeyCode() == wx.WXK_RETURN:
URL = self.location.GetValue()
self.location.Append(URL)
self.ie.Navigate(URL)
else:
evt.Skip()
def IgnoreReturn(self, evt):
if evt.GetKeyCode() != wx.WXK_RETURN:
evt.Skip()
def OnOpenButton(self, event):
dlg = wx.TextEntryDialog(self, "Open Location",
"Enter a full URL or local path",
self.current, wx.OK|wx.CANCEL)
dlg.CentreOnParent()
if dlg.ShowModal() == wx.ID_OK:
self.current = dlg.GetValue()
self.ie.Navigate(self.current)
dlg.Destroy()
def OnHomeButton(self, event):
self.ie.GoHome() ## ET Phone Home!
def OnPrevPageButton(self, event):
self.ie.GoBack()
def OnNextPageButton(self, event):
self.ie.GoForward()
def OnStopButton(self, evt):
self.ie.Stop()
def OnSearchPageButton(self, evt):
self.ie.GoSearch()
def OnRefreshPageButton(self, evt):
self.ie.Refresh(iewin.REFRESH_COMPLETELY)
def logEvt(self, evt):
pst = ""
for name in evt.paramList:
pst += " %s:%s " % (name, repr(getattr(evt, name)))
self.log.write('%s: %s\n' % (evt.eventName, pst))
def OnBeforeNavigate2(self, evt):
self.logEvt(evt)
def OnNewWindow2(self, evt):
self.logEvt(evt)
## evt.Veto() # TODO
def OnProgressChange(self, evt):
self.logEvt(evt)
def OnDocumentComplete(self, evt):
self.logEvt(evt)
self.current = evt.URL
self.location.SetValue(self.current)
def OnTitleChange(self, evt):
self.logEvt(evt)
if self.frame:
self.frame.SetTitle(self.titleBase + ' -- ' + evt.Text)
def OnStatusTextChange(self, evt):
self.logEvt(evt)
if self.frame:
self.frame.SetStatusText(evt.Text)
#----------------------------------------------------------------------
# for the demo framework...
def runTest(frame, nb, log):
if wx.Platform == '__WXMSW__':
win = TestPanel(nb, log, frame)
return win
else:
dlg = wx.MessageDialog(frame, 'This demo only works on Windows.',
'Sorry', wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy()
overview = """\
<html><body>
<h2>wx.lib.iewin.IEHtmlWindow</h2>
The wx.lib.iewin.IEHtmlWindow class is one example of using ActiveX
controls from wxPython using the new wx.activex module. This allows
you to use an ActiveX control as if it is a wx.Window, you can call
its methods, set/get properties, and receive events from the ActiveX
control in a very intuitive way.
<p> Using this class is simpler than ActiveXWrapper, doesn't rely on
the win32all extensions, and is more "wx\'ish", meaning that it uses
events and etc. as would be expected from any other wx window.
</body></html>
"""
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
#----------------------------------------------------------------------

View File

@@ -0,0 +1,106 @@
import sys
import wx
if wx.Platform == '__WXMSW__':
from wx.lib.pdfwin import PDFWindow
#----------------------------------------------------------------------
class TestPanel(wx.Panel):
def __init__(self, parent, log):
wx.Panel.__init__(self, parent, -1)
self.pdf = None
sizer = wx.BoxSizer(wx.VERTICAL)
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
self.pdf = PDFWindow(self, style=wx.SUNKEN_BORDER)
sizer.Add(self.pdf, proportion=1, flag=wx.EXPAND)
btn = wx.Button(self, wx.NewId(), "Open PDF File")
self.Bind(wx.EVT_BUTTON, self.OnOpenButton, btn)
btnSizer.Add(btn, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
btn = wx.Button(self, wx.NewId(), "<-- Previous Page")
self.Bind(wx.EVT_BUTTON, self.OnPrevPageButton, btn)
btnSizer.Add(btn, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
btn = wx.Button(self, wx.NewId(), "Next Page -->")
self.Bind(wx.EVT_BUTTON, self.OnNextPageButton, btn)
btnSizer.Add(btn, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
btnSizer.Add((50,-1), proportion=2, flag=wx.EXPAND)
sizer.Add(btnSizer, proportion=0, flag=wx.EXPAND)
self.SetSizer(sizer)
self.SetAutoLayout(True)
def OnOpenButton(self, event):
dlg = wx.FileDialog(self, wildcard="*.pdf")
if dlg.ShowModal() == wx.ID_OK:
wx.BeginBusyCursor()
self.pdf.LoadFile(dlg.GetPath())
wx.EndBusyCursor()
dlg.Destroy()
def OnPrevPageButton(self, event):
self.pdf.gotoPreviousPage()
def OnNextPageButton(self, event):
self.pdf.gotoNextPage()
#----------------------------------------------------------------------
def runTest(frame, nb, log):
if wx.Platform == '__WXMSW__':
win = TestPanel(nb, log)
return win
else:
dlg = wx.MessageDialog(frame, 'This demo only works on MSW.',
'Sorry', wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy()
overview = """\<html><body>
<h2>wx.lib.pdfwin.PDFWindow</h2>
The wx.lib.pdfwin.PDFWindow class is another example of using ActiveX
controls from wxPython using the new wx.activex module. This allows
you to use an ActiveX control as if it is a wx.Window, you can call
its methods, set/get properties, and receive events from the ActiveX
control in a very intuitive way.
<p> Using this class is simpler than ActiveXWrapper, doesn't rely on
the win32all extensions, and is more "wx\'ish", meaning that it uses
events and etc. as would be expected from any other wx window.
<p> This demo embeds the Adobe Acrobat Reader, and gives you some
buttons for opening a PDF file, changing pages, etc. that show how to
call methods on the COM object. If you don't have Acrobat Reader 4.0
(or greater) installed it won't work.
</body></html>
"""
#----------------------------------------------------------------------
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])

View File

@@ -2,10 +2,6 @@
#
# o Updated for wx namespace
#
# 11/28/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o iewin.py is missing
#
import wx

View File

@@ -39,6 +39,9 @@ _treeList = [
'Cursor',
'PyPlot',
'ImageAlpha',
'ActiveX_FlashWindow',
'ActiveX_IEHtmlWindow',
'ActiveX_PDFWindow',
]),
# managed windows == things with a (optional) caption you can close
@@ -126,6 +129,9 @@ _treeList = [
# controls coming from other libraries
('More Windows/Controls', [
'ActiveX_FlashWindow',
'ActiveX_IEHtmlWindow',
'ActiveX_PDFWindow',
#'RightTextCtrl', deprecated as we have wxTE_RIGHT now.
'Calendar',
'CalendarCtrl',
@@ -137,7 +143,7 @@ _treeList = [
'FloatBar',
'FloatCanvas',
'HtmlWindow',
'IEHtmlWin',
##'IEHtmlWin',
'IntCtrl',
'MVCTree',
'MaskedEditControls',
@@ -219,7 +225,7 @@ _treeList = [
# need libs not coming with the demo
('Objects using an external library', [
'ActiveXWrapper_Acrobat',
##'ActiveXWrapper_Acrobat',
##'ActiveXWrapper_IE', # currently has tstate problems...
'GLCanvas',
#'PlotCanvas', # deprecated, use PyPlot

Binary file not shown.

View File

@@ -87,6 +87,26 @@ Added wx.PlatformInfo which is a tuple containing strings that
describe the platform and build options of wxPython. See the
MigrationGuide for more details.
Created a new extension module "activex" from Lindsay Mathieson's
newest wxActiveX_ class. (The existing iewin module used an older
version of this code, but only exposed the wxIEHtmlWin class.) This
new module will (in theory ;-) ) allow you to host arbitrary ActiveX
controls in a wx.Window, **without** requiring the use of the win32com
and other PyWin32 modules! This should eliminate the cronic problems
that have resulted from minor mismatches in how PyWin32 handles the
GIL and tstate when making callbacks, etc. The older iewin module
will be left in this release as the new stuff is not fully backwards
compatible, but you should migrate your code to the wx.activex version
of IEHtmlWindow, or the implementation in wx.lib.iewin, so the old one
can be eventually removed. Additionally, I've always considered that
the wx.lib.activexwrapper module is an ugly hack that I only included
in the lib because I couldn't figure out anything better. Well now we
have something that, if it isn't already, has the potential to be
better. So consider migrating away from using activexwrapper as well.
Please see the MigrationGuide for more details on using the new
module.
.. _wxActiveX: http://members.optusnet.com.au/~blackpaw1/wxactivex.html

View File

@@ -441,6 +441,110 @@ BTW, wx.Platform will probably be deprecated in the future.
ActiveX
-------
Lindsay Mathieson's newest wxActiveX_ class has been wrapped into a new
extension module called wx.activex. It is very generic and dynamic
and should allow hosting of arbitray ActiveX controls within your
wxPython apps. So far I've tested it with IE, PDF, and Flash
controls, (and there are new samples in the demo and also library
modules supporting these.)
.. _wxActiveX: http://members.optusnet.com.au/~blackpaw1/wxactivex.html
The new wx.activex module contains a bunch of code, but the most
important things to look at are ActiveXWindow and ActiveXEvent.
ActiveXWindow derives from wxWindow and the constructor accepts a
CLSID for the ActiveX Control that should be created. (There is also
a CLSID class that can convert from a progID or a CLSID String.) The
ActiveXWindow class simply adds methods that allow you to query some
of the TypeInfo exposed by the ActiveX object, and also to get/set
properties or call methods by name. The Python implementation
automatically handles converting parameters and return values to/from
the types expected by the ActiveX code as specified by the TypeInfo,
(just bool, integers, floating point, strings and None/Empty so far,
but more can be handled later.)
That's pretty much all there is to the class, as I mentioned before it
is very generic and dynamic. Very little is hard-coded and everything
that is done with the actual ActiveX control is done at runtime and
referenced by property or method name. Since Python is such a dynamic
language this is a very good match. I thought for a while about doing
some Python black-magic and making the specific methods/properties of
the actual ActiveX control "appear" at runtime, but then decided that
it would be better and more understandable to do it via subclassing.
So there is a utility class in wx.activex that given an existing
ActiveXWindow instance can generate a .py module containing a derived
class with real methods and properties that do the Right Thing to
reflect those calls to the real ActiveX control. There is also a
script/tool module named genaxmodule that given a CLSID or progID and
a class name, will generate the module for you. There are a few
examples of the output of this tool in the wx.lib package. See
iewin.py, pdfwin.py and flashwin.py.
Currently the genaxmodule tool will tweak some of the names it
generates, but this can be controled if you would like to do it
differently by deriving your own class from GernerateAXModule,
overriding some methods and then using this class from a tool like
genaxmodule. [TODO: make specifying a new class on genaxmodule's
command-line possible.] The current default behavior is that any
event names that start with "On" will have the "On" dropped, property
names are converted to all lower case, and if any name is a Python
keyword it will have an underscore appended to it. GernerateAXModule
does it's best when generating the code in the new module, but it can
only be as good as the TypeInfo data available from the ActiveX
control so sometimes some tweaking will be needed. For example, the
IE web browser control defines the Flags parameter of the Navigate2
method as required, but MSDN says it is optional.
It is intended that this new wx.activex module will replace both the
older version of Lindsay's code available in iewin.IEHtmlWindow, and
also the wx.lib.activexwraper module. Probably the biggest
differences you'l ecounted in migrating activexwrapper-based code
(besides events working better without causing deadlocks) is that
events are no longer caught by overriding methods in your derived
class. Instead ActiveXWindow uses the wx event system and you bind
handlers for the ActiveX events exactly the same way you do for any wx
event. There is just one extra step needed and that is creating an
event ID from the ActiveX event name, and if you use the genaxmodule
tool then this extra step will be handled for you there. For example,
for the StatusTextChange event in the IE web browser control, this
code is generated for you::
wxEVT_StatusTextChange = wx.activex.RegisterActiveXEvent('StatusTextChange')
EVT_StatusTextChange = wx.PyEventBinder(wxEVT_StatusTextChange, 1)
and you would use it in your code like this::
self.Bind(iewin.EVT_StatusTextChange, self.UpdateStatusText, self.ie)
When the event happens and your event handler function is called the
event properties from the ActiveX control (if any) are converted to
attributes of the event object passed to the handler. (Can you say
'event' any more times in a single sentence? ;-) ) For example the
StatusTextChange event will also send the text that should be put into
the status line as an event parameter named "Text" and you can access
it your handlers as an attribute of the evnt object like this::
def UpdateStatusText(self, evt):
self.SetStatusText(evt.Text)
These event object attributes should be considered read-only since
support for output parameters on the events is not yet implemented.
But that could/should change in the future.
So how do you know what methods, events and properties that am ActiveX
control supports? There is a funciton in wx.activex named GetAXInfo
that returns a printable summary of the TypeInfo from the ActiveX
instance passed in. You can use this as an example of how to browse
the TypeInfo provided, and there is also a copy of this function's
output appended as a comment to the modules produced by the
genaxmodule tool. Beyond that you'll need to consult the docs
provided by the makers of the ActiveX control that you are using.
Other Stuff
-----------

View File

@@ -144,8 +144,20 @@ void wxPyEndBlockThreads();
#endif // wxPyUSE_EXPORTED_API
#define wxPyBLOCK_THREADS(stmt) { wxPyBeginBlockThreads(); stmt; wxPyEndBlockThreads(); }
#define wxPyRaiseNotImplemented() wxPyBLOCK_THREADS(PyErr_SetNone(PyExc_NotImplementedError))
// A macro that will help to execute simple statments wrapped in
// StartBlock/EndBlockThreads calls
#define wxPyBLOCK_THREADS(stmt) \
{ wxPyBeginBlockThreads(); stmt; wxPyEndBlockThreads(); }
// Raise the NotImplementedError exception (blocking threads)
#define wxPyRaiseNotImplemented() \
wxPyBLOCK_THREADS(PyErr_SetNone(PyExc_NotImplementedError))
// Raise any exception witha string value (blocking threads)
#define wxPyErr_SetString(err, str) \
wxPyBLOCK_THREADS(PyErr_SetString(err, str))
//---------------------------------------------------------------------------
// These are helpers used by the typemaps

View File

@@ -19,6 +19,7 @@ scriptdir = os.getcwd()
scripts = [ ("img2png", 0),
("img2py", 0),
("img2xpm", 0),
("genaxmodule",0),
("xrced", 1),
("pyshell", 1),
("pycrust", 1),

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env python
import sys
from wx.tools.genaxmodule import main
main(sys.argv)

View File

@@ -0,0 +1,3 @@
@echo off
C:\Tools\python23\python.exe C:\PROJECTS\wx2.5\wxPython\scripts\genaxmodule %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -1,3 +1,3 @@
@echo off
start E:\tools\python23\pythonw.exe E:\PROJECTS\wx2.5\wxPython\scripts\helpviewer %1 %2 %3 %4 %5 %6 %7 %8 %9
start C:\Tools\python23\pythonw.exe C:\PROJECTS\wx2.5\wxPython\scripts\helpviewer %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -1,3 +1,3 @@
@echo off
E:\tools\python23\python.exe E:\PROJECTS\wx2.5\wxPython\scripts\img2png %1 %2 %3 %4 %5 %6 %7 %8 %9
C:\Tools\python23\python.exe C:\PROJECTS\wx2.5\wxPython\scripts\img2png %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -1,3 +1,3 @@
@echo off
E:\tools\python23\python.exe E:\PROJECTS\wx2.5\wxPython\scripts\img2py %1 %2 %3 %4 %5 %6 %7 %8 %9
C:\Tools\python23\python.exe C:\PROJECTS\wx2.5\wxPython\scripts\img2py %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -1,3 +1,3 @@
@echo off
E:\tools\python23\python.exe E:\PROJECTS\wx2.5\wxPython\scripts\img2xpm %1 %2 %3 %4 %5 %6 %7 %8 %9
C:\Tools\python23\python.exe C:\PROJECTS\wx2.5\wxPython\scripts\img2xpm %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -1,3 +1,3 @@
@echo off
start E:\tools\python23\pythonw.exe E:\PROJECTS\wx2.5\wxPython\scripts\pyalacarte %1 %2 %3 %4 %5 %6 %7 %8 %9
start C:\Tools\python23\pythonw.exe C:\PROJECTS\wx2.5\wxPython\scripts\pyalacarte %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -1,3 +1,3 @@
@echo off
start E:\tools\python23\pythonw.exe E:\PROJECTS\wx2.5\wxPython\scripts\pyalamode %1 %2 %3 %4 %5 %6 %7 %8 %9
start C:\Tools\python23\pythonw.exe C:\PROJECTS\wx2.5\wxPython\scripts\pyalamode %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -1,3 +1,3 @@
@echo off
start E:\tools\python23\pythonw.exe E:\PROJECTS\wx2.5\wxPython\scripts\pycrust %1 %2 %3 %4 %5 %6 %7 %8 %9
start C:\Tools\python23\pythonw.exe C:\PROJECTS\wx2.5\wxPython\scripts\pycrust %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -1,3 +1,3 @@
@echo off
start E:\tools\python23\pythonw.exe E:\PROJECTS\wx2.5\wxPython\scripts\pyshell %1 %2 %3 %4 %5 %6 %7 %8 %9
start C:\Tools\python23\pythonw.exe C:\PROJECTS\wx2.5\wxPython\scripts\pyshell %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -1,3 +1,3 @@
@echo off
start E:\tools\python23\pythonw.exe E:\PROJECTS\wx2.5\wxPython\scripts\pywrap %1 %2 %3 %4 %5 %6 %7 %8 %9
start C:\Tools\python23\pythonw.exe C:\PROJECTS\wx2.5\wxPython\scripts\pywrap %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -1,3 +1,3 @@
@echo off
start E:\tools\python23\pythonw.exe E:\PROJECTS\wx2.5\wxPython\scripts\xrced %1 %2 %3 %4 %5 %6 %7 %8 %9
start C:\Tools\python23\pythonw.exe C:\PROJECTS\wx2.5\wxPython\scripts\xrced %1 %2 %3 %4 %5 %6 %7 %8 %9

View File

@@ -67,6 +67,7 @@ BUILD_DLLWIDGET = 0# Build a module that enables unknown wx widgets
# Internet Explorer wrapper (experimental)
BUILD_IEWIN = (os.name == 'nt')
BUILD_ACTIVEX = (os.name == 'nt') # new version of IEWIN
CORE_ONLY = 0 # if true, don't build any of the above
@@ -186,7 +187,7 @@ if os.name == 'nt':
# Boolean (int) flags
for flag in ['BUILD_GLCANVAS', 'BUILD_OGL', 'BUILD_STC', 'BUILD_XRC',
'BUILD_GIZMOS', 'BUILD_DLLWIDGET', 'BUILD_IEWIN',
'BUILD_GIZMOS', 'BUILD_DLLWIDGET', 'BUILD_IEWIN', 'BUILD_ACTIVEX',
'CORE_ONLY', 'PREP_ONLY', 'USE_SWIG', 'UNICODE',
'UNDEF_NDEBUG', 'NO_SCRIPTS', 'BUILD_RENAMERS',
'FINAL', 'HYBRID', ]:
@@ -463,6 +464,7 @@ if CORE_ONLY:
BUILD_GIZMOS = 0
BUILD_DLLWIDGET = 0
BUILD_IEWIN = 0
BUILD_ACTIVEX = 0
if debug:
FINAL = 0
@@ -1147,6 +1149,39 @@ if BUILD_IEWIN:
wxpExtensions.append(ext)
#----------------------------------------------------------------------
# Define the ACTIVEX extension module (experimental)
#----------------------------------------------------------------------
if BUILD_ACTIVEX:
msg('Preparing ACTIVEX...')
location = 'contrib/activex'
axloc = opj(location, "wxie")
swig_files = ['activex.i', ]
swig_sources = run_swig(swig_files, location, '', PKGDIR,
USE_SWIG, swig_force, swig_args, swig_deps +
[ '%s/_activex_ex.py' % location])
ext = Extension('_activex', ['%s/IEHtmlWin.cpp' % axloc,
'%s/wxactivex.cpp' % axloc,
] + swig_sources,
include_dirs = includes + [ axloc ],
define_macros = defines,
library_dirs = libdirs,
libraries = libs,
extra_compile_args = cflags,
extra_link_args = lflags,
)
wxpExtensions.append(ext)
#----------------------------------------------------------------------
# Define the XRC extension module
#----------------------------------------------------------------------

View File

@@ -1425,6 +1425,17 @@ void wxPyCallback::EventThunker(wxEvent& event) {
if (!arg) {
PyErr_Print();
} else {
// Check if the event object needs some preinitialization
if (PyObject_HasAttrString(arg, "_preInit")) {
result = PyObject_CallMethod(arg, "_preInit", "O", arg);
if ( result ) {
Py_DECREF(result); // result is ignored, but we still need to decref it
PyErr_Clear(); // Just in case...
} else {
PyErr_Print();
}
}
// Call the event handler, passing the event object
tuple = PyTuple_New(1);
PyTuple_SET_ITEM(tuple, 0, arg); // steals ref to arg

View File

@@ -268,8 +268,7 @@
//---------------------------------------------------------------------------
%typemap(out) bool "$result = $1 ? Py_True : Py_False; Py_INCREF($result);"
%typemap(out) bool "$result = PyBool_FromLong((bool)$1);"
//---------------------------------------------------------------------------

652
wxPython/wx/lib/flashwin.py Normal file
View File

@@ -0,0 +1,652 @@
#----------------------------------------------------------------------
# Name: wx.lib.flashwin
# Purpose: A class that allows the use of the Shockwave Flash
# ActiveX control
#
# Author: Robin Dunn
#
# Created: 22-March-2004
# RCS-ID: $Id$
# Copyright: (c) 2004 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------
# This module was generated by the wx.activex.GernerateAXModule class
# (See also the genaxmodule script.)
import wx
import wx.activex
clsID = '{D27CDB6E-AE6D-11CF-96B8-444553540000}'
progID = 'ShockwaveFlash.ShockwaveFlash.1'
# Create eventTypes and event binders
wxEVT_ReadyStateChange = wx.activex.RegisterActiveXEvent('OnReadyStateChange')
wxEVT_Progress = wx.activex.RegisterActiveXEvent('OnProgress')
wxEVT_FSCommand = wx.activex.RegisterActiveXEvent('FSCommand')
EVT_ReadyStateChange = wx.PyEventBinder(wxEVT_ReadyStateChange, 1)
EVT_Progress = wx.PyEventBinder(wxEVT_Progress, 1)
EVT_FSCommand = wx.PyEventBinder(wxEVT_FSCommand, 1)
# Derive a new class from ActiveXWindow
class FlashWindow(wx.activex.ActiveXWindow):
def __init__(self, parent, ID=-1, pos=wx.DefaultPosition,
size=wx.DefaultSize, style=0, name='FlashWindow'):
wx.activex.ActiveXWindow.__init__(self, parent,
wx.activex.CLSID('{D27CDB6E-AE6D-11CF-96B8-444553540000}'),
ID, pos, size, style, name)
# Methods exported by the ActiveX object
def QueryInterface(self, riid):
return self.CallAXMethod('QueryInterface', riid)
def AddRef(self):
return self.CallAXMethod('AddRef')
def Release(self):
return self.CallAXMethod('Release')
def GetTypeInfoCount(self):
return self.CallAXMethod('GetTypeInfoCount')
def GetTypeInfo(self, itinfo, lcid):
return self.CallAXMethod('GetTypeInfo', itinfo, lcid)
def GetIDsOfNames(self, riid, rgszNames, cNames, lcid):
return self.CallAXMethod('GetIDsOfNames', riid, rgszNames, cNames, lcid)
def Invoke(self, dispidMember, riid, lcid, wFlags, pdispparams):
return self.CallAXMethod('Invoke', dispidMember, riid, lcid, wFlags, pdispparams)
def SetZoomRect(self, left, top, right, bottom):
return self.CallAXMethod('SetZoomRect', left, top, right, bottom)
def Zoom(self, factor):
return self.CallAXMethod('Zoom', factor)
def Pan(self, x, y, mode):
return self.CallAXMethod('Pan', x, y, mode)
def Play(self):
return self.CallAXMethod('Play')
def Stop(self):
return self.CallAXMethod('Stop')
def Back(self):
return self.CallAXMethod('Back')
def Forward(self):
return self.CallAXMethod('Forward')
def Rewind(self):
return self.CallAXMethod('Rewind')
def StopPlay(self):
return self.CallAXMethod('StopPlay')
def GotoFrame(self, FrameNum):
return self.CallAXMethod('GotoFrame', FrameNum)
def CurrentFrame(self):
return self.CallAXMethod('CurrentFrame')
def IsPlaying(self):
return self.CallAXMethod('IsPlaying')
def PercentLoaded(self):
return self.CallAXMethod('PercentLoaded')
def FrameLoaded(self, FrameNum):
return self.CallAXMethod('FrameLoaded', FrameNum)
def FlashVersion(self):
return self.CallAXMethod('FlashVersion')
def LoadMovie(self, layer, url):
return self.CallAXMethod('LoadMovie', layer, url)
def TGotoFrame(self, target, FrameNum):
return self.CallAXMethod('TGotoFrame', target, FrameNum)
def TGotoLabel(self, target, label):
return self.CallAXMethod('TGotoLabel', target, label)
def TCurrentFrame(self, target):
return self.CallAXMethod('TCurrentFrame', target)
def TCurrentLabel(self, target):
return self.CallAXMethod('TCurrentLabel', target)
def TPlay(self, target):
return self.CallAXMethod('TPlay', target)
def TStopPlay(self, target):
return self.CallAXMethod('TStopPlay', target)
def SetVariable(self, name, value):
return self.CallAXMethod('SetVariable', name, value)
def GetVariable(self, name):
return self.CallAXMethod('GetVariable', name)
def TSetProperty(self, target, property, value):
return self.CallAXMethod('TSetProperty', target, property, value)
def TGetProperty(self, target, property):
return self.CallAXMethod('TGetProperty', target, property)
def TCallFrame(self, target, FrameNum):
return self.CallAXMethod('TCallFrame', target, FrameNum)
def TCallLabel(self, target, label):
return self.CallAXMethod('TCallLabel', target, label)
def TSetPropertyNum(self, target, property, value):
return self.CallAXMethod('TSetPropertyNum', target, property, value)
def TGetPropertyNum(self, target, property):
return self.CallAXMethod('TGetPropertyNum', target, property)
def TGetPropertyAsNumber(self, target, property):
return self.CallAXMethod('TGetPropertyAsNumber', target, property)
# Getters, Setters and properties
def _get_ReadyState(self):
return self.GetAXProp('ReadyState')
readystate = property(_get_ReadyState, None)
def _get_TotalFrames(self):
return self.GetAXProp('TotalFrames')
totalframes = property(_get_TotalFrames, None)
def _get_Playing(self):
return self.GetAXProp('Playing')
def _set_Playing(self, Playing):
self.SetAXProp('Playing', Playing)
playing = property(_get_Playing, _set_Playing)
def _get_Quality(self):
return self.GetAXProp('Quality')
def _set_Quality(self, Quality):
self.SetAXProp('Quality', Quality)
quality = property(_get_Quality, _set_Quality)
def _get_ScaleMode(self):
return self.GetAXProp('ScaleMode')
def _set_ScaleMode(self, ScaleMode):
self.SetAXProp('ScaleMode', ScaleMode)
scalemode = property(_get_ScaleMode, _set_ScaleMode)
def _get_AlignMode(self):
return self.GetAXProp('AlignMode')
def _set_AlignMode(self, AlignMode):
self.SetAXProp('AlignMode', AlignMode)
alignmode = property(_get_AlignMode, _set_AlignMode)
def _get_BackgroundColor(self):
return self.GetAXProp('BackgroundColor')
def _set_BackgroundColor(self, BackgroundColor):
self.SetAXProp('BackgroundColor', BackgroundColor)
backgroundcolor = property(_get_BackgroundColor, _set_BackgroundColor)
def _get_Loop(self):
return self.GetAXProp('Loop')
def _set_Loop(self, Loop):
self.SetAXProp('Loop', Loop)
loop = property(_get_Loop, _set_Loop)
def _get_Movie(self):
return self.GetAXProp('Movie')
def _set_Movie(self, Movie):
self.SetAXProp('Movie', Movie)
movie = property(_get_Movie, _set_Movie)
def _get_FrameNum(self):
return self.GetAXProp('FrameNum')
def _set_FrameNum(self, FrameNum):
self.SetAXProp('FrameNum', FrameNum)
framenum = property(_get_FrameNum, _set_FrameNum)
def _get_WMode(self):
return self.GetAXProp('WMode')
def _set_WMode(self, WMode):
self.SetAXProp('WMode', WMode)
wmode = property(_get_WMode, _set_WMode)
def _get_SAlign(self):
return self.GetAXProp('SAlign')
def _set_SAlign(self, SAlign):
self.SetAXProp('SAlign', SAlign)
salign = property(_get_SAlign, _set_SAlign)
def _get_Menu(self):
return self.GetAXProp('Menu')
def _set_Menu(self, Menu):
self.SetAXProp('Menu', Menu)
menu = property(_get_Menu, _set_Menu)
def _get_Base(self):
return self.GetAXProp('Base')
def _set_Base(self, Base):
self.SetAXProp('Base', Base)
base = property(_get_Base, _set_Base)
def _get_Scale(self):
return self.GetAXProp('Scale')
def _set_Scale(self, Scale):
self.SetAXProp('Scale', Scale)
scale = property(_get_Scale, _set_Scale)
def _get_DeviceFont(self):
return self.GetAXProp('DeviceFont')
def _set_DeviceFont(self, DeviceFont):
self.SetAXProp('DeviceFont', DeviceFont)
devicefont = property(_get_DeviceFont, _set_DeviceFont)
def _get_EmbedMovie(self):
return self.GetAXProp('EmbedMovie')
def _set_EmbedMovie(self, EmbedMovie):
self.SetAXProp('EmbedMovie', EmbedMovie)
embedmovie = property(_get_EmbedMovie, _set_EmbedMovie)
def _get_BGColor(self):
return self.GetAXProp('BGColor')
def _set_BGColor(self, BGColor):
self.SetAXProp('BGColor', BGColor)
bgcolor = property(_get_BGColor, _set_BGColor)
def _get_Quality2(self):
return self.GetAXProp('Quality2')
def _set_Quality2(self, Quality2):
self.SetAXProp('Quality2', Quality2)
quality2 = property(_get_Quality2, _set_Quality2)
def _get_SWRemote(self):
return self.GetAXProp('SWRemote')
def _set_SWRemote(self, SWRemote):
self.SetAXProp('SWRemote', SWRemote)
swremote = property(_get_SWRemote, _set_SWRemote)
def _get_FlashVars(self):
return self.GetAXProp('FlashVars')
def _set_FlashVars(self, FlashVars):
self.SetAXProp('FlashVars', FlashVars)
flashvars = property(_get_FlashVars, _set_FlashVars)
def _get_AllowScriptAccess(self):
return self.GetAXProp('AllowScriptAccess')
def _set_AllowScriptAccess(self, AllowScriptAccess):
self.SetAXProp('AllowScriptAccess', AllowScriptAccess)
allowscriptaccess = property(_get_AllowScriptAccess, _set_AllowScriptAccess)
def _get_MovieData(self):
return self.GetAXProp('MovieData')
def _set_MovieData(self, MovieData):
self.SetAXProp('MovieData', MovieData)
moviedata = property(_get_MovieData, _set_MovieData)
# PROPERTIES
# --------------------
# readystate
# type:int arg:VT_EMPTY canGet:True canSet:False
#
# totalframes
# type:int arg:VT_EMPTY canGet:True canSet:False
#
# playing
# type:bool arg:bool canGet:True canSet:True
#
# quality
# type:int arg:int canGet:True canSet:True
#
# scalemode
# type:int arg:int canGet:True canSet:True
#
# alignmode
# type:int arg:int canGet:True canSet:True
#
# backgroundcolor
# type:int arg:int canGet:True canSet:True
#
# loop
# type:bool arg:bool canGet:True canSet:True
#
# movie
# type:string arg:string canGet:True canSet:True
#
# framenum
# type:int arg:int canGet:True canSet:True
#
# wmode
# type:string arg:string canGet:True canSet:True
#
# salign
# type:string arg:string canGet:True canSet:True
#
# menu
# type:bool arg:bool canGet:True canSet:True
#
# base
# type:string arg:string canGet:True canSet:True
#
# scale
# type:string arg:string canGet:True canSet:True
#
# devicefont
# type:bool arg:bool canGet:True canSet:True
#
# embedmovie
# type:bool arg:bool canGet:True canSet:True
#
# bgcolor
# type:string arg:string canGet:True canSet:True
#
# quality2
# type:string arg:string canGet:True canSet:True
#
# swremote
# type:string arg:string canGet:True canSet:True
#
# flashvars
# type:string arg:string canGet:True canSet:True
#
# allowscriptaccess
# type:string arg:string canGet:True canSet:True
#
# moviedata
# type:string arg:string canGet:True canSet:True
#
#
#
#
# METHODS
# --------------------
# QueryInterface
# retType: VT_VOID
# params:
# riid
# in:True out:False optional:False type:unsupported type 29
# ppvObj
# in:False out:True optional:False type:unsupported type 26
#
# AddRef
# retType: int
#
# Release
# retType: int
#
# GetTypeInfoCount
# retType: VT_VOID
# params:
# pctinfo
# in:False out:True optional:False type:int
#
# GetTypeInfo
# retType: VT_VOID
# params:
# itinfo
# in:True out:False optional:False type:int
# lcid
# in:True out:False optional:False type:int
# pptinfo
# in:False out:True optional:False type:unsupported type 26
#
# GetIDsOfNames
# retType: VT_VOID
# params:
# riid
# in:True out:False optional:False type:unsupported type 29
# rgszNames
# in:True out:False optional:False type:unsupported type 26
# cNames
# in:True out:False optional:False type:int
# lcid
# in:True out:False optional:False type:int
# rgdispid
# in:False out:True optional:False type:int
#
# Invoke
# retType: VT_VOID
# params:
# dispidMember
# in:True out:False optional:False type:int
# riid
# in:True out:False optional:False type:unsupported type 29
# lcid
# in:True out:False optional:False type:int
# wFlags
# in:True out:False optional:False type:int
# pdispparams
# in:True out:False optional:False type:unsupported type 29
# pvarResult
# in:False out:True optional:False type:VT_VARIANT
# pexcepinfo
# in:False out:True optional:False type:unsupported type 29
# puArgErr
# in:False out:True optional:False type:int
#
# SetZoomRect
# retType: VT_VOID
# params:
# left
# in:True out:False optional:False type:int
# top
# in:True out:False optional:False type:int
# right
# in:True out:False optional:False type:int
# bottom
# in:True out:False optional:False type:int
#
# Zoom
# retType: VT_VOID
# params:
# factor
# in:True out:False optional:False type:int
#
# Pan
# retType: VT_VOID
# params:
# x
# in:True out:False optional:False type:int
# y
# in:True out:False optional:False type:int
# mode
# in:True out:False optional:False type:int
#
# Play
# retType: VT_VOID
#
# Stop
# retType: VT_VOID
#
# Back
# retType: VT_VOID
#
# Forward
# retType: VT_VOID
#
# Rewind
# retType: VT_VOID
#
# StopPlay
# retType: VT_VOID
#
# GotoFrame
# retType: VT_VOID
# params:
# FrameNum
# in:True out:False optional:False type:int
#
# CurrentFrame
# retType: int
#
# IsPlaying
# retType: bool
#
# PercentLoaded
# retType: int
#
# FrameLoaded
# retType: bool
# params:
# FrameNum
# in:True out:False optional:False type:int
#
# FlashVersion
# retType: int
#
# LoadMovie
# retType: VT_VOID
# params:
# layer
# in:True out:False optional:False type:int
# url
# in:True out:False optional:False type:string
#
# TGotoFrame
# retType: VT_VOID
# params:
# target
# in:True out:False optional:False type:string
# FrameNum
# in:True out:False optional:False type:int
#
# TGotoLabel
# retType: VT_VOID
# params:
# target
# in:True out:False optional:False type:string
# label
# in:True out:False optional:False type:string
#
# TCurrentFrame
# retType: int
# params:
# target
# in:True out:False optional:False type:string
#
# TCurrentLabel
# retType: string
# params:
# target
# in:True out:False optional:False type:string
#
# TPlay
# retType: VT_VOID
# params:
# target
# in:True out:False optional:False type:string
#
# TStopPlay
# retType: VT_VOID
# params:
# target
# in:True out:False optional:False type:string
#
# SetVariable
# retType: VT_VOID
# params:
# name
# in:True out:False optional:False type:string
# value
# in:True out:False optional:False type:string
#
# GetVariable
# retType: string
# params:
# name
# in:True out:False optional:False type:string
#
# TSetProperty
# retType: VT_VOID
# params:
# target
# in:True out:False optional:False type:string
# property
# in:True out:False optional:False type:int
# value
# in:True out:False optional:False type:string
#
# TGetProperty
# retType: string
# params:
# target
# in:True out:False optional:False type:string
# property
# in:True out:False optional:False type:int
#
# TCallFrame
# retType: VT_VOID
# params:
# target
# in:True out:False optional:False type:string
# FrameNum
# in:True out:False optional:False type:int
#
# TCallLabel
# retType: VT_VOID
# params:
# target
# in:True out:False optional:False type:string
# label
# in:True out:False optional:False type:string
#
# TSetPropertyNum
# retType: VT_VOID
# params:
# target
# in:True out:False optional:False type:string
# property
# in:True out:False optional:False type:int
# value
# in:True out:False optional:False type:double
#
# TGetPropertyNum
# retType: double
# params:
# target
# in:True out:False optional:False type:string
# property
# in:True out:False optional:False type:int
#
# TGetPropertyAsNumber
# retType: double
# params:
# target
# in:True out:False optional:False type:string
# property
# in:True out:False optional:False type:int
#
#
#
#
# EVENTS
# --------------------
# ReadyStateChange
# retType: VT_VOID
# params:
# newState
# in:False out:False optional:False type:int
#
# Progress
# retType: VT_VOID
# params:
# percentDone
# in:False out:False optional:False type:int
#
# FSCommand
# retType: VT_VOID
# params:
# command
# in:True out:False optional:False type:string
# args
# in:True out:False optional:False type:string
#
#
#
#

890
wxPython/wx/lib/iewin.py Normal file
View File

@@ -0,0 +1,890 @@
#----------------------------------------------------------------------
# Name: wx.lib.iewin
# Purpose: A class that allows the use of the IE web browser
# ActiveX control
#
# Author: Robin Dunn
#
# Created: 22-March-2004
# RCS-ID: $Id$
# Copyright: (c) 2004 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------
# This module was originally generated by the
# wx.activex.GernerateAXModule class but has been tweaked somewhat as
# indicated below.
import wx
import wx.activex
clsID = '{8856F961-340A-11D0-A96B-00C04FD705A2}'
progID = 'Shell.Explorer.2'
# Flags to be used with the RefreshPage method
REFRESH_NORMAL = 0
REFRESH_IFEXPIRED = 1
REFRESH_CONTINUE = 2
REFRESH_COMPLETELY = 3
# Flags to be used with LoadUrl, Navigate, Navigate2 methods
NAV_OpenInNewWindow = 0x1
NAV_NoHistory = 0x2
NAV_NoReadFromCache = 0x4
NAV_NoWriteToCache = 0x8
NAV_AllowAutosearch = 0x10
NAV_BrowserBar = 0x20
NAV_Hyperlink = 0x40
# Create eventTypes and event binders
wxEVT_StatusTextChange = wx.activex.RegisterActiveXEvent('StatusTextChange')
wxEVT_ProgressChange = wx.activex.RegisterActiveXEvent('ProgressChange')
wxEVT_CommandStateChange = wx.activex.RegisterActiveXEvent('CommandStateChange')
wxEVT_DownloadBegin = wx.activex.RegisterActiveXEvent('DownloadBegin')
wxEVT_DownloadComplete = wx.activex.RegisterActiveXEvent('DownloadComplete')
wxEVT_TitleChange = wx.activex.RegisterActiveXEvent('TitleChange')
wxEVT_PropertyChange = wx.activex.RegisterActiveXEvent('PropertyChange')
wxEVT_BeforeNavigate2 = wx.activex.RegisterActiveXEvent('BeforeNavigate2')
wxEVT_NewWindow2 = wx.activex.RegisterActiveXEvent('NewWindow2')
wxEVT_NavigateComplete2 = wx.activex.RegisterActiveXEvent('NavigateComplete2')
wxEVT_DocumentComplete = wx.activex.RegisterActiveXEvent('DocumentComplete')
wxEVT_Quit = wx.activex.RegisterActiveXEvent('OnQuit')
wxEVT_Visible = wx.activex.RegisterActiveXEvent('OnVisible')
wxEVT_ToolBar = wx.activex.RegisterActiveXEvent('OnToolBar')
wxEVT_MenuBar = wx.activex.RegisterActiveXEvent('OnMenuBar')
wxEVT_StatusBar = wx.activex.RegisterActiveXEvent('OnStatusBar')
wxEVT_FullScreen = wx.activex.RegisterActiveXEvent('OnFullScreen')
wxEVT_TheaterMode = wx.activex.RegisterActiveXEvent('OnTheaterMode')
wxEVT_WindowSetResizable = wx.activex.RegisterActiveXEvent('WindowSetResizable')
wxEVT_WindowSetLeft = wx.activex.RegisterActiveXEvent('WindowSetLeft')
wxEVT_WindowSetTop = wx.activex.RegisterActiveXEvent('WindowSetTop')
wxEVT_WindowSetWidth = wx.activex.RegisterActiveXEvent('WindowSetWidth')
wxEVT_WindowSetHeight = wx.activex.RegisterActiveXEvent('WindowSetHeight')
wxEVT_WindowClosing = wx.activex.RegisterActiveXEvent('WindowClosing')
wxEVT_ClientToHostWindow = wx.activex.RegisterActiveXEvent('ClientToHostWindow')
wxEVT_SetSecureLockIcon = wx.activex.RegisterActiveXEvent('SetSecureLockIcon')
wxEVT_FileDownload = wx.activex.RegisterActiveXEvent('FileDownload')
wxEVT_NavigateError = wx.activex.RegisterActiveXEvent('NavigateError')
wxEVT_PrintTemplateInstantiation = wx.activex.RegisterActiveXEvent('PrintTemplateInstantiation')
wxEVT_PrintTemplateTeardown = wx.activex.RegisterActiveXEvent('PrintTemplateTeardown')
wxEVT_UpdatePageStatus = wx.activex.RegisterActiveXEvent('UpdatePageStatus')
wxEVT_PrivacyImpactedStateChange = wx.activex.RegisterActiveXEvent('PrivacyImpactedStateChange')
EVT_StatusTextChange = wx.PyEventBinder(wxEVT_StatusTextChange, 1)
EVT_ProgressChange = wx.PyEventBinder(wxEVT_ProgressChange, 1)
EVT_CommandStateChange = wx.PyEventBinder(wxEVT_CommandStateChange, 1)
EVT_DownloadBegin = wx.PyEventBinder(wxEVT_DownloadBegin, 1)
EVT_DownloadComplete = wx.PyEventBinder(wxEVT_DownloadComplete, 1)
EVT_TitleChange = wx.PyEventBinder(wxEVT_TitleChange, 1)
EVT_PropertyChange = wx.PyEventBinder(wxEVT_PropertyChange, 1)
EVT_BeforeNavigate2 = wx.PyEventBinder(wxEVT_BeforeNavigate2, 1)
EVT_NewWindow2 = wx.PyEventBinder(wxEVT_NewWindow2, 1)
EVT_NavigateComplete2 = wx.PyEventBinder(wxEVT_NavigateComplete2, 1)
EVT_DocumentComplete = wx.PyEventBinder(wxEVT_DocumentComplete, 1)
EVT_Quit = wx.PyEventBinder(wxEVT_Quit, 1)
EVT_Visible = wx.PyEventBinder(wxEVT_Visible, 1)
EVT_ToolBar = wx.PyEventBinder(wxEVT_ToolBar, 1)
EVT_MenuBar = wx.PyEventBinder(wxEVT_MenuBar, 1)
EVT_StatusBar = wx.PyEventBinder(wxEVT_StatusBar, 1)
EVT_FullScreen = wx.PyEventBinder(wxEVT_FullScreen, 1)
EVT_TheaterMode = wx.PyEventBinder(wxEVT_TheaterMode, 1)
EVT_WindowSetResizable = wx.PyEventBinder(wxEVT_WindowSetResizable, 1)
EVT_WindowSetLeft = wx.PyEventBinder(wxEVT_WindowSetLeft, 1)
EVT_WindowSetTop = wx.PyEventBinder(wxEVT_WindowSetTop, 1)
EVT_WindowSetWidth = wx.PyEventBinder(wxEVT_WindowSetWidth, 1)
EVT_WindowSetHeight = wx.PyEventBinder(wxEVT_WindowSetHeight, 1)
EVT_WindowClosing = wx.PyEventBinder(wxEVT_WindowClosing, 1)
EVT_ClientToHostWindow = wx.PyEventBinder(wxEVT_ClientToHostWindow, 1)
EVT_SetSecureLockIcon = wx.PyEventBinder(wxEVT_SetSecureLockIcon, 1)
EVT_FileDownload = wx.PyEventBinder(wxEVT_FileDownload, 1)
EVT_NavigateError = wx.PyEventBinder(wxEVT_NavigateError, 1)
EVT_PrintTemplateInstantiation = wx.PyEventBinder(wxEVT_PrintTemplateInstantiation, 1)
EVT_PrintTemplateTeardown = wx.PyEventBinder(wxEVT_PrintTemplateTeardown, 1)
EVT_UpdatePageStatus = wx.PyEventBinder(wxEVT_UpdatePageStatus, 1)
EVT_PrivacyImpactedStateChange = wx.PyEventBinder(wxEVT_PrivacyImpactedStateChange, 1)
# For this there are af ew special methods implemented in C++ in the
# IEHtmlWindowBase class, so derive from it instead of ActiveXWindow.
class IEHtmlWindow(wx.activex.IEHtmlWindowBase):
def __init__(self, parent, ID=-1, pos=wx.DefaultPosition,
size=wx.DefaultSize, style=0, name='IEHtmlWindow'):
wx.activex.IEHtmlWindowBase.__init__(self, parent,
wx.activex.CLSID('{8856F961-340A-11D0-A96B-00C04FD705A2}'),
ID, pos, size, style, name)
# Methods from IEHtmlWindowBase. Redirected from here just for
# the sake of completeness...
def LoadString(self, html):
"""Load the html document from a string"""
return wx.activex.IEHtmlWindowBase.LoadString(self, html)
def LoadStream(self, stream):
"""
Load the html document from a wx.InputStream or a Python
file-like object.
"""
return wx.activex.IEHtmlWindowBase.LoadStream(self, stream)
def LoadUrl(self, URL, Flags=0):
"""Load the document from url."""
return self.Navigate2(URL, Flags)
def GetStringSelection(self, asHTML):
"""
Returns the contents of the selected portion of the document as
either html or plain text.
"""
return wx.activex.IEHtmlWindowBase.GetStringSelection(self, asHTML)
def GetText(self, asHTML):
"""
Returns the contents of the the html document as either html or plain text.
"""
return wx.activex.IEHtmlWindowBase.GetText(self, asHTML)
def SetCharset(self, charset):
""""""
return wx.activex.IEHtmlWindowBase.SetCharset(self, charset)
# Methods exported by the ActiveX object
def QueryInterface(self, riid):
return self.CallAXMethod('QueryInterface', riid)
def AddRef(self):
return self.CallAXMethod('AddRef')
def Release(self):
return self.CallAXMethod('Release')
def GetTypeInfoCount(self):
return self.CallAXMethod('GetTypeInfoCount')
def GetTypeInfo(self, itinfo, lcid):
return self.CallAXMethod('GetTypeInfo', itinfo, lcid)
def GetIDsOfNames(self, riid, rgszNames, cNames, lcid):
return self.CallAXMethod('GetIDsOfNames', riid, rgszNames, cNames, lcid)
def Invoke(self, dispidMember, riid, lcid, wFlags, pdispparams):
return self.CallAXMethod('Invoke', dispidMember, riid, lcid, wFlags, pdispparams)
def GoBack(self):
return self.CallAXMethod('GoBack')
def GoForward(self):
return self.CallAXMethod('GoForward')
def GoHome(self):
return self.CallAXMethod('GoHome')
def GoSearch(self):
return self.CallAXMethod('GoSearch')
# added default for Flags
def Navigate(self, URL, Flags=0, TargetFrameName=None, PostData=None, Headers=None):
return self.CallAXMethod('Navigate', URL, Flags, TargetFrameName, PostData, Headers)
# Removed to prevent conflict with wx.Window.Refresh
#def Refresh(self):
# return self.CallAXMethod('Refresh')
# renamed
def RefreshPage(self, Level=REFRESH_NORMAL):
return self.CallAXMethod('Refresh2', Level)
def Stop(self):
return self.CallAXMethod('Stop')
def Quit(self):
return self.CallAXMethod('Quit')
def ClientToWindow(self, pcx, pcy):
return self.CallAXMethod('ClientToWindow', pcx, pcy)
def PutProperty(self, Property, vtValue):
return self.CallAXMethod('PutProperty', Property, vtValue)
def GetProperty(self, Property):
return self.CallAXMethod('GetProperty', Property)
# added default for flags
def Navigate2(self, URL, Flags=0, TargetFrameName=None, PostData=None, Headers=None):
return self.CallAXMethod('Navigate2', URL, Flags, TargetFrameName, PostData, Headers)
def QueryStatusWB(self, cmdID):
return self.CallAXMethod('QueryStatusWB', cmdID)
def ExecWB(self, cmdID, cmdexecopt, pvaIn, pvaOut=None):
return self.CallAXMethod('ExecWB', cmdID, cmdexecopt, pvaIn, pvaOut)
def ShowBrowserBar(self, pvaClsid, pvarShow, pvarSize=None):
return self.CallAXMethod('ShowBrowserBar', pvaClsid, pvarShow, pvarSize)
# Getters, Setters and properties
def _get_Application(self):
return self.GetAXProp('Application')
application = property(_get_Application, None)
def _get_Parent(self):
return self.GetAXProp('Parent')
parent = property(_get_Parent, None)
def _get_Container(self):
return self.GetAXProp('Container')
container = property(_get_Container, None)
def _get_Document(self):
return self.GetAXProp('Document')
document = property(_get_Document, None)
def _get_TopLevelContainer(self):
return self.GetAXProp('TopLevelContainer')
toplevelcontainer = property(_get_TopLevelContainer, None)
def _get_Type(self):
return self.GetAXProp('Type')
type = property(_get_Type, None)
def _get_Left(self):
return self.GetAXProp('Left')
def _set_Left(self, Left):
self.SetAXProp('Left', Left)
left = property(_get_Left, _set_Left)
def _get_Top(self):
return self.GetAXProp('Top')
def _set_Top(self, Top):
self.SetAXProp('Top', Top)
top = property(_get_Top, _set_Top)
def _get_Width(self):
return self.GetAXProp('Width')
def _set_Width(self, Width):
self.SetAXProp('Width', Width)
width = property(_get_Width, _set_Width)
def _get_Height(self):
return self.GetAXProp('Height')
def _set_Height(self, Height):
self.SetAXProp('Height', Height)
height = property(_get_Height, _set_Height)
def _get_LocationName(self):
return self.GetAXProp('LocationName')
locationname = property(_get_LocationName, None)
def _get_LocationURL(self):
return self.GetAXProp('LocationURL')
locationurl = property(_get_LocationURL, None)
def _get_Busy(self):
return self.GetAXProp('Busy')
busy = property(_get_Busy, None)
def _get_Name(self):
return self.GetAXProp('Name')
name = property(_get_Name, None)
def _get_HWND(self):
return self.GetAXProp('HWND')
hwnd = property(_get_HWND, None)
def _get_FullName(self):
return self.GetAXProp('FullName')
fullname = property(_get_FullName, None)
def _get_Path(self):
return self.GetAXProp('Path')
path = property(_get_Path, None)
def _get_Visible(self):
return self.GetAXProp('Visible')
def _set_Visible(self, Visible):
self.SetAXProp('Visible', Visible)
visible = property(_get_Visible, _set_Visible)
def _get_StatusBar(self):
return self.GetAXProp('StatusBar')
def _set_StatusBar(self, StatusBar):
self.SetAXProp('StatusBar', StatusBar)
statusbar = property(_get_StatusBar, _set_StatusBar)
def _get_StatusText(self):
return self.GetAXProp('StatusText')
def _set_StatusText(self, StatusText):
self.SetAXProp('StatusText', StatusText)
statustext = property(_get_StatusText, _set_StatusText)
def _get_ToolBar(self):
return self.GetAXProp('ToolBar')
def _set_ToolBar(self, ToolBar):
self.SetAXProp('ToolBar', ToolBar)
toolbar = property(_get_ToolBar, _set_ToolBar)
def _get_MenuBar(self):
return self.GetAXProp('MenuBar')
def _set_MenuBar(self, MenuBar):
self.SetAXProp('MenuBar', MenuBar)
menubar = property(_get_MenuBar, _set_MenuBar)
def _get_FullScreen(self):
return self.GetAXProp('FullScreen')
def _set_FullScreen(self, FullScreen):
self.SetAXProp('FullScreen', FullScreen)
fullscreen = property(_get_FullScreen, _set_FullScreen)
def _get_ReadyState(self):
return self.GetAXProp('ReadyState')
readystate = property(_get_ReadyState, None)
def _get_Offline(self):
return self.GetAXProp('Offline')
def _set_Offline(self, Offline):
self.SetAXProp('Offline', Offline)
offline = property(_get_Offline, _set_Offline)
def _get_Silent(self):
return self.GetAXProp('Silent')
def _set_Silent(self, Silent):
self.SetAXProp('Silent', Silent)
silent = property(_get_Silent, _set_Silent)
def _get_RegisterAsBrowser(self):
return self.GetAXProp('RegisterAsBrowser')
def _set_RegisterAsBrowser(self, RegisterAsBrowser):
self.SetAXProp('RegisterAsBrowser', RegisterAsBrowser)
registerasbrowser = property(_get_RegisterAsBrowser, _set_RegisterAsBrowser)
def _get_RegisterAsDropTarget(self):
return self.GetAXProp('RegisterAsDropTarget')
def _set_RegisterAsDropTarget(self, RegisterAsDropTarget):
self.SetAXProp('RegisterAsDropTarget', RegisterAsDropTarget)
registerasdroptarget = property(_get_RegisterAsDropTarget, _set_RegisterAsDropTarget)
def _get_TheaterMode(self):
return self.GetAXProp('TheaterMode')
def _set_TheaterMode(self, TheaterMode):
self.SetAXProp('TheaterMode', TheaterMode)
theatermode = property(_get_TheaterMode, _set_TheaterMode)
def _get_AddressBar(self):
return self.GetAXProp('AddressBar')
def _set_AddressBar(self, AddressBar):
self.SetAXProp('AddressBar', AddressBar)
addressbar = property(_get_AddressBar, _set_AddressBar)
def _get_Resizable(self):
return self.GetAXProp('Resizable')
def _set_Resizable(self, Resizable):
self.SetAXProp('Resizable', Resizable)
resizable = property(_get_Resizable, _set_Resizable)
# PROPERTIES
# --------------------
# application
# type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
#
# parent
# type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
#
# container
# type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
#
# document
# type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
#
# toplevelcontainer
# type:bool arg:VT_EMPTY canGet:True canSet:False
#
# type
# type:string arg:VT_EMPTY canGet:True canSet:False
#
# left
# type:int arg:int canGet:True canSet:True
#
# top
# type:int arg:int canGet:True canSet:True
#
# width
# type:int arg:int canGet:True canSet:True
#
# height
# type:int arg:int canGet:True canSet:True
#
# locationname
# type:string arg:VT_EMPTY canGet:True canSet:False
#
# locationurl
# type:string arg:VT_EMPTY canGet:True canSet:False
#
# busy
# type:bool arg:VT_EMPTY canGet:True canSet:False
#
# name
# type:string arg:VT_EMPTY canGet:True canSet:False
#
# hwnd
# type:int arg:VT_EMPTY canGet:True canSet:False
#
# fullname
# type:string arg:VT_EMPTY canGet:True canSet:False
#
# path
# type:string arg:VT_EMPTY canGet:True canSet:False
#
# visible
# type:bool arg:bool canGet:True canSet:True
#
# statusbar
# type:bool arg:bool canGet:True canSet:True
#
# statustext
# type:string arg:string canGet:True canSet:True
#
# toolbar
# type:int arg:int canGet:True canSet:True
#
# menubar
# type:bool arg:bool canGet:True canSet:True
#
# fullscreen
# type:bool arg:bool canGet:True canSet:True
#
# readystate
# type:unsupported type 29 arg:VT_EMPTY canGet:True canSet:False
#
# offline
# type:bool arg:bool canGet:True canSet:True
#
# silent
# type:bool arg:bool canGet:True canSet:True
#
# registerasbrowser
# type:bool arg:bool canGet:True canSet:True
#
# registerasdroptarget
# type:bool arg:bool canGet:True canSet:True
#
# theatermode
# type:bool arg:bool canGet:True canSet:True
#
# addressbar
# type:bool arg:bool canGet:True canSet:True
#
# resizable
# type:bool arg:bool canGet:True canSet:True
#
#
#
#
# METHODS
# --------------------
# QueryInterface
# retType: VT_VOID
# params:
# riid
# in:True out:False optional:False type:unsupported type 29
# ppvObj
# in:False out:True optional:False type:unsupported type 26
#
# AddRef
# retType: int
#
# Release
# retType: int
#
# GetTypeInfoCount
# retType: VT_VOID
# params:
# pctinfo
# in:False out:True optional:False type:int
#
# GetTypeInfo
# retType: VT_VOID
# params:
# itinfo
# in:True out:False optional:False type:int
# lcid
# in:True out:False optional:False type:int
# pptinfo
# in:False out:True optional:False type:unsupported type 26
#
# GetIDsOfNames
# retType: VT_VOID
# params:
# riid
# in:True out:False optional:False type:unsupported type 29
# rgszNames
# in:True out:False optional:False type:unsupported type 26
# cNames
# in:True out:False optional:False type:int
# lcid
# in:True out:False optional:False type:int
# rgdispid
# in:False out:True optional:False type:int
#
# Invoke
# retType: VT_VOID
# params:
# dispidMember
# in:True out:False optional:False type:int
# riid
# in:True out:False optional:False type:unsupported type 29
# lcid
# in:True out:False optional:False type:int
# wFlags
# in:True out:False optional:False type:int
# pdispparams
# in:True out:False optional:False type:unsupported type 29
# pvarResult
# in:False out:True optional:False type:VT_VARIANT
# pexcepinfo
# in:False out:True optional:False type:unsupported type 29
# puArgErr
# in:False out:True optional:False type:int
#
# GoBack
# retType: VT_VOID
#
# GoForward
# retType: VT_VOID
#
# GoHome
# retType: VT_VOID
#
# GoSearch
# retType: VT_VOID
#
# Navigate
# retType: VT_VOID
# params:
# URL
# in:True out:False optional:False type:string
# Flags
# in:True out:False optional:False type:VT_VARIANT
# TargetFrameName
# in:True out:False optional:True type:VT_VARIANT
# PostData
# in:True out:False optional:True type:VT_VARIANT
# Headers
# in:True out:False optional:True type:VT_VARIANT
#
# Refresh
# retType: VT_VOID
#
# Refresh2
# retType: VT_VOID
# params:
# Level
# in:True out:False optional:False type:VT_VARIANT
#
# Stop
# retType: VT_VOID
#
# Quit
# retType: VT_VOID
#
# ClientToWindow
# retType: VT_VOID
# params:
# pcx
# in:True out:True optional:False type:int
# pcy
# in:True out:True optional:False type:int
#
# PutProperty
# retType: VT_VOID
# params:
# Property
# in:True out:False optional:False type:string
# vtValue
# in:True out:False optional:False type:VT_VARIANT
#
# GetProperty
# retType: VT_VARIANT
# params:
# Property
# in:True out:False optional:False type:string
#
# Navigate2
# retType: VT_VOID
# params:
# URL
# in:True out:False optional:False type:VT_VARIANT
# Flags
# in:True out:False optional:False type:VT_VARIANT
# TargetFrameName
# in:True out:False optional:True type:VT_VARIANT
# PostData
# in:True out:False optional:True type:VT_VARIANT
# Headers
# in:True out:False optional:True type:VT_VARIANT
#
# QueryStatusWB
# retType: unsupported type 29
# params:
# cmdID
# in:True out:False optional:False type:unsupported type 29
#
# ExecWB
# retType: VT_VOID
# params:
# cmdID
# in:True out:False optional:False type:unsupported type 29
# cmdexecopt
# in:True out:False optional:False type:unsupported type 29
# pvaIn
# in:True out:False optional:False type:VT_VARIANT
# pvaOut
# in:True out:True optional:True type:VT_VARIANT
#
# ShowBrowserBar
# retType: VT_VOID
# params:
# pvaClsid
# in:True out:False optional:False type:VT_VARIANT
# pvarShow
# in:True out:False optional:False type:VT_VARIANT
# pvarSize
# in:True out:False optional:True type:VT_VARIANT
#
#
#
#
# EVENTS
# --------------------
# StatusTextChange
# retType: VT_VOID
# params:
# Text
# in:True out:False optional:False type:string
#
# ProgressChange
# retType: VT_VOID
# params:
# Progress
# in:True out:False optional:False type:int
# ProgressMax
# in:True out:False optional:False type:int
#
# CommandStateChange
# retType: VT_VOID
# params:
# Command
# in:True out:False optional:False type:int
# Enable
# in:True out:False optional:False type:bool
#
# DownloadBegin
# retType: VT_VOID
#
# DownloadComplete
# retType: VT_VOID
#
# TitleChange
# retType: VT_VOID
# params:
# Text
# in:True out:False optional:False type:string
#
# PropertyChange
# retType: VT_VOID
# params:
# szProperty
# in:True out:False optional:False type:string
#
# BeforeNavigate2
# retType: VT_VOID
# params:
# pDisp
# in:True out:False optional:False type:VT_DISPATCH
# URL
# in:True out:False optional:False type:VT_VARIANT
# Flags
# in:True out:False optional:False type:VT_VARIANT
# TargetFrameName
# in:True out:False optional:False type:VT_VARIANT
# PostData
# in:True out:False optional:False type:VT_VARIANT
# Headers
# in:True out:False optional:False type:VT_VARIANT
# Cancel
# in:True out:True optional:False type:bool
#
# NewWindow2
# retType: VT_VOID
# params:
# ppDisp
# in:True out:True optional:False type:VT_DISPATCH
# Cancel
# in:True out:True optional:False type:bool
#
# NavigateComplete2
# retType: VT_VOID
# params:
# pDisp
# in:True out:False optional:False type:VT_DISPATCH
# URL
# in:True out:False optional:False type:VT_VARIANT
#
# DocumentComplete
# retType: VT_VOID
# params:
# pDisp
# in:True out:False optional:False type:VT_DISPATCH
# URL
# in:True out:False optional:False type:VT_VARIANT
#
# Quit
# retType: VT_VOID
#
# Visible
# retType: VT_VOID
# params:
# Visible
# in:True out:False optional:False type:bool
#
# ToolBar
# retType: VT_VOID
# params:
# ToolBar
# in:True out:False optional:False type:bool
#
# MenuBar
# retType: VT_VOID
# params:
# MenuBar
# in:True out:False optional:False type:bool
#
# StatusBar
# retType: VT_VOID
# params:
# StatusBar
# in:True out:False optional:False type:bool
#
# FullScreen
# retType: VT_VOID
# params:
# FullScreen
# in:True out:False optional:False type:bool
#
# TheaterMode
# retType: VT_VOID
# params:
# TheaterMode
# in:True out:False optional:False type:bool
#
# WindowSetResizable
# retType: VT_VOID
# params:
# Resizable
# in:True out:False optional:False type:bool
#
# WindowSetLeft
# retType: VT_VOID
# params:
# Left
# in:True out:False optional:False type:int
#
# WindowSetTop
# retType: VT_VOID
# params:
# Top
# in:True out:False optional:False type:int
#
# WindowSetWidth
# retType: VT_VOID
# params:
# Width
# in:True out:False optional:False type:int
#
# WindowSetHeight
# retType: VT_VOID
# params:
# Height
# in:True out:False optional:False type:int
#
# WindowClosing
# retType: VT_VOID
# params:
# IsChildWindow
# in:True out:False optional:False type:bool
# Cancel
# in:True out:True optional:False type:bool
#
# ClientToHostWindow
# retType: VT_VOID
# params:
# CX
# in:True out:True optional:False type:int
# CY
# in:True out:True optional:False type:int
#
# SetSecureLockIcon
# retType: VT_VOID
# params:
# SecureLockIcon
# in:True out:False optional:False type:int
#
# FileDownload
# retType: VT_VOID
# params:
# Cancel
# in:True out:True optional:False type:bool
#
# NavigateError
# retType: VT_VOID
# params:
# pDisp
# in:True out:False optional:False type:VT_DISPATCH
# URL
# in:True out:False optional:False type:VT_VARIANT
# Frame
# in:True out:False optional:False type:VT_VARIANT
# StatusCode
# in:True out:False optional:False type:VT_VARIANT
# Cancel
# in:True out:True optional:False type:bool
#
# PrintTemplateInstantiation
# retType: VT_VOID
# params:
# pDisp
# in:True out:False optional:False type:VT_DISPATCH
#
# PrintTemplateTeardown
# retType: VT_VOID
# params:
# pDisp
# in:True out:False optional:False type:VT_DISPATCH
#
# UpdatePageStatus
# retType: VT_VOID
# params:
# pDisp
# in:True out:False optional:False type:VT_DISPATCH
# nPage
# in:True out:False optional:False type:VT_VARIANT
# fDone
# in:True out:False optional:False type:VT_VARIANT
#
# PrivacyImpactedStateChange
# retType: VT_VOID
# params:
# bImpacted
# in:True out:False optional:False type:bool
#
#
#
#

261
wxPython/wx/lib/pdfwin.py Normal file
View File

@@ -0,0 +1,261 @@
#----------------------------------------------------------------------
# Name: wx.lib.pdfwin
# Purpose: A class that allows the use of the Acrobat PSF reader
# ActiveX control
#
# Author: Robin Dunn
#
# Created: 22-March-2004
# RCS-ID: $Id$
# Copyright: (c) 2004 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------
# This module was generated by the wx.activex.GernerateAXModule class
# (See also the genaxmodule script.)
import wx
import wx.activex
clsID = '{CA8A9780-280D-11CF-A24D-444553540000}'
progID = 'PDF.PdfCtrl.5'
# Derive a new class from ActiveXWindow
class PDFWindow(wx.activex.ActiveXWindow):
def __init__(self, parent, ID=-1, pos=wx.DefaultPosition,
size=wx.DefaultSize, style=0, name='PDFWindow'):
wx.activex.ActiveXWindow.__init__(self, parent,
wx.activex.CLSID('{CA8A9780-280D-11CF-A24D-444553540000}'),
ID, pos, size, style, name)
# Methods exported by the ActiveX object
def LoadFile(self, fileName):
return self.CallAXMethod('LoadFile', fileName)
def setShowToolbar(self, On):
return self.CallAXMethod('setShowToolbar', On)
def gotoFirstPage(self):
return self.CallAXMethod('gotoFirstPage')
def gotoLastPage(self):
return self.CallAXMethod('gotoLastPage')
def gotoNextPage(self):
return self.CallAXMethod('gotoNextPage')
def gotoPreviousPage(self):
return self.CallAXMethod('gotoPreviousPage')
def setCurrentPage(self, n):
return self.CallAXMethod('setCurrentPage', n)
def goForwardStack(self):
return self.CallAXMethod('goForwardStack')
def goBackwardStack(self):
return self.CallAXMethod('goBackwardStack')
def setPageMode(self, pageMode):
return self.CallAXMethod('setPageMode', pageMode)
def setLayoutMode(self, layoutMode):
return self.CallAXMethod('setLayoutMode', layoutMode)
def setNamedDest(self, namedDest):
return self.CallAXMethod('setNamedDest', namedDest)
def Print(self):
return self.CallAXMethod('Print')
def printWithDialog(self):
return self.CallAXMethod('printWithDialog')
def setZoom(self, percent):
return self.CallAXMethod('setZoom', percent)
def setZoomScroll(self, percent, left, top):
return self.CallAXMethod('setZoomScroll', percent, left, top)
def setView(self, viewMode):
return self.CallAXMethod('setView', viewMode)
def setViewScroll(self, viewMode, offset):
return self.CallAXMethod('setViewScroll', viewMode, offset)
def setViewRect(self, left, top, width, height):
return self.CallAXMethod('setViewRect', left, top, width, height)
def printPages(self, from_, to):
return self.CallAXMethod('printPages', from_, to)
def printPagesFit(self, from_, to, shrinkToFit):
return self.CallAXMethod('printPagesFit', from_, to, shrinkToFit)
def printAll(self):
return self.CallAXMethod('printAll')
def printAllFit(self, shrinkToFit):
return self.CallAXMethod('printAllFit', shrinkToFit)
def setShowScrollbars(self, On):
return self.CallAXMethod('setShowScrollbars', On)
def AboutBox(self):
return self.CallAXMethod('AboutBox')
# PROPERTIES
# --------------------
#
#
#
# METHODS
# --------------------
# LoadFile
# retType: bool
# params:
# fileName
# in:False out:False optional:False type:string
#
# setShowToolbar
# retType: VT_VOID
# params:
# On
# in:False out:False optional:False type:bool
#
# gotoFirstPage
# retType: VT_VOID
#
# gotoLastPage
# retType: VT_VOID
#
# gotoNextPage
# retType: VT_VOID
#
# gotoPreviousPage
# retType: VT_VOID
#
# setCurrentPage
# retType: VT_VOID
# params:
# n
# in:False out:False optional:False type:int
#
# goForwardStack
# retType: VT_VOID
#
# goBackwardStack
# retType: VT_VOID
#
# setPageMode
# retType: VT_VOID
# params:
# pageMode
# in:False out:False optional:False type:string
#
# setLayoutMode
# retType: VT_VOID
# params:
# layoutMode
# in:False out:False optional:False type:string
#
# setNamedDest
# retType: VT_VOID
# params:
# namedDest
# in:False out:False optional:False type:string
#
# Print
# retType: VT_VOID
#
# printWithDialog
# retType: VT_VOID
#
# setZoom
# retType: VT_VOID
# params:
# percent
# in:False out:False optional:False type:double
#
# setZoomScroll
# retType: VT_VOID
# params:
# percent
# in:False out:False optional:False type:double
# left
# in:False out:False optional:False type:double
# top
# in:False out:False optional:False type:double
#
# setView
# retType: VT_VOID
# params:
# viewMode
# in:False out:False optional:False type:string
#
# setViewScroll
# retType: VT_VOID
# params:
# viewMode
# in:False out:False optional:False type:string
# offset
# in:False out:False optional:False type:double
#
# setViewRect
# retType: VT_VOID
# params:
# left
# in:False out:False optional:False type:double
# top
# in:False out:False optional:False type:double
# width
# in:False out:False optional:False type:double
# height
# in:False out:False optional:False type:double
#
# printPages
# retType: VT_VOID
# params:
# from
# in:False out:False optional:False type:int
# to
# in:False out:False optional:False type:int
#
# printPagesFit
# retType: VT_VOID
# params:
# from
# in:False out:False optional:False type:int
# to
# in:False out:False optional:False type:int
# shrinkToFit
# in:False out:False optional:False type:bool
#
# printAll
# retType: VT_VOID
#
# printAllFit
# retType: VT_VOID
# params:
# shrinkToFit
# in:False out:False optional:False type:bool
#
# setShowScrollbars
# retType: VT_VOID
# params:
# On
# in:False out:False optional:False type:bool
#
# AboutBox
# retType: VT_VOID
#
#
#
#
# EVENTS
# --------------------
#
#
#

View File

@@ -0,0 +1,43 @@
"""
When this script is run it will create a .py module (output to the
current directory) containing a class derived from
wx.activex.ActiveXWindow for the progID or CLSID given on the command
line. By default the class name will be used as the module name as
well, but this is just because I am lazy, not trying to define a
standard or anything. Feel free to rename the module, I do.
Usage:
python genax.py CLSID|progID className
"""
import wx
import wx.activex
import sys
def main(args):
if len(args) < 3:
print __doc__
sys.exit(1)
# unfortunatly we need to make an app, frame and an instance of
# the ActiceX control in order to get the TypeInfo about it...
app = wx.PySimpleApp()
f = wx.Frame(None, -1, "")
clsid = wx.activex.CLSID(args[1])
axw = wx.activex.ActiveXWindow(f, clsid)
wx.activex.GernerateAXModule(axw, args[2], '.', verbose=True)
# Cleanup
f.Close()
app.MainLoop()
if __name__ == "__main__":
main(sys.argv)

View File

@@ -0,0 +1,52 @@
## This file reverse renames symbols in the wx package to give
## them their wx prefix again, for backwards compatibility.
##
## Generated by ./distrib/build_renamers.py
# This silly stuff here is so the wxPython.wx module doesn't conflict
# with the wx package. We need to import modules from the wx package
# here, then we'll put the wxPython.wx entry back in sys.modules.
import sys
_wx = None
if sys.modules.has_key('wxPython.wx'):
_wx = sys.modules['wxPython.wx']
del sys.modules['wxPython.wx']
import wx.activex
sys.modules['wxPython.wx'] = _wx
del sys, _wx
# Now assign all the reverse-renamed names:
CLSID = wx.activex.CLSID
CLSIDPtr = wx.activex.CLSIDPtr
wxParamX = wx.activex.ParamX
wxParamXPtr = wx.activex.ParamXPtr
wxFuncX = wx.activex.FuncX
wxFuncXPtr = wx.activex.FuncXPtr
wxPropX = wx.activex.PropX
wxPropXPtr = wx.activex.PropXPtr
wxParamXArray = wx.activex.ParamXArray
wxParamXArrayPtr = wx.activex.ParamXArrayPtr
wxFuncXArray = wx.activex.FuncXArray
wxFuncXArrayPtr = wx.activex.FuncXArrayPtr
wxPropXArray = wx.activex.PropXArray
wxPropXArrayPtr = wx.activex.PropXArrayPtr
wxActiveXWindow = wx.activex.ActiveXWindow
wxActiveXWindowPtr = wx.activex.ActiveXWindowPtr
RegisterActiveXEvent = wx.activex.RegisterActiveXEvent
wxActiveXEvent = wx.activex.ActiveXEvent
wxActiveXEventPtr = wx.activex.ActiveXEventPtr
wxIEHtmlWindowBase = wx.activex.IEHtmlWindowBase
wxIEHtmlWindowBasePtr = wx.activex.IEHtmlWindowBasePtr
d = globals()
for k, v in wx.activex.__dict__.iteritems():
if k.startswith('EVT'):
d[k] = v
del d, k, v