为什么TrackPopUpMenu()无效?(50分)

  • 主题发起人 主题发起人 sharkHun
  • 开始时间 开始时间
S

sharkHun

Unregistered / Unconfirmed
GUEST, unregistred user!
我的意思是想要在button click 你show出系统菜单,系统菜单能show出,<br>但当我click系统菜单时,比如[关闭],什么都没有发生,即点击系统<br>菜单项无效,why?<br><br>代码如下:<br><br>var<br>&nbsp; CursorPos : TPoint;<br>&nbsp; HSysMenu : integer;<br>begin<br>&nbsp; &nbsp;GetCursorPos(CursorPos);<br>&nbsp; &nbsp;HSysMenu := GetSystemMenu(Form1.handle,False);<br>&nbsp; &nbsp;TrackPopUpMenu(HSysMenu,TPM_LEFTALIGN,CursorPos.x,CursorPos.y,0,Form1.handle,nil); <br>end;
 
当然无效啦:)<br>你这样做Form1收不到WM_SYSCOMMAND<br>只能收到WM_COMMAND
 
sure,应当用hinstance代替你的form1.handle。
 
用hinstance代替form1.handle没用,到底应如何实现呢?
 
to Reboot:<br>&nbsp; &nbsp;怎样才能受到WM_SYSCOMMAND消息呢
 
为什么没人回答,应该不是太难,why!!!!!!
 
呵呵,改写窗口的WM_COMMNAD。<br>procedure MYWMCOMMAND(var msg: TWMCOMMAND); message WM_COMMAND;<br>procedure TForm1.MYWMCOMMAND(var msg: TWMCOMMNAD);<br>begin<br>&nbsp; case msg.ItemId of<br>&nbsp; &nbsp; SC_CLOSE: SendMessage(Handle,WM_SYSCOMMAND,SC_CLOSE,0);<br>&nbsp; &nbsp; SC_RESTORE: SendMessage(Handle,WM_SYSCOMMAND,SC_RESTORE,0);<br>&nbsp; &nbsp; ...<br>&nbsp; &nbsp; else inherited;<br>&nbsp; end;<br>end;
 
to Reboot:<br>&nbsp; &nbsp;能解释一下为什么吗?
 
To:sharkHun<br>问题解决了吗?具体怎么实现你的主题上说的, 能和我说说吗?ccx.djb@163.com
 
后退
顶部