vc++中,对话框工程怎么找到显示窗口的函数?
我想实现程序启动时不显示窗口,不知道这样的思路是否可行?

解决方案 »

  1.   

    MFC中
    dlg.DoModal
    dlg.Create
    之类的
      

  2.   

    dlg.DoModal()是自动显示窗口的.
    dlg.Create()是不自动显示窗口的,需要ShowWindow().
    不知道你要干什么?
      

  3.   

    一般可以在 OnInitDialog 函数里面 用ShowWindow(SW_HIDE)来隐藏窗口 这样的话就不会显示了
      

  4.   

    要看你是产生什么对话框了
    如果是dlg.DoModal 产生的模态框,他是自动的显示出你的对话框,这个好像没有办法隐藏
    如果是用dlg.create 产生的非模态框,你可以先ShowWindow(SW_HIDE);然后再ShowWindow(SW_SHOW);就可以实现了先隐藏再显示的功能
      

  5.   

    我也试了一个基于对话框的程序在OnInitDialog 使用showwindow和setwindowpos确实都不好用,不过这样的程序直接在资源文件中设置对话框的属性visible的钩拿掉就可以了。
      

  6.   

    不要用模态框,用非模态框!就是不用DoModal显示,具体步骤如下:在App类中声明一个对话框类的指针,然后再App类的InitInstance中在堆上用new分配一个对话框实例,并将该实例的指针赋给在头文件中声明的指针,然后调用CDialog的Create将该非模态框创建出来,接着调用ShowWindow将该对话框隐藏!但是这样的话你就不好再次显示对话框了,不知道你是否有可见的父窗口,如果有的话就好办了!
      

  7.   

    基于对话框的工程吗?显示部分在App类的InitInstance函数中,使用的是DoModal();
      

  8.   

    在对话框类的OnPaint函数中ShowWindow(SW_HIDE)可以隐藏。不过会有闪烁。
      

  9.   

    程序启动时不显示窗口,我觉得最好的方法就是不用MFC,直接用SDK
      

  10.   

    难道没有办法了吗?
    mfc是在那里把窗口显示出来的
      

  11.   

    你可以跟踪一下,从DoModal()到CreateDlgIndirect()到RunModalLoop()窗口就显示出来了.
    在RunModalLoop()中有:
    // show the window when certain special messages rec'd
    if (bShowIdle && (pMsg->message == 0x118 || pMsg->message == WM_SYSKEYDOWN))
    {
    ShowWindow(SW_SHOWNORMAL);
    UpdateWindow();
    bShowIdle = FALSE;
    }
      

  12.   

    响应对话框的WM_SHOWWINDOW   
      void   CTest6Dlg::OnShowWindow(BOOL   bShow,   UINT   nStatus)   
      {   
        
        if(   GetStyle()   &   WS_VISIBLE   )   {   
          CDialog::OnShowWindow(bShow,   nStatus);   
        }   else   {   
          long   Style   =   ::GetWindowLong(*this,   GWL_STYLE);   
          ::SetWindowLong(*this,   GWL_STYLE,   Style   |   WS_VISIBLE);   
          CDialog::OnShowWindow(SW_HIDE,   nStatus);   
        }   
      }