我需要在一个主窗口OnInitDialog()函数里 建立一个线程,在这个线程里 我用SetWindowPos把主窗口隐藏掉,但是无法达到预期效果,我想应该是OnInitDialog的时候,主窗口并没有完全建立并SHOW出来
请问怎么解决?(尝试过先在线程里SLEEP 下 但任然不行)

解决方案 »

  1.   

    1)模态对话框出来WM_WINDOWPOSCHANGING消息void CXXXDlg::OnWindowPosChanging(WINDOWPOS* lpwndpos )
    {
    if(lpwndpos->flags & SWP_SHOWWINDOW)
    {
    lpwndpos->flags &= ~(SWP_SHOWWINDOW);
    } CDialog::OnWindowPosChanging(lpwndpos);
    }
    2)非模态对话框CreateWindow操作后,ShowWindow(SW_HIDE)
      

  2.   

    你不要窗口 不要调用  DoModol不就可以了 
      

  3.   

    不要在线程中调用
    SetWindowPos 该函数,向主窗口发送自定义消息,在主窗口中调用SetWindowPos 该函数。
      

  4.   

    不调用DoModal,用Create函数创建窗口,用ShowWindow控制显示和隐藏。
      

  5.   

    你在创建的线程里,使用主线程的this指针,然后this->SetWindowPos试试!!
      

  6.   

    在app类里,使用ShowWindow(SW_HIDE)
      

  7.   

    设置一个成员标志量m_bFlag=TRUE;
    初始化结束时m_bFlag=FALSE;
    在线程里
    while(hMain->m_bFlag)
    ;
    PostMessage(hMain,SW_SHOW,....);
    主窗口的消息处理函数收到线程发来的SW_SHOW时隐藏自己