C# winfor m怎么在窗口最小化时完美的隐藏
现在的做法和网上流行的的那种一样
最小化时能看到左下角一个小窗口,很不美.

解决方案 »

  1.   

    窗体有个ShowInTaskBar属性,不过做好绑定完一个TrayIcon后再把它设成False
      

  2.   

    啥叫完美隐藏?Hide?还是Top=-10000?
      

  3.   

    迅雷5.5的最小化效果?不明白你说的,你说的去左下角,一般MDI中的子窗口是这样的,如果是窗面窗口,不在任务栏显示的那种最小化也会去了左下角
      

  4.   

    不是mdi就是一个单窗口
    看来你没有试,试了就知道我说什么了
      

  5.   

    不知道你在描述啥?直接hide还是缩入托盘区??
      

  6.   

    是直接hide
    但是这样有一个不太完美的事情,你没有发现吗?
    与托盘没太大关系,(托盘从程序打开就在,并切一直在,像QQ)
      

  7.   

    呵呵,这个没啥问题。其实你也只需要调用一个拦截一下最小化的消息,用一个win32api做一个动态窗体效果,然后隐藏就ok
    这个是一个简单活计,并不困难。
      

  8.   

    代码不写了,几个关键的东西给你点出来就ok
    WM_SYSCOMMAND
    SC_MINIMIZE
    DrawAnimatedRectsps:qq其实也是用了DrawAnimatedRects这个api滴,默认情况下缩入托盘区的动作比较古怪,他是先左下角,然后在入托盘。所以很多程序员都是自己使用这个api,重新绘制动态效果以达到直接入托盘的效果
      

  9.   

    showintaskbar为false
     protected override void WndProc(ref Message m)
            {
                const int WM_SYSCOMMAND = 0x0112;
                const int SC_MINIMIZE = 0xF020;
                if (WM_SYSCOMMAND ==m.Msg)
                {
                    int msg = (int)m.WParam;
                    switch (msg)
                    {
                        case SC_MINIMIZE:
                            this.Hide();
                            break;
                    }
                }
                base.WndProc(ref m);
            }这样写反而隐藏不了了?
      

  10.   

    protected override void WndProc(ref Message m)
            {
                if (m.Msg == 0x112 && m.WParam.ToInt32() == 0xF020)
                {
                    this.Hide();
                    return;//吃掉消息
                }
                
                base.WndProc(ref m);
            }
      

  11.   

    估计是最大化最小化命令可以使隐藏窗口显示出来,你可以在托盘命令中给这上HWND发送个最小化消息,看是不是可以让隐藏的窗口显示出来.