如何在程序运行后就隐藏主窗口?为什么在OnInitDialog()中用ShowWindow(SW_HIDE)不能将窗口隐藏?应该怎么隐藏?高手指点!!

解决方案 »

  1.   

    请处理你的Dialog的WM_SHOWWINDOW函数
    或者你使用非模式对话框,而不要使用DoModal
      

  2.   

    不能放在OnInitDialog()
    因为还没有生成一个Dialog,怎么能hide呢??我找了很多办法,就是闪烁无法解决。
      

  3.   

    在XXXApp::InitInstance()中
    加上
    m_pMainWnd->ShowWindow(SW_MINIMIZE);
    m_pMainWnd->UpdateWindow();
      

  4.   

    在XXXApp::InitInstance()中
    加上
    m_pMainWnd->ShowWindow(SW_MINIMIZE);
    m_pMainWnd->UpdateWindow();
      

  5.   

    看好了
    类里面添加
    NOTIFYICONDATA m_tnid;OnInitDialog()
    m_tnid.cbSize=sizeof(NOTIFYICONDATA); 
    m_tnid.hWnd=this->m_hWnd; 
    m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; 
    m_tnid.uCallbackMessage=XGM_ICON_NOTIFY; CString szToolTip; 
    szToolTip=_T("洋洲多媒体网络学校服务器");
    _tcscpy(m_tnid.szTip, szToolTip); 
    m_tnid.uID=IDR_MAINFRAME; 
    m_hMainIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
    m_tnid.hIcon=m_hMainIcon; 
    ::Shell_NotifyIcon(NIM_ADD,&m_tnid); 
    if(m_hMainIcon)::DestroyIcon(m_hMainIcon); PostMessage(WM_SHOWWINDOW,(WPARAM)FALSE,(LPARAM)SW_OTHERUNZOOM);void CDialog::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) 
    {
    static BOOL bFirstRun = TRUE;
    if(bFirstRun)
    {
    bFirstRun = FALSE;
    lpwndpos->flags = SWP_HIDEWINDOW;
    }

    CDialog::OnWindowPosChanging(lpwndpos);
    }BOOL CDialog::PreCreateWindow(CREATESTRUCT& cs) 
    {
    cs.dwExStyle&=!WS_VISIBLE;
    return CDialog::PreCreateWindow(cs);
    }
      

  6.   

    可以这么考虑在InitInstance()中设定时器在ontimer里面ShowWindow(SW_HIDE)然后killtimer
      

  7.   

    最简单的方法是:
    将窗口移出显示区域,如用
    SetWindowPos(NULL, 0, 0, 0, 0, 0);
    当然,如果你日后要用还要设置回来。
      

  8.   

    ShowWindow(SW_HIDE);

    SetWindowPos(NULL,0,0,0,0,0);
      

  9.   

    oldworm(oldworm)和HKer_007(健康)  的方法SetWindowPos(NULL, 0, 0, 0, 0, 0)可行,然后可用SetWindowPlacement(....)恢复
      

  10.   

    用SetWindowPos(NULL, 0, 0, 0, 0, 0)隐藏窗口后,程序在任务栏上最小化了!请问究竟怎样隐藏?
      

  11.   

    那就不要创建(DoModal)它,权当它是一个一般类,只提供了一些方法。(因为,既然不要交互,创建窗口或它的子窗口有何用?)