我把上面的任务条给去了,不显示 最大化,最小化,关闭 按钮了但是点击 快速启动栏里的 显示桌面和  按 窗口键+D  键 的时候,我的窗口还是被最小化了如果实现 让这两种方式 也都不能把我的窗口最小化 的功能?
就像  QQ的 登录 窗口,它就是 这样,最小化不了
谢谢各位大哥了

解决方案 »

  1.   

    import  java.awt. * ;
     import  java.awt.event. * ;
     public   class  MyFrame  extends  Frame  {
      {
     public  MyFrame()  {
      setSize( 500 , 400 );
      setResizable(  false  ); 
       this .addWindowStateListener( new  WindowStateListener()  { // 状态监听器 
           public   void  windowStateChanged(WindowEvent e)  {
           if (getState() == 1 )  { // 最小化状态 
             setState( 0 ); // 切换成正常状态 
           } 
        } 
      } );

     
      public   static   void  main(String[] args)  {
         new  MyFrame().setVisible( true );

     
    } //定义个固定窗口
      

  2.   

    在窗体的事件中似乎是做不到。
    可以放一个Timer控件,然后加入下面的代码
    private void timer1_Tick(object sender, System.EventArgs e)
    {
    if (this.WindowState==FormWindowState.Minimized)
    {
    this.WindowState=FormWindowState.Normal;
    }
    }
      

  3.   

    不要用timer,那样会一直判断的
    可以在窗口的Resize事件里面写楼上的那段代码
      

  4.   

    忘了说了,
    我用的是 c#
    楼上的老兄给我说的是个java代码吧
    我考过去 报错啊,呵呵
      

  5.   

    if (this.WindowState==FormWindowState.Minimized)
    {
    this.WindowState=FormWindowState.Normal;
    }这段代码我加上以后也不好用啊
    我写在 
    Resize
    事件里了,不好用,我点 显示桌面,也就最小化了
      

  6.   

    在窗体的Resize事件加下面代码:if (this.WindowState==FormWindowState.Minimized)
    {
        this.WindowState=FormWindowState.Normal;
    }
      

  7.   

    再将窗体属性ControlBox设为False;
      

  8.   

    FORM有个属性叫MINIMUM吧,设置为FALSE就可以了啊
      

  9.   

    我在窗体的Resize事件加下面代码:if (this.WindowState==FormWindowState.Minimized)
    {
        this.WindowState=FormWindowState.Normal;
    }然后把 
    ControlBox设为False;可是我点击  显示桌面或是 窗口+D的时候还是把它最小化了为什么不好用呢?为什么啊?
      

  10.   

    拦截此Form的Windows消息:protected override void WndProc(ref Message m)
    {
        const int WM_SYSCOMMAND = 0x0112; 
        const int SC_MINIMIZE = 0xF020;     switch ( m.Msg ) 
        { 
            case ( WM_SYSCOMMAND ):
                if ((int)m.WParam == SC_MINIMIZE )
                {
                    //System.Diagnostics.Trace.WriteLine("Minimizing the form now."); 
                }
                else
                {
                    base.WndProc (ref m); 
                }
                break; 
            default: 
                base.WndProc (ref m); 
                break; 
        }
      

  11.   

    if (this.WindowState==FormWindowState.Minimized)
    {
        this.WindowState=FormWindowState.Normal;
        TopMost=True;
    }   这样就可以了。
      

  12.   

    或者在构造函数中设置窗体的TopMost=True;
      

  13.   

    楼上的老兄说 点击  显示桌面 是控制不了,可是
    那个QQ的登录窗口,不就是可以的吗?
    不管是 点击 显示桌面 还是窗口+d,它都最小化不了。我不是写病毒啊,我要写一个管理软件,特殊环境,所以
    得做很多限制。
      

  14.   

    LZ,俺那个拦截Windows消息的方法你试过了吗?保证你用什么方法都不能把窗口最小化.对了,我贴的时候在最后少了个 } , 你自己添上就行,测试过的.
      

  15.   

    我刚才新建了一个项目用了一下你的方法,只是 窗口标题栏里的那个最小化按钮不好用了啊,
    但是 点击 显示桌面和 窗口+d 都是可以让它最小化的
    我的环境是 win2003+vs2003
    呵呵,是不是和系统也有点关系?
      

  16.   

    每个回复的好好看看楼主的要求:
    点“显示桌面”不会被最小化;
    按“WIN+D”不会被最小化。
    上面那么多代码都是牛皮啊,没有试就贴出来。简单点的还是使用timer
      

  17.   

    to LZ
    我试过RedGoldFish(红金鱼)的方法了,除《显示桌面》不能阻止外,其它的都能阻止。
    我用的是WinXP+VS2005
      

  18.   

    加个timer控件,不停的激活窗体就行了。
      

  19.   

    to RedGoldFish(红金鱼) :很想知道单击显示桌面,窗口被隐藏时系统消息值是多少?或是哪儿可以查到各类系统消息的值?
      

  20.   

    ....学习...我想知道怎样屏蔽alt+tab的切换
      

  21.   

    如果用 timer应该怎么做?会不会占用更多的系统资源?
      

  22.   

    对不起,兄弟们,大意了.说实话我也没得到最后答案,但有一点可以分享:当你按"显示桌面"时,Windows 把桌面(Desktop)程序放到所有程序的前面,类似于Z Order变化,把所有其它窗口全挡在后边,但这时候你自己的程序并不会收到Windows 消息,因为系统只把消息发给了桌面(Desktop)程序,这就是最难办的地方.
      

  23.   

    原来QQ登陆窗口也没有做特殊的处理,就是一个顶层窗口而已。
    private void Form1_Load(object sender, System.EventArgs e)
    {
    this.TopMost = true;
    }private void Form1_Resize(object sender, System.EventArgs e)
    {
    this.WindowState=FormWindowState.Normal;
    }
      

  24.   

    其实, Flashget的浮动窗口也是这个效果, 之前网上找了找, 没什么好结果
      

  25.   

    笨笨
    都知道是QQ登录窗口了,还不去分析下,看看有什么不同,听听我的。
    只要TopMost=True;ShouInTaskbar=False
    经测试 win+d;win+m;显示桌面,都不起作用了,呵呵
      

  26.   

    如果像QQ那样的话,虽然 win+d;win+m、显示桌面都不好用了,
    可是运行其它窗口的时候,就会把其它窗口挡住,有没有办法让它挡不住要运行的其它窗口?