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