]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/msw/ole/activex.h
Make storing non-trivial data in wxThreadSpecificInfo possible.
[wxWidgets.git] / interface / wx / msw / ole / activex.h
index 5bfeab0d715e446c80d81d7e6c7bc03897c025e9..13776688b2c8170a2535a9ef14980bc7543d77e1 100644 (file)
@@ -2,8 +2,7 @@
 // Name:        msw/ole/activex.h
 // Purpose:     interface of wxActiveXEvent
 // Author:      wxWidgets team
 // Name:        msw/ole/activex.h
 // Purpose:     interface of wxActiveXEvent
 // Author:      wxWidgets team
-// RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /**
 /////////////////////////////////////////////////////////////////////////////
 
 /**
 
     @beginEventTable{wxActiveXEvent}
     @event{EVT_ACTIVEX(func)}
 
     @beginEventTable{wxActiveXEvent}
     @event{EVT_ACTIVEX(func)}
-        Sent when the ActiveX control hosted by wxActiveXContainer recieves an
+        Sent when the ActiveX control hosted by wxActiveXContainer receives an
         ActiveX event.
     @endEventTable
 
         ActiveX event.
     @endEventTable
 
+    ActiveX event parameters can get extremely complex and may be beyond the
+    abilities of wxVariant. If 'operator[]' fails, prints an error messages or
+    crashes the application, event handlers should use GetNativeParameters()
+    instead to obtain the original event information.
+    Calls to operator[] and GetNativeParmeters() can be mixed. It is valid
+    to handle some parameters of an event with operator[] and others directly
+    through GetNativeParameters(). It is \b not valid however to manipulate
+    the same parameter using both approaches at the same time.
+
     @onlyfor{wxmsw}
 
     @library{wxcore}
     @onlyfor{wxmsw}
 
     @library{wxcore}
@@ -55,6 +63,16 @@ public:
         Obtains the actual parameter value specified by idx.
     */
     wxVariant operator[](size_t idx);
         Obtains the actual parameter value specified by idx.
     */
     wxVariant operator[](size_t idx);
+
+    /**
+        Obtain the original MSW parameters for the event.
+        Event handlers can use this information to handle complex event parameters
+        that are beyond the scope of wxVariant.
+        The information returned here is the information passed to the original
+        'Invoke' method call.
+        \return a pointer to a struct containing the original MSW event parameters
+    */
+    wxActiveXEventNativeMSW *GetNativeParameters() const;
 };
 
 
 };
 
 
@@ -66,7 +84,7 @@ public:
     is a platform-specific class).
 
     Note that the HWND that the class contains is the actual HWND of the ActiveX
     is a platform-specific class).
 
     Note that the HWND that the class contains is the actual HWND of the ActiveX
-    control so using dynamic events and connecting to wxEVT_SIZE, for example,
+    control so using dynamic events and connecting to @c wxEVT_SIZE, for example,
     will receive the actual size message sent to the control.
 
     It is somewhat similar to the ATL class CAxWindow in operation.
     will receive the actual size message sent to the control.
 
     It is somewhat similar to the ATL class CAxWindow in operation.
@@ -244,23 +262,23 @@ public:
         wxActiveXContainer* m_pAX;
         wxAutomationObject m_PDF;
 
         wxActiveXContainer* m_pAX;
         wxAutomationObject m_PDF;
 
-        DECLARE_DYNAMIC_CLASS(wxPDFMediaBackend)
+        wxDECLARE_DYNAMIC_CLASS(wxPDFMediaBackend)
     };
 
     };
 
-    IMPLEMENT_DYNAMIC_CLASS(wxPDFMediaBackend, wxMediaBackend);
-    Put this in one of your existant source files and then create a wxMediaCtrl with
+    wxIMPLEMENT_DYNAMIC_CLASS(wxPDFMediaBackend, wxMediaBackend);
 
 
-    //[this] is the parent window, "myfile.pdf" is the PDF file to open
+    // Put this in one of your existing source files and then create a wxMediaCtrl with
     wxMediaCtrl* mymediactrl = new wxMediaCtrl(this, "myfile.pdf", wxID_ANY,
                                             wxDefaultPosition, wxSize(300,300),
                                             0, "wxPDFMediaBackend");
     wxMediaCtrl* mymediactrl = new wxMediaCtrl(this, "myfile.pdf", wxID_ANY,
                                             wxDefaultPosition, wxSize(300,300),
                                             0, "wxPDFMediaBackend");
+            // [this] is the parent window, "myfile.pdf" is the PDF file to open
     @endcode
 
 
     @onlyfor{wxmsw}
 
     @endcode
 
 
     @onlyfor{wxmsw}
 
-    @library{wxbase}
-    @category{misc,ipc}
+    @library{wxcore}
+    @category{ctrl,ipc}
 
     @see wxActiveXEvent, @ref page_samples_flash
 */
 
     @see wxActiveXEvent, @ref page_samples_flash
 */
@@ -278,5 +296,18 @@ public:
             Interface of ActiveX control.
     */
     wxActiveXContainer(wxWindow* parent, REFIID iid, IUnknown* pUnk);
             Interface of ActiveX control.
     */
     wxActiveXContainer(wxWindow* parent, REFIID iid, IUnknown* pUnk);
+    /**
+        Queries host's site for interface.
+
+        @param iid
+            The iid of the required interface.
+        @param _interface
+            Double pointer to outgoing interface. Supply your own interface if desired.
+        @param desc
+            The description of the outgoing interface.
+        @return bool
+            Return true if interface supplied else return false.
+    */
+    virtual bool QueryClientSiteInterface(REFIID iid, void **_interface, const char *&desc);
 };
 
 };