[求助]有关DELPHI窗口最小化和还原的问题? ( 积分: 30 )

  • 主题发起人 主题发起人 absolute_hust
  • 开始时间 开始时间
A

absolute_hust

Unregistered / Unconfirmed
GUEST, unregistred user!
试过用WM_SYSCOMMAND的SC_MINIMIZE和SC_RESTORE消息,<br>但是这个无法截获在任务栏的窗口标题点右键最小化的消息,<br>也无法捕获直接单击任务栏窗口标题使窗口最小化及还原的消息.<br>请问如何捕获这类消息.<br><br>另外,我想知道,点最小化按钮究竟执行了什么操作,我试着模拟其操作,<br><br>比如用ShowWindow(Application-Handle,SW_MINIMIZE);&nbsp;或<br>Application.Minimize();&nbsp;等,但是还是不完全一样,它们都<br>没有改变WindosState这个属性,然后我试着将WindosState设置<br>为wsMinimized,但是结果却令人失望,大家试试就知道了,和按最小化按钮<br>的效果完全不一样.<br><br>就这两个问题了,希望高手给以解答,谢了!!
 
我记得只要把SC_MINIMIZE加上2还是减去2就可以了。
 
procedure&nbsp;WMSysCommand(var&nbsp;Msg:&nbsp;TWMSysCommand);&nbsp;message&nbsp;WM_SYSCOMMAND;<br>在窗体中继承这个消息,你会发现,这三个命令都走这个消息的。<br>&nbsp;&nbsp;if&nbsp;Msg.CmdType&nbsp;=&nbsp;SC_MINIMIZE&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果窗体最小化,你的处理代码...<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;if&nbsp;Msg.CmdType&nbsp;=&nbsp;SC_MAXIMIZE&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果窗体最大化,你的处理代码...<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;if&nbsp;Msg.CmdType&nbsp;=&nbsp;SC_CLOSE&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果窗体关闭,你的处理代码...<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;DefaultHandler(Msg);
 
是个什么消息啊??我试了加2和减2都不行啊
 
To&nbsp;&nbsp;xuegaoyili:<br><br>方法我知道啊,但是这个捕获不了我所说的那种消息啊
 
好像是窗体重画之类的<br>可以做一个钩子钩出来,只钩主窗体的消息
 
我曾经做过类似的程序<br>如果是使用通用的窗体,<br>最小化的时候其实窗体的位置在很远处(坐标为负值或者很大值),然后会调用重画事件<br>但是我发现QQ的不一样,QQ的主窗体居然没有动,还在原地,在窗体的扩展风格里面做了好多手脚,通过一般的API无法取到状态
 
To&nbsp;laoyangzi:<br>特殊窗体先不考虑,现在我只想解决一般窗体的问题,我的窗体就是delphi自动生成的,<br><br>而且我发现用VC6编的程序没有这个问题,它可以用SC_MINIMIZE截获,但是换成Delphi就<br>不行了.
 
你截获的是form的最小化消息<br>&nbsp;&nbsp;任务拦右键是对application来说的<br>&nbsp;&nbsp;你可以在Form上放置一个TApplicationEvents控件来解决
 
同上......截取application的消息.....application才是程序与windows传递消息的接口
 
多人接受答案了。
 
后退
顶部