我见到个message handle method
procedure CMDockClient(Message TCMDockClient); message CM_DOCKCLIENT;
其中TCMDockClient = packed record
Msg: Cardinal;
DockSource: TDragDockObject;
MousePos: TSmallPoint;
Result: Integer;
TDragDockObject是个不小的类。
问题:
1. 我看到一些文章说像CM_DOCKCLIENT这样的message有注册问题,是怎么一回事?
2. sendmessage里的信息参数就两个wparam,lparam:uint,如果docksource应该是TDragDockObject的引用在传送前被转换成uint,传送后又转换回来了,这个转换好像不行吧(至少我试了老是出错)?
3.
procedure CMDockClient(Message TCMDockClient); message CM_DOCKCLIENT;
其中TCMDockClient = packed record
Msg: Cardinal;
DockSource: TDragDockObject;
MousePos: TSmallPoint;
Result: Integer;
TDragDockObject是个不小的类。
问题:
1. 我看到一些文章说像CM_DOCKCLIENT这样的message有注册问题,是怎么一回事?
2. sendmessage里的信息参数就两个wparam,lparam:uint,如果docksource应该是TDragDockObject的引用在传送前被转换成uint,传送后又转换回来了,这个转换好像不行吧(至少我试了老是出错)?
3.
窗口停靠逻辑上因该没什么问题,就是对delphi里的消息机制还不是很清楚,delphi给的文档也很少。
指导winapi机制,不过不清楚delphi是怎么封装的
2.sendmessage里的信息两个wparam,lparam参数是无约定的,你可以以任何方式解释它(当然应该是4Byte的,但作为一个结构指针是可以的.
TCMDockClient = packed record
Msg: Cardinal;
DockSource: TDragDockObject;//WParam参数,TDragDockObject应该是PDragDockObject(PDragDockObject=^TDragDockObject),应该一个指针吧
MousePos: TSmallPoint;//LParam参数,也应该是4字节的.
Result: Integer;//delphi自己加的,为了返回状态.