我也遇到过这种问题,苦于一直无法解决,用SetWindowPos()和SetWindowLong()这些函数好像都不起作用,没办法,我只能在OnInitDialog()中设置了一个定时器,然后在OnTimer()中再用ShowWindow(SW_HIDE)将对话框隐藏起来。

解决方案 »

  1.   

    或者:
    用VC的资源工具创建一个非模式(modeless)不可见(invisible)对话框(IDD_FRAMEOWNER),对话框内容为空并且没有边框。BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 

        if (!CFrameWnd::PreCreateWindow(cs)) return FALSE; 
        if (!m_bOwnerCreated) // 对话框已创建标志
        { 
            // m_MainFrameOwner - 映射到IDD_FRAMEOWNER的CDialog 对象 
            m_bOwnerCreated = m_MainFrameOwner.Create(IDD_FRAMEOWNER); 
            if (m_bOwnerCreated) m_MainFrameOwner.ShowWindow(SW_HIDE); 
        };     // 设置对话框为CMinaFrame窗口的父窗口 
        if (m_bOwnerCreated) 
        cs.hwndParent = m_MainFrameOwner.GetSafeHwnd();     return TRUE; 
    } 定义以下成员函数:
    BOOL CMainFrame::ShowTaskBarButton(BOOL bVisible) 

        if (!m_bOwnerCreated) return FALSE;     ShowWindow(SW_HIDE);    if (bVisible) 
            ModifyStyleEx(0, WS_EX_APPWINDOW); 
        else 
            ModifyStyleEx(WS_EX_APPWINDOW, 0);    ShowWindow(SW_SHOW);    return TRUE; 

      

  2.   

    或者
    在你的CFrame ::OnCreate(...) 中添加如下调用
    ::SetWindowLong(m_hWnd,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
      

  3.   

    leafdown:
       我的窗口要显示的,不能隐藏,但要任务栏不显示图标
      

  4.   

    http://www.csdn.net/develop/read_article.asp?id=9546
    如何使窗口不在任务栏上出现 (jiangsheng翻译)  
      

  5.   

    ModifyStyleEx(WS_EX_TOOLWINDOW,WS_EX_APPWINDOW,SWP_NOZORDER);
    注意最后要改回来
    void CModalFrame::OnDestroy() 
    {
    ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW,SWP_NOZORDER);
    ...
    }
      

  6.   

    很简单,只要把下面几条语句加入到你的程序的初始化部分即可。long lExStyle = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);
    lExStyle &= ~WS_EX_APPWINDOW; // 去除AppWindow扩展风格
    lExStyle |= WS_EX_TOOLWINDOW; // 增加ToolWindow扩展风格
    ::SetWindowLong(m_hWnd, GWL_EXSTYLE, lExStyle);
    ShowWindow(SW_SHOWNA);不妨试试吧!
      

  7.   

    刚才搞错了
    两句ModifyStyleEx应该互换。
    >long lExStyle = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);
    >lExStyle &= ~WS_EX_APPWINDOW; // 去除AppWindow扩展风格
    >lExStyle ¦= WS_EX_TOOLWINDOW; // 增加ToolWindow扩展风格
    〉::SetWindowLong(m_hWnd, GWL_EXSTYLE, lExStyle);
    这么多?用一行ModifyStyleEx就搞定了啊