我做了一个对话框程序,我想在程序一运行时就把对话框隐藏起来,该如何办到啊?
我在oninitdialog里调用ShowWindow(SW_HIDE),但不成功,这是怎么回事啊?

解决方案 »

  1.   

    在InitInstance()中,ShowWindow(SW_HIDE)
      

  2.   

    我瞎说了,不好意思,这台机器没有vc。在oninitdialog里调用ShowWindow(SW_HIDE) 2次
      

  3.   

    修改InitInstance(),不要用有模式对说框,改成无模式的就成了。。我不明白的是,不要对话框,为什么不用console程序呢?
      

  4.   

    把ShowWindow(SW_HIDE);加在OnPaint() 里面就可以 的
      

  5.   

    hide dialog at startup
    void CHidedlgDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) 
    {
    if (lpwndpos->flags & SWP_SHOWWINDOW) {
    lpwndpos->flags &= ~SWP_SHOWWINDOW;
    PostMessage(WM_WINDOWPOSCHANGING, 0, (LPARAM)lpwndpos);
    ShowWindow(SW_HIDE);
    }
    else
    CDialog::OnWindowPosChanging(lpwndpos);
    }
    通过重载DoModel、RunModelLoop可以解决问题
    这是斑竹的解答,但我看不懂,谁可以解释一下啊?
    如何重载DoModel,RunModelLoop啊?
      

  6.   

    怎么那么麻烦呀。不就是在一开始隐藏窗体吗。
    在窗体的属性里的more styles里有一个可见属性,把钩去了就可以了。
      

  7.   

    对于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();方法三
    不说了,上面的够用了吧。