Parcourir la source

treat DISPATCH_METHOD and ( DISPATCH_METHOD or DISPATCH_PROPERTYGET ) the same

Arkady Trestman il y a 16 ans
Parent
commit
18ff0f4e9b
1 fichiers modifiés avec 8 ajouts et 3 suppressions
  1. 8 3
      direct/src/plugin_activex/PPPandaObject.cpp

+ 8 - 3
direct/src/plugin_activex/PPPandaObject.cpp

@@ -154,8 +154,13 @@ STDMETHODIMP PPandaObject::Invoke(
 
     switch ( wFlags )
     {
-    case DISPATCH_METHOD:
+    case ( DISPATCH_METHOD ):
+    case ( DISPATCH_METHOD | DISPATCH_PROPERTYGET ):
         {
+            // NOTE: http://msdn.microsoft.com/en-us/library/ms221479.aspx
+            // The member is invoked as a method. If a property has the same name, 
+            // both the DISPATCH_METHOD and the DISPATCH_PROPERTYGET flag may be set.
+
             bool hasMethod( false );
             hr = m_interface->P3DHasMethod( m_p3dObject, name, hasMethod );
             if ( SUCCEEDED( hr ) && hasMethod )
@@ -164,12 +169,12 @@ STDMETHODIMP PPandaObject::Invoke(
             }
         }
         break;
-    case DISPATCH_PROPERTYGET:
+    case ( DISPATCH_PROPERTYGET ):
         {
             hr = m_interface->P3DGetProperty( m_p3dObject, name, pvarResult );
         }
         break;
-    case DISPATCH_PROPERTYPUT:
+    case ( DISPATCH_PROPERTYPUT ):
         {
             bool result( false );
             hr = m_interface->P3DSetProperty( m_p3dObject, name, pdispparams, result );