我想让我的对话框程序开始运行后初始状态是隐藏的,应该如何做?是重载PreCreateWindow还是Create?

解决方案 »

  1.   

    处理WM_CREATE消息,在mfc中也就是PreCreateWindow中
      

  2.   

    我重载了OnShowWindow,然后使用ShowWindow函数和UpdateWindow函数,为何指定其他的譬如SW_MAXIMIZE都可以,但是我如果用ShowWindow(SW_HIDE)却没用?
      

  3.   

    同意clife(空谷的松籁) 
    在PreCreateWindow中处理
      

  4.   

    可是WindowStyle里面只有WS_VISIBLE,没有让窗口隐藏的Style啊!
      

  5.   

    如何有效地使初始窗口不显示;当我们想让窗口初始时不显示时,通常会用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);
      

  6.   

    to NewFree(新自由人):
    你的方法不行啊,程序出错。
      

  7.   

    我都用在我的具体项目中了,当然可以,而且不仅对话框,Doc/View模式也可以呀!把你出错的提示贴出来!
      

  8.   

    对于Dialog的隐藏——方法一要到void CMyTrayDlg::OnPaint()函数中加一句   //CMyTrayDlg你的对话框类AfxGetMainWnd()->ShowWindow(SW_HIDE);就可以了,不过这种方法总是会存在程序一闪而过的现象。方法二使用移动程序界面出可视区域的办法      在对话框类(CXXXXDlg)的初始化函数InitInstance()中加入       //移动对话框到不可见区域       this->MoveWindow(-500,-500,100,100,true);       //设置对话框属性,使其不在任务栏上显示       SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,          WS_EX_TOOLWINDOW|WS_EX_STATICEDGE);       UpdateWindow();