以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  [合集] 怎样能使窗口不会因为用户单击了"Show Desktop"图标而被最小  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=11873)


--  作者:admin
--  发布时间:11/9/2004 2:26:00 AM

--  [合集] 怎样能使窗口不会因为用户单击了"Show Desktop"图标而被最小


发信人: Nineteen (-_-#!), 信区: DotNET
标  题: [合集] 怎样能使窗口不会因为用户单击了"Show Desktop"图标而被最小化? (转载)
发信站: BBS 水木清华站 (Wed Nov  5 08:22:19 2003), 站内

☆─────────────────────────────────────☆
   a2o (alpha) 于  (Tue Jun 17 21:04:48 2003)  提到:

发信人: a2o (alpha), 信区: Programming
标  题: 怎样能使窗口不会因为用户单击了"Show Desktop"图标而被最小化?
发信站: BBS 水木清华站 (Tue Jun 17 14:11:36 2003), 转信

怎样能使窗口不会因为用户单击了"Show Desktop"图标而被最小化?
就好像Winamp,或者蚂蚁、快车的浮动窗口那样。



☆─────────────────────────────────────☆
   a2o (alpha) 于  (Tue Jun 17 21:33:52 2003)  提到:

哪位大侠帮帮忙阿!
谢谢了呀!


【 在 a2o (alpha) 的大作中提到: 】
∶发信人: a2o (alpha), 信区: Programming
∶标  题: 怎样能使窗口不会因为用户单击了"Show Desktop"图标而被最小化?
∶发信站: BBS 水木清华站 (Tue Jun 17 14:11:36 2003), 转信
∶怎样能使窗口不会因为用户单击了"Show Desktop"图标而被最小化?
∶就好像Winamp,或者蚂蚁、快车的浮动窗口那样。




☆─────────────────────────────────────☆
   DRAGONESE (龙裔◎DotNET版有意思) 于  (Tue Jun 17 21:35:11 2003)  提到:


把OnMinimize一类的事件自己处理一下,或许能行

【 在 a2o (alpha) 的大作中提到: 】
∶发信人: a2o (alpha), 信区: Programming
∶标  题: 怎样能使窗口不会因为用户单击了"Show Desktop"图标而被最小化?
∶发信站: BBS 水木清华站 (Tue Jun 17 14:11:36 2003), 转信
∶怎样能使窗口不会因为用户单击了"Show Desktop"图标而被最小化?
∶就好像Winamp,或者蚂蚁、快车的浮动窗口那样。




☆─────────────────────────────────────☆
   a2o (alpha) 于  (Tue Jun 17 21:48:18 2003)  提到:

OnMinimize??有这个吗?
能不能说的详细一点?谢谢了!!


【 在 DRAGONESE (龙裔◎DotNET版有意思) 的大作中提到: 】
∶把OnMinimize一类的事件自己处理一下,或许能行




☆─────────────────────────────────────☆
   DRAGONESE (龙裔◎DotNET版有意思) 于  (Tue Jun 17 21:51:32 2003)  提到:


不是我没有说清楚,是你没有说清楚

什么环境,什么编程语言,开发什么程序都没有说

你叫人怎么回答?

【 在 a2o (alpha) 的大作中提到: 】
∶OnMinimize??有这个吗?
∶能不能说的详细一点?谢谢了!!




☆─────────────────────────────────────☆
   a2o (alpha) 于  (Tue Jun 17 22:01:01 2003)  提到:

sorry!sorry!是我没说清:p

.NET环境,Visual C#或c++语言,
单击“Quick Launch”上的“Show Desktop”图标,
或按快捷键“Win+D”或“Win+M”,
均不会将该程序最小化。
要达到这样的效果,要怎么做?

谢谢,谢谢!


【 在 DRAGONESE (龙裔◎DotNET版有意思) 的大作中提到: 】
∶不是我没有说清楚,是你没有说清楚
∶什么环境,什么编程语言,开发什么程序都没有说
∶你叫人怎么回答?




☆─────────────────────────────────────☆
   DRAGONESE (龙裔◎DotNET版有意思) 于  (Tue Jun 17 22:02:48 2003)  提到:


c#和c++差不少,到底是什么?

c++是managed还是unmanaged?

【 在 a2o (alpha) 的大作中提到: 】
∶sorry!sorry!是我没说清:p
∶.NET环境,Visual C#或c++语言,
∶单击“Quick Launch”上的“Show Desktop”图标,
∶或按快捷键“Win+D”或“Win+M”,
∶均不会将该程序最小化。
∶要达到这样的效果,要怎么做?
∶谢谢,谢谢!




☆─────────────────────────────────────☆
   a2o (alpha) 于  (Tue Jun 17 22:07:06 2003)  提到:

这个……
还是说说C#吧:P



【 在 DRAGONESE (龙裔◎DotNET版有意思) 的大作中提到: 】
∶c#和c++差不少,到底是什么?
∶c++是managed还是unmanaged?




☆─────────────────────────────────────☆
   DRAGONESE (龙裔◎DotNET版有意思) 于  (Tue Jun 17 22:14:59 2003)  提到:


关于在C#中如何控制最小化,你可以看下面这篇文章,很精辟

http://expert.csdn.net/Expert/topic/1518/1518978.xml?temp=.9423487

【 在 a2o (alpha) 的大作中提到: 】
∶这个……
∶还是说说C#吧:P




☆─────────────────────────────────────☆
   a2o (alpha) 于  (Tue Jun 17 22:38:06 2003)  提到:

试了一下“TheAres(班门斧)”所提供的方法,单击窗口上的关闭或
最小化按钮,是可以弹出对话框,以取代默认动作(关闭或最小化),
可是单击那个“Show Desktop”图标或用快捷键的话,还是会最小化,
也没有弹出对话框阿:(

单击那个图标,会发个什么消息呢?老大知道吗?


【 在 DRAGONESE (龙裔◎DotNET版有意思) 的大作中提到: 】
∶关于在C#中如何控制最小化,你可以看下面这篇文章,很精辟
∶http://expert.csdn.net/Expert/topic/1518/1518978.xml?temp=.9423487




☆─────────────────────────────────────☆
   DRAGONESE (龙裔◎DotNET版有意思) 于  (Tue Jun 17 22:43:37 2003)  提到:


我估计可能不是最小化消息阿

我也不知道了:(

【 在 a2o (alpha) 的大作中提到: 】
∶试了一下“TheAres(班门斧)”所提供的方法,单击窗口上的关闭或
∶最小化按钮,是可以弹出对话框,以取代默认动作(关闭或最小化),
∶可是单击那个“Show Desktop”图标或用快捷键的话,还是会最小化,
∶也没有弹出对话框阿:(
∶单击那个图标,会发个什么消息呢?老大知道吗?




☆─────────────────────────────────────☆
   Excelly (无法抗拒) 于  (Tue Jun 17 22:52:23 2003)  提到:

用OnSizeChanged()
你所说的情况都可以触发
其他东西再说了

抛块砖吧


【 在 DRAGONESE (龙裔◎DotNET版有意思) 的大作中提到: 】
∶我估计可能不是最小化消息阿
∶我也不知道了:(




☆─────────────────────────────────────☆
   a2o (alpha) 于  (Tue Jun 17 23:12:12 2003)  提到:

/*
* System Menu Command Values
*/
#define SC_SIZE         0xF000
#define SC_MOVE         0xF010
#define SC_MINIMIZE     0xF020
#define SC_MAXIMIZE     0xF030
#define SC_NEXTWINDOW   0xF040
…………
这些常量对应于系统菜单(应该就是单击Control box出来的那个菜单吧)中的菜单项,
单击Show Desktop图标所发的消息,应该是不属于这个系列的,残念的说。



【 在 DRAGONESE (龙裔◎DotNET版有意思) 的大作中提到: 】
∶我估计可能不是最小化消息阿
∶我也不知道了:(




☆─────────────────────────────────────☆
   Excelly (无法抗拒) 于  (Tue Jun 17 23:25:08 2003)  提到:

刚才试了一下
下面的代码可以做到
private void Form1_Resize(object sender, System.EventArgs e)
{
    if(WindowState == FormWindowState.Minimized)
          this.WindowState = FormWindowState.Normal;
}

可是这个窗口必须是topmost属性为true的
否则在点"显示桌面"的时候还是会隐藏

这个要求似乎是必须的
因为winamp如果不设为"always on top"的话
在显示桌面时同样会隐藏


【 在 a2o (alpha) 的大作中提到: 】
∶发信人: a2o (alpha), 信区: Programming
∶标  题: 怎样能使窗口不会因为用户单击了"Show Desktop"图标而被最小化?
∶发信站: BBS 水木清华站 (Tue Jun 17 14:11:36 2003), 转信
∶怎样能使窗口不会因为用户单击了"Show Desktop"图标而被最小化?
∶就好像Winamp,或者蚂蚁、快车的浮动窗口那样。




☆─────────────────────────────────────☆
   a2o (alpha) 于  (Tue Jun 17 23:52:44 2003)  提到:

我测试的结果:
1.topmost为false时也不会最小化的,但winamp不always on top时,的确是会最小化;
2.单击Show Desktop图标或按快捷键时窗口会闪烁;
3.同时开了winamp,当其always on top时不闪烁,否则也跟着闪:P
4.“Win+D”快捷键不能使其它窗口还原了;



PS:刚刚是想回贴的,结果不知道怎么搞得,给你发了信,呵呵,sorry!


【 在 Excelly (无法抗拒) 的大作中提到: 】
∶刚才试了一下
∶下面的代码可以做到
∶private void Form1_Resize(object sender, System.EventArgs e)
∶{
∶if(WindowState == FormWindowState.Minimized)
∶this.WindowState = FormWindowState.Normal;
∶}
∶可是这个窗口必须是topmost属性为true的
∶否则在点"显示桌面"的时候还是会隐藏
∶这个要求似乎是必须的
∶因为winamp如果不设为"always on top"的话
∶...................



☆─────────────────────────────────────☆
   Excelly (无法抗拒) 于  (Wed Jun 18 00:07:01 2003)  提到:

re:

1.我的winxppro上面topmost==false时会最小化的
2.这个是必然的,因为是个被动的处理方法嘛,要彻底解决只有在消息循环部分截获了
不过可以减轻的,比如窗口小一点:)
3.4.的情况我这里没有出现,系统的差别??


【 在 a2o (alpha) 的大作中提到: 】
∶我测试的结果:
∶1.topmost为false时也不会最小化的,但winamp不always on top时,的确是会最小化;
∶2.单击Show Desktop图标或按快捷键时窗口会闪烁;
∶3.同时开了winamp,当其always on top时不闪烁,否则也跟着闪:P
∶4.“Win+D”快捷键不能使其它窗口还原了;
∶PS:刚刚是想回贴的,结果不知道怎么搞得,给你发了信,呵呵,sorry!




☆─────────────────────────────────────☆
   a2o (alpha) 于  (Wed Jun 18 00:17:02 2003)  提到:

有可能,我用的是windows 2000。
唉,猜不到,也找不着,这到底是个什么消息呀,郁闷:(
我还是希望能在消息循环部分就截获掉,闪烁很不爽的说。



【 在 Excelly (无法抗拒) 的大作中提到: 】
∶re:
∶1.我的winxppro上面topmost==false时会最小化的
∶2.这个是必然的,因为是个被动的处理方法嘛,要彻底解决只有在消息循环部分截获了
∶不过可以减轻的,比如窗口小一点:)
∶3.4.的情况我这里没有出现,系统的差别??




☆─────────────────────────────────────☆
   DRAGONESE (龙裔◎DotNET版有意思) 于  (Wed Jun 18 00:20:34 2003)  提到:


我刚才用spy++看了一下

也没有看出个名堂,你也可以试一下啊

【 在 a2o (alpha) 的大作中提到: 】
∶有可能,我用的是windows 2000。
∶唉,猜不到,也找不着,这到底是个什么消息呀,郁闷:(
∶我还是希望能在消息循环部分就截获掉,闪烁很不爽的说。




☆─────────────────────────────────────☆
   Excelly (无法抗拒) 于  (Wed Jun 18 00:35:23 2003)  提到:

据我调试:
系统先发一个窗体最小化的消息
然后这个消息的结果被那个事件处理函数解决了
再发一个让桌面在最前端的消息
(有吗?调试的感觉而已,我对windows底层编程不熟:)
然后这个消息的结果被窗体的topmost属性解决了

基本上就是酱紫了


【 在 DRAGONESE (龙裔◎DotNET版有意思) 的大作中提到: 】
∶我刚才用spy++看了一下
∶也没有看出个名堂,你也可以试一下啊




☆─────────────────────────────────────☆
   a2o (alpha) 于  (Wed Jun 18 00:58:34 2003)  提到:

哇,我怎么感觉Windows在消息进WndProc之前就已经把窗口最小化了!
ft阿!


【 在 Excelly (无法抗拒) 的大作中提到: 】
∶据我调试:
∶系统先发一个窗体最小化的消息
∶然后这个消息的结果被那个事件处理函数解决了
∶再发一个让桌面在最前端的消息
∶(有吗?调试的感觉而已,我对windows底层编程不熟:)
∶然后这个消息的结果被窗体的topmost属性解决了
∶恩
∶基本上就是酱紫了




☆─────────────────────────────────────☆
   Excelly (无法抗拒) 于  (Wed Jun 18 01:02:52 2003)  提到:


这个不太合理的说
即使存在这个现象的话
也应该是windows先对桌面(也是一个窗口)进行操作(置于前端)
影响了那个窗口的可见性吧


【 在 a2o (alpha) 的大作中提到: 】
∶哇,我怎么感觉Windows在消息进WndProc之前就已经把窗口最小化了!
∶ft阿!




☆─────────────────────────────────────☆
   a2o (alpha) 于  (Wed Jun 18 01:25:00 2003)  提到:

恩,是我搞错了。
我好像已经找到那个消息了,应该是(m.LParam.ToInt32() == 0x12f72c),
可是虽然我啥也没干就返回了,窗口却还是被最小化了:(


【 在 Excelly (无法抗拒) 的大作中提到: 】
∶恩
∶这个不太合理的说
∶即使存在这个现象的话
∶也应该是windows先对桌面(也是一个窗口)进行操作(置于前端)
∶影响了那个窗口的可见性吧




上一篇
返回上一页
回到目录
回到页首
下一篇



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms