Hi,

2009-08-21 19:19 UTC-0800 Pritpal Bedi (prit...@vouchcac.com)
  * contrib/hbwin/axcore.c
    + __AXDOVERB(), a very important function for in-process active-x controls


There are a few things I do not like in this:

1) Passing of the message is not supported in this function. I understand that it could be a problem of missing agreement on passing C structures in Harbour level, but MSDN (http://msdn.microsoft.com/en-us/library/ms694508%28VS.85%29.aspx) says, that if message is not passed, C parameter should be set to NULL, but not a MSG structure stuffed with zero bytes:

"If an end user invokes a verb by some means other than selecting a command from a menu (say, by double-clicking or, more rarely, single-clicking an object), the object's container should pass a pointer to a Windows MSG structure containing the appropriate message. For example, if the end user invokes a verb by double-clicking the object, the container should pass a MSG structure containing WM_LBUTTONDBLCLK, WM_MBUTTONDBLCLK, or WM_RBUTTONDBLCLK. If the container passes no message, lpmsg should be set to NULL."


2) __AXDOVERB() calls GetClientSite method.
http://msdn.microsoft.com/en-us/library/ms692603%28VS.85%29.aspx says:

"Each time an object receives a call to IOleObject::GetClientSite, it must increase the reference count on ppClientSite. It is the caller's responsibility to call Release when it is done with ppClientSite."

I do not see Release() method call after DoVerb().


WARNING: I do not even know that client site is, so my remarks are based on docs only and could be erroneous.


Regards,
Mindaugas

_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to