大家都知道,在windows系统中,有个“显示桌面”快捷按钮,只要一点上去,桌面上的所有窗口都会被最小化。问题:怎么样可以让我程序的主窗口忽略“显示桌面”的响应!我也试过去忽略系统相关消息的方法,但是好象不行。请大家指教……

解决方案 »

  1.   

    yeedward(每天学习10小时)晕!
    呵呵!
      

  2.   

    呵呵,ON_WM_ACTIVATE()怎么用呢?
      

  3.   

    改写OnSysCommand,改写最小化部分 if ( nID == SC_MINIMIZE )
     {
        if( 鼠标位置在最小化按钮上 )
           CDialog::OnSysCommand(nID, lParam);
        else
          return;
     }显示桌面时鼠标位置不对,因此不会最小化
      

  4.   

    不响应最小化的消息,好像是showwindow里面的SW_MINIMIZE,或者ON_WM_WINDOWPOSCHANGED()和ON_WM_WINDOWPOSCHANGING()这两个消息里面禁止最小话。想要自己最小话的时候判断一下。
      

  5.   

    刚才用spy++跟踪了一下,发现点“显示桌面”时根本没有调用OnSysCommand而是第一次的时候(隐藏所有程序窗口时)
      WM_SIZE fwSizeType:SIZE_MINIMIZED    ~二~~~~~~~~~~显示~~~~~~~~~~~~~~
      WM_SIZE  fwSizeType:SIZE_RESTORED
      

  6.   

    SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);只要加这句话就OK了!嘿嘿!原来这么简单!
      

  7.   

    设置HWND_TOPMOST有一个问题,我的窗口就会在其他所有非顶端窗口的前面,没发让其他非顶端窗口显示在它前面。有没有不设为TOPMOST而又可以屏蔽“显示桌面”的方法呢?
      

  8.   

    http://community.csdn.net/Expert/topic/3287/3287187.xml?temp=.2397119大家有兴趣的去这里看看吧,都是我发的,嘿嘿!不过感觉Delphi比这里要踊跃一些,高手也稍微多一点,嘿嘿!VC的朋友没别生气哦!我公司里用VC的,自己多用Delphi,所以一般有问题我两边都发的,嘿嘿!
      

  9.   

    现在我在用vc实现,但是vc好象比Delphi的要复杂点,情况是这样的:
    Delphi一切正常,但是在vc里很奇怪,我就加了一下这句话::SetParent(m_hWnd, ::FindWindow("Progman", NULL));忽略“显示桌面”可以,但是下面任务栏中没有显示,而且窗口总是在最底层!我现在还在研究!(我用的是对话框工程)