]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/ole/automtn.cpp
Setting eol-style property to CRLF for some project files.
[wxWidgets.git] / src / msw / ole / automtn.cpp
index 3fb683fbcfab46eb130ad91ba2f9a59721f4f121..127b52b527d9626fca2c4af01e72b9064df5e5f4 100644 (file)
@@ -159,7 +159,7 @@ bool wxAutomationObject::Invoke(const wxString& member, int action,
     {
         namedArgCount = 1;
         dispIds[1] = DISPID_PROPERTYPUT;
-        vReturnPtr = (VARIANTARG*) NULL;
+        vReturnPtr = NULL;
     }
 
     // Convert the wxVariants to VARIANTARGs
@@ -220,7 +220,7 @@ bool wxAutomationObject::Invoke(const wxString& member, int action,
             // Mustn't release the dispatch pointer
             if (vReturn.vt == VT_DISPATCH)
             {
-                vReturn.pdispVal = (IDispatch*) NULL;
+                vReturn.pdispVal = NULL;
             }
             ReleaseVariant(& vReturn);
         }
@@ -440,7 +440,7 @@ WXIDISPATCH* wxAutomationObject::GetDispatchProperty(const wxString& property, i
         }
     }
 
-    return (WXIDISPATCH*) NULL;
+    return NULL;
 }
 
 // Uses DISPATCH_PROPERTYGET
@@ -458,7 +458,7 @@ WXIDISPATCH* wxAutomationObject::GetDispatchProperty(const wxString& property, i
         }
     }
 
-    return (WXIDISPATCH*) NULL;
+    return NULL;
 }
 
 
@@ -538,8 +538,13 @@ bool wxAutomationObject::CreateInstance(const wxString& classId) const
         return false;
     }
 
-    // start a new copy of Excel, grab the IDispatch interface
-    if (FAILED(CoCreateInstance(clsId, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void**)&m_dispatchPtr)))
+    // get the server IDispatch interface
+    //
+    // NB: using CLSCTX_INPROC_HANDLER results in failure when getting
+    //     Automation interface for Microsoft Office applications so don't use
+    //     CLSCTX_ALL which includes it
+    if (FAILED(CoCreateInstance(clsId, NULL, CLSCTX_SERVER, IID_IDispatch,
+                                (void**)&m_dispatchPtr)))
     {
         wxLogWarning(wxT("Cannot start an instance of this class."));
         return false;
@@ -601,11 +606,10 @@ WXDLLEXPORT bool wxConvertVariantToOle(const wxVariant& variant, VARIANTARG& ole
         wxDateTime date( variant.GetDateTime() );
         oleVariant.vt = VT_DATE;
 
-        long dosDateTime = date.GetAsDOS();
-        short dosDate = short((dosDateTime & 0xFFFF0000) >> 16);
-        short dosTime = short(dosDateTime & 0xFFFF);
+        SYSTEMTIME st;
+        date.GetAsMSWSysTime(&st);
 
-        DosDateTimeToVariantTime(dosDate, dosTime, & oleVariant.date);
+        SystemTimeToVariantTime(&st, &oleVariant.date);
     }
 #endif
     else if (type == wxT("void*"))
@@ -726,7 +730,7 @@ wxConvertOleToVariant(const VARIANTARG& oleVariant, wxVariant& variant)
                 break;
 
             default:
-                wxLogDebug(_T("unhandled VT_ARRAY type %x in wxConvertOleToVariant"),
+                wxLogDebug(wxT("unhandled VT_ARRAY type %x in wxConvertOleToVariant"),
                            oleVariant.vt & VT_TYPEMASK);
                 variant = wxVariant();
                 ok = false;
@@ -767,13 +771,11 @@ wxConvertOleToVariant(const VARIANTARG& oleVariant, wxVariant& variant)
             case VT_DATE:
 #if wxUSE_DATETIME
                 {
-                    unsigned short dosDate = 0;
-                    unsigned short dosTime = 0;
-                    VariantTimeToDosDateTime(oleVariant.date, & dosDate, & dosTime);
+                    SYSTEMTIME st;
+                    VariantTimeToSystemTime(oleVariant.date, &st);
 
-                    long dosDateTime = (dosDate << 16) | dosTime;
                     wxDateTime date;
-                    date.SetFromDOS(dosDateTime);
+                    date.SetFromMSWSysTime(st);
                     variant = date;
                 }
 #endif // wxUSE_DATETIME