在桌面上显示一个窗口。每次按Windows的“显示桌面”时总是被最小化,如何避免不被最小化?让窗口的显示效果看起来是总贴在桌面上?

解决方案 »

  1.   

    private void Form1_Resize(object sender, System.EventArgs e)
    {
    if(this.WindowState == FormWindowState.Minimized)
    {
    this.WindowState = FormWindowState.Normal;
    }
    }
      

  2.   


    看看这个代码,大概和2楼的意思差不多。但是不行的,如果去按本窗口的最小化按钮,的确会恢复的。但是如果按了Windows的“显示桌面”,还是一样地被最小化。BOOL CMainFrame::OnWndMsg( 
    UINT message, 
    WPARAM wParam, 
    LPARAM lParam, 
    LRESULT* pResult )
    {
    //ignore the minimize message if( message == WM_SIZE && IsIconic() )
    { ShowWindow(SW_RESTORE );
    //ShowWindow(SW_SHOW );
    }
    }
      

  3.   

    设置TopMost=True, 处理SC_MINIMIZE消息
      

  4.   

    下面是别人写的BCB的有效代码
    SetWindowPos(Handle,   HWND_TOPMOST,   0,   0, 0,   0,   SWP_NOMOVE|SWP_NOSIZE);然后再消息函数里处理
    if   (Msg==WM_SHOWWINDOW  &&  !(Msg.WParam  &&   Msg.LParam==SW_PARENTCLOSING))
    {
                    Msg.Result   =   0;     return;
    }
          if(Msg==WM_ACTIVATEAPP && !Msg.WParam)
                SetWindowPos(Handle,  HWND_TOP, 0,0, 0,0,   SWP_NOMOVE|SWP_NOSIZE);
      

  5.   

    真不幸啊,我想要的程序是看起来“贴”在桌面上,有点象便条。是不能在最上面的,只能在最底层。实际上我的程序里面是有一句:SetWindowPos(Handle,   HWND_BOTTOM,   0,   0, 0,   0,   SWP_NOMOVE|SWP_NOSIZE);怎么办啊,各位?
      

  6.   

    这样可不可以?弄一个高和宽都为0的topmpst窗口,这样它就不会被最小化,然后这个窗口管理并显示楼主要的便条
      

  7.   

    你看看桌面天气预报秀的方法,就是osd实现,嵌入到桌面
      

  8.   

    CWnd *m_desktop=FindWindowW(_T("Progman"),_T("Program Manager"));
    this->SetParent(m_desktop);
    这个方法已经在我的电脑上调试通过。VS.NET2005 MFC
      

  9.   

    多谢cfanwolf, 高人啊, 可以了!