]> 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 579522e088feb36ebb57d04af2fd2f7629ebc745..13776688b2c8170a2535a9ef14980bc7543d77e1 100644 (file)
@@ -2,44 +2,50 @@
 // Name:        msw/ole/activex.h
 // Purpose:     interface of wxActiveXEvent
 // Author:      wxWidgets team
-// RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /**
     @class wxActiveXEvent
 
-    An event class for handling activex events passed from wxActiveXContainer.
+    An event class for handling ActiveX events passed from wxActiveXContainer.
 
     ActiveX events are basically a function call with the parameters passed
     through an array of wxVariants along with a return value that is a wxVariant
     itself. What type the parameters or return value are depends on the context
     (i.e. what the .idl specifies).
 
-    Note that unlike the third party wxActiveX function names are not supported.
-
     @beginEventTable{wxActiveXEvent}
     @event{EVT_ACTIVEX(func)}
-        Sent when the activex control hosted by wxActiveXContainer recieves an
-        activex event.
+        Sent when the ActiveX control hosted by wxActiveXContainer receives an
+        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{wxbase}
+    @library{wxcore}
     @category{events}
 */
 class wxActiveXEvent : public wxCommandEvent
 {
 public:
     /**
-        Returns the dispatch id of this activex event.
+        Returns the dispatch id of this ActiveX event.
         This is the numeric value from the .idl file specified by the id().
     */
     DISPID GetDispatchId(int idx) const;
 
     /**
-        Obtains the number of parameters passed through the activex event.
+        Obtains the number of parameters passed through the ActiveX event.
     */
     size_t ParamCount() const;
 
@@ -57,6 +63,16 @@ public:
         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;
 };
 
 
@@ -64,19 +80,19 @@ public:
 /**
     @class wxActiveXContainer
 
-    wxActiveXContainer is a host for an activex control on Windows (and as such
+    wxActiveXContainer is a host for an ActiveX control on Windows (and as such
     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,
-    will recieve the actual size message sent to the control.
+    Note that the HWND that the class contains is the actual HWND of the ActiveX
+    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.
 
-    The size of the activex control's content is generally gauranteed to be that
+    The size of the ActiveX control's content is generally guaranteed to be that
     of the client size of the parent of this wxActiveXContainer.
 
-    You can also process activeX events through wxActiveXEvent.
+    You can also process ActiveX events through wxActiveXEvent.
 
 
     @section activexcontainer_example Example
@@ -160,9 +176,9 @@ public:
 
         virtual bool Load(const wxString& fileName)
         {
-            if(m_PDF.CallMethod(wxT("LoadFile"), fileName).GetBool())
+            if(m_PDF.CallMethod("LoadFile", fileName).GetBool())
             {
-                m_PDF.CallMethod(wxT("setCurrentPage"), wxVariant((long)0));
+                m_PDF.CallMethod("setCurrentPage", wxVariant((long)0));
                 NotifyMovieLoaded(); // initial refresh
                 wxSizeEvent event;
                 m_pAX->OnSize(event);
@@ -173,7 +189,7 @@ public:
         }
         virtual bool Load(const wxURI& location)
         {
-            return m_PDF.CallMethod(wxT("LoadFile"), location.BuildUnescapedURI()).GetBool();
+            return m_PDF.CallMethod("LoadFile", location.BuildUnescapedURI()).GetBool();
         }
         virtual bool Load(const wxURI& WXUNUSED(location),
                         const wxURI& WXUNUSED(proxy))
@@ -188,7 +204,7 @@ public:
 
         virtual bool SetPosition(wxLongLong where)
         {
-            m_PDF.CallMethod(wxT("setCurrentPage"), wxVariant((long)where.GetValue()));
+            m_PDF.CallMethod("setCurrentPage", wxVariant((long)where.GetValue()));
             return true;
         }
         virtual wxLongLong GetPosition()
@@ -231,13 +247,13 @@ public:
         {
             if(flags)
             {
-                m_PDF.CallMethod(wxT("setShowToolbar"), true);
-                m_PDF.CallMethod(wxT("setShowScrollbars"), true);
+                m_PDF.CallMethod("setShowToolbar", true);
+                m_PDF.CallMethod("setShowScrollbars", true);
             }
             else
             {
-                m_PDF.CallMethod(wxT("setShowToolbar"), false);
-                m_PDF.CallMethod(wxT("setShowScrollbars"), false);
+                m_PDF.CallMethod("setShowToolbar", false);
+                m_PDF.CallMethod("setShowScrollbars", false);
             }
 
             return true;
@@ -246,39 +262,52 @@ public:
         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
-    wxMediaCtrl* mymediactrl = new wxMediaCtrl(this, wxT("myfile.pdf"), wxID_ANY,
+    // 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, wxT("wxPDFMediaBackend"));
+                                            0, "wxPDFMediaBackend");
+            // [this] is the parent window, "myfile.pdf" is the PDF file to open
     @endcode
 
 
     @onlyfor{wxmsw}
 
-    @library{wxbase}
-    @category{misc,ipc}
+    @library{wxcore}
+    @category{ctrl,ipc}
 
-    @see wxActiveXEvent
+    @see wxActiveXEvent, @ref page_samples_flash
 */
 class wxActiveXContainer : public wxControl
 {
 public:
     /**
-        Creates this activex container.
+        Creates this ActiveX container.
 
         @param parent
             parent of this control. Must not be @NULL.
         @param iid
-            COM IID of pUnk to query. Must be a valid interface to an activex control.
+            COM IID of pUnk to query. Must be a valid interface to an ActiveX control.
         @param pUnk
-            Interface of activex control.
+            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);
 };