E emonster Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-21 #1 当前程序在系统工具栏上是按下状态的,当再点一次的时候系统会将当前程序窗口最小化,<br>如何在程序中阻止最小化?。
P pihome Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-21 #2 procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;<br> var Handled: Boolean);<br>begin<br> if (Msg.message=WM_SYSCOMMAND) and (Msg.hwnd=Application.Handle) then<br> begin<br> if Msg.wParam=SC_MINIMIZE then<br> Handled:=True;<br> end;<br>end;<br>
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;<br> var Handled: Boolean);<br>begin<br> if (Msg.message=WM_SYSCOMMAND) and (Msg.hwnd=Application.Handle) then<br> begin<br> if Msg.wParam=SC_MINIMIZE then<br> Handled:=True;<br> end;<br>end;<br>
E emonster Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-21 #4 早试过了,不行啊,试过在这个过程里取消消息过滤,只加一个showmessage('')都无法触发<br><br>
E emonster Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-21 #5 procedure TMain.WMSysCommand(var Message: TWMSysCommand);<br>begin<br> Inherited;<br> if Message.CmdType = SC_MINIMIZE<br> then<br> begin<br> ......<br> end; <br>end;<br><br>奇怪了,我在家里这段代码都还能阻止最小化按钮最小化,现在和pihome的代码一样,连最小按钮都无法阻止了。我的环境:XP+D7,家中:XP+D6
procedure TMain.WMSysCommand(var Message: TWMSysCommand);<br>begin<br> Inherited;<br> if Message.CmdType = SC_MINIMIZE<br> then<br> begin<br> ......<br> end; <br>end;<br><br>奇怪了,我在家里这段代码都还能阻止最小化按钮最小化,现在和pihome的代码一样,连最小按钮都无法阻止了。我的环境:XP+D7,家中:XP+D6
P pihome Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-21 #6 上面这段代码只处理任务栏上的最小化消息(Msg.hwnd=Application.Handle),要处理Form上最小化按钮,在相应的Form中写上类似下面的代码就可以了:<br>procedure TMain.WMSysCommand(var Msg: TWMSysCommand);<br>begin<br> if Msg.CmdType <> SC_MINIMIZE then<br> inherited;<br>end;<br>
上面这段代码只处理任务栏上的最小化消息(Msg.hwnd=Application.Handle),要处理Form上最小化按钮,在相应的Form中写上类似下面的代码就可以了:<br>procedure TMain.WMSysCommand(var Msg: TWMSysCommand);<br>begin<br> if Msg.CmdType <> SC_MINIMIZE then<br> inherited;<br>end;<br>
E emonster Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-21 #8 你点系统工具栏上的相应该程序按钮试试,无法触发这段过程
P pihome Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-21 #9 没问题,最小化的消息都可以响应到<br>对了,实际我发现(Msg.hwnd=Application.Handle)这一段可以去掉,因为按下Form上最小化按钮发出的WM_SYSCOMMAND不经过应用程序循环队列,不会被Application.OnMessage处理到。。。
没问题,最小化的消息都可以响应到<br>对了,实际我发现(Msg.hwnd=Application.Handle)这一段可以去掉,因为按下Form上最小化按钮发出的WM_SYSCOMMAND不经过应用程序循环队列,不会被Application.OnMessage处理到。。。
E emonster Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-21 #10 我安装D6试试,在D7下居然不要其中的代码,加一个showmessage都无法显示
L lichaogang Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-21 #11 pihome的写法是可以的,楼主是怎么写的?你在form上放一个ApplicationEvents控件,然后直接写的onMessage事件(copy pihome的代码即可)。
P pihome Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-21 #12 []<br>我这是D7 + 2K<br>不应该啊,应该与Delphi的版本无关的才对。。。<br>这个问题有些莫名其妙了[!] 有没有试过新建一个空白的Application只写上面的代码呢?<br>emonster,你还是慢慢调吧[]
[]<br>我这是D7 + 2K<br>不应该啊,应该与Delphi的版本无关的才对。。。<br>这个问题有些莫名其妙了[!] 有没有试过新建一个空白的Application只写上面的代码呢?<br>emonster,你还是慢慢调吧[]
H helloqiner Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-21 #13 在Form上放一个 TApplicationEvents ,设置它的 onEvents1Minimize 事件,加入以下代码:<br>ShowWindow(Application.Handle, SW_RESTORE);<br><br>OK,以后你的 Form 再也不能最小化了。
在Form上放一个 TApplicationEvents ,设置它的 onEvents1Minimize 事件,加入以下代码:<br>ShowWindow(Application.Handle, SW_RESTORE);<br><br>OK,以后你的 Form 再也不能最小化了。