程序A与程序B当程序A向程序B POST或SEND鼠标WM_LbuttonDown和UP消息的时候,不影响真实的鼠标做其它的工作只是有短暂的停滞,无大碍.但不会对B内的子窗体产生什么效果.当程序A向程序B内的一个子窗口C POST或SENDPOST或SEND鼠标WM_LbuttonDown和UP消息的时候程序B会接受.但是会影响鼠标的正常操作.就不能干别的了.这是怎么回事?如何解决呢?有什么思路?就好像分层了一样,我向B发送消息的时候都在B内的窗体C后面一样.并没有到在C窗上面.(用MOUSEMOVE试的).
Gamet:=FindWindowEx(Gameh,0,'SG_WNDCL','SGGame');//子窗
PostMessage(Gamet,Messages.WM_LBUTTONDOWN,0,$02640259);
PostMessage(Gamet,Messages.WM_LBUTTONUP,0,$02640259);正常的窗口POST到Gameh句柄上就可以正常使用了.但是这里不行,POST到主窗上没效果.用SPY++看它有一个子窗体是正常的游戏窗口.就像是网页内的一个FRAME一样,POST到这这个子窗中后鼠标信息就正常执行了.但是就影响鼠标了,干不了别的事了.
<00001> 00010C08 S WM_PARENTNOTIFY FwEvent:WM_LBUTTONDOWN xPos:541 yPos:601
<00002> R
<00003> S WM_MOUSEACTIVATE hwndTopLevel:00010C08 nHittest:HTCLIENT uMsg:WM_LBUTTONDOWN
<00004> R WM_MOUSEACTIVATE fuActivate:MA_ACTIVATE
------------------
在子窗体上同样的位置点击发现:
<00001> 00020c48 S WM_MOUSEACTIVATE hwndTopLevel:00020c3a nHittest:HTCLIENT uMsg:WM_LBUTTONDOWN
<00002> R WM_MOUSEACTIVATE fuActivate:MA_ACTIVATE
<00003> S WM_LBUTTONDOWN fwKeys:MK_LBUTTON xPos:541 yPos:601
<00004> R WM_LBUTTONUP fwkeys:0000 xPos:541 yPos:601
------------------
由上面信息可见主窗接收到的信息是一个WM_PARENTNOTIFY 左键在坐标的一个事件,然后是WM_MOUSEACTIVATE 事件,子窗体接收到了主窗体的WM_MOUSEACTIVATE 事件后就在这座标执行了LDOWN和LUP事件.似乎只要发送WM_MOUSEACTIVATE 事件就可以,主窗上的<00003> S WM_MOUSEACTIVATE hwndTopLevel:00010C08 nHittest:HTCLIENT uMsg:WM_LBUTTONDOWN这个事件要怎么写呢?