现用AppWizard做一个对话框,想隐藏这个主对话框,应如何操作?

解决方案 »

  1.   

    上面的方法加在哪里,在OnInitDialog中根本不行。
      

  2.   

    OnInitDialog时都还没有显示出来呢!当然不能加在那里了,假如要一开始隐蔽的话可以在PreCreateWindow里操作。cs&=~WM_VISIBLE
      

  3.   

    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
            return -1;
        // hide our app
        AfxGetApp()->m_nCmdShow = SW_HIDE;
        return 0;
    }
      

  4.   

    在OnInitDialog中return TRUE前加入
    WINDOWPLACEMENT wp;
    wp.length=sizeof(WINDOWPLACEMENT);
    wp.flags=WPF_RESTORETOMAXIMIZED;
    wp.showCmd=SW_HIDE;
    SetWindowPlacement(&wp);
      

  5.   

    改写CAPP::InitInstance()
    将其中的有模式对话框改为无模式对话框:
    CDialog dlg;
    dlg.create();
    dlg.ShowWindow(SW_HIDE);
      

  6.   

    我想问问,如果我想在弹出模态对话框之后再隐藏主DIALOG,该怎么办?
    而不是一开始就隐藏。
      

  7.   

    楼上的做好是不行的:CApp::InitInstance()
    {
    ...
    ...    CMyDlg *pMainDlg = new CMyDlg;
        if ( pMainDlg == NULL )
             return FALSE;    m_pMainWnd = pMainDlg;
        
        pMainDlg->Create( IDD_MYDLG , NULL );
        pMainDlg->UpdateWindow();
        pMainDlg->ShowWindow(TRUE); //  or FALSE     return TRUE;
    }don't forget release dlg resource of the pointer
      

  8.   

    那在弹出模式对话框的地方假设主对话框的OnButton1()是对应的函数,则:OnButton1()
    {
       this->ShowWindow(SW_HIDE);//隐藏主对话框
       CXXXDlg dlg;
       dlg.OoModal();//显示模式对话框
       this->ShowWindow(SW_SHOW);//模式对话框结束后恢复显示主对话框
    }
      

  9.   

    标准的隐藏DIALOG的方法如下
    1. 如何有效地使初始窗口不显示
    当我们想让窗口初始时不显示时,通常会用ShowWindow(SW_HIDE) ,但实际上还是在启动是可以看到窗口一闪而过的痕迹。所以,可以使用下面的方法来实现它:
    (1.1)先在构造函数中设置布乐变量 visible值为false. visible = false;
    (1.2)重载 WM_WINDOWPOSCHANGING,并添加下面代码:void CTest_deleteDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) 
    {
        if(!visible)
            lpwndpos->flags &= ~SWP_SHOWWINDOW;    CDialog::OnWindowPosChanging(lpwndpos);
    }(1.3)然后设布尔visible变量值为true,并在要显示窗口时,再用ShowWindow(SW_SHOW)既可。visible = true;
    ShowWindow(SW_SHOW);
      

  10.   

    响应WM_NCPAINT 
    ShowWindow(SW_HIDE);
      

  11.   

    打开class wizard
    在class info选项卡上在message filter上选择windows
    然后在messagemap映射wm_ncpaint消息
    加入
    ShowWindow(SW_HIDE);就可以