]>
git.saurik.com Git - wxWidgets.git/blob - interface/msw/ole/automtn.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: msw/ole/automtn.h
3 // Purpose: interface of wxAutomationObject
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
10 @class wxAutomationObject
11 @headerfile ole/automtn.h wx/msw/ole/automtn.h
13 The @b wxAutomationObject class represents an OLE automation object containing
15 an IDispatch pointer. It contains a number of functions that make it easy to
17 automation operations, and set and get properties. The class makes heavy use of
20 The usage of these classes is quite close to OLE automation usage in Visual
22 high-level, and the application can specify multiple properties in a single
23 string. The following example
24 gets the current Excel instance, and if it exists, makes the active cell bold.
27 wxAutomationObject excelObject;
28 if (excelObject.GetInstance("Excel.Application"))
29 excelObject.PutProperty("ActiveCell.Font.Bold", @true);
32 Note that this class obviously works under Windows only.
39 class wxAutomationObject
: public wxObject
43 Constructor, taking an optional IDispatch pointer which will be released when
47 wxAutomationObject(WXIDISPATCH
* dispatchPtr
= NULL
);
50 Destructor. If the internal IDispatch pointer is non-null, it will be released.
52 ~wxAutomationObject();
56 Calls an automation method for this object. The first form takes a method name,
58 arguments, and an array of variants. The second form takes a method name and
60 constant references to variants. Since the variant class has constructors for
62 data types, and C++ provides temporary objects automatically, both of the
64 are syntactically valid:
66 Note that @a method can contain dot-separated property names, to save the
68 needing to call GetProperty several times using several temporary objects. For
71 wxVariant
CallMethod(const wxString
& method
, int noArgs
,
72 wxVariant args
[]) const;
73 const wxVariant
CallMethod(const wxString
& method
, ... ) const;
77 Creates a new object based on the class id, returning @true if the object was
81 bool CreateInstance(const wxString
& classId
) const;
84 Gets the IDispatch pointer.
86 IDispatch
* GetDispatchPtr() const;
89 Retrieves the current object associated with a class id, and attaches the
91 to this object. Returns @true if a pointer was successfully retrieved, @false
93 Note that this cannot cope with two instances of a given OLE object being
94 active simultaneously,
95 such as two copies of Excel running. Which object is referenced cannot
96 currently be specified.
98 bool GetInstance(const wxString
& classId
) const;
101 Retrieves a property from this object, assumed to be a dispatch pointer, and
102 initialises @a obj with it.
103 To avoid having to deal with IDispatch pointers directly, use this function in
105 to GetProperty() when retrieving objects
107 Note that an IDispatch pointer is stored as a void* pointer in wxVariant
112 bool GetObject(wxAutomationObject
& obj
, const wxString
& property
,
114 wxVariant args
[] = NULL
) const;
118 Gets a property value from this object. The first form takes a property name,
120 arguments, and an array of variants. The second form takes a property name and
122 constant references to variants. Since the variant class has constructors for
124 data types, and C++ provides temporary objects automatically, both of the
126 are syntactically valid:
128 Note that @a property can contain dot-separated property names, to save the
130 needing to call GetProperty several times using several temporary objects.
132 wxVariant
GetProperty(const wxString
& property
, int noArgs
,
133 wxVariant args
[]) const;
134 const wxVariant
GetProperty(const wxString
& property
, ... ) const;
138 This function is a low-level implementation that allows access to the IDispatch
140 It is not meant to be called directly by the application, but is used by other
141 convenience functions.
144 The member function or property name.
146 Bitlist: may contain DISPATCH_PROPERTYPUT, DISPATCH_PROPERTYPUTREF,
149 Return value (ignored if there is no return value)
151 Number of arguments in args or ptrArgs.
153 If non-null, contains an array of variants.
155 If non-null, contains an array of constant pointers to variants.
157 @returns @true if the operation was successful, @false otherwise.
159 @remarks Two types of argument array are provided, so that when possible
160 pointers are used for efficiency.
162 bool Invoke(const wxString
& member
, int action
,
163 wxVariant
& retValue
, int noArgs
,
165 const wxVariant
* ptrArgs
[] = 0) const;
169 Puts a property value into this object. The first form takes a property name,
171 arguments, and an array of variants. The second form takes a property name and
173 constant references to variants. Since the variant class has constructors for
175 data types, and C++ provides temporary objects automatically, both of the
177 are syntactically valid:
179 Note that @a property can contain dot-separated property names, to save the
181 needing to call GetProperty several times using several temporary objects.
183 bool PutProperty(const wxString
& property
, int noArgs
,
185 const bool PutProperty(const wxString
& property
, ... );
189 Sets the IDispatch pointer. This function does not check if there is already an
191 You may need to cast from IDispatch* to WXIDISPATCH* when calling this function.
193 void SetDispatchPtr(WXIDISPATCH
* dispatchPtr
);