我在用户界面线程中创建一个窗口,然后要发消息给这个窗口,怎么才能保证这个窗口创建之后,主程序再往下执行?我要在主程序中发消息给这个窗口

解决方案 »

  1.   

    让他sleep()
    到那个程序运行的时间,就好啦.
      

  2.   

    用个事件来控制吧。在线程中窗口创建成功后SetEvent,
      

  3.   

    主程序Sleep的话线程就不会执行的,还有用事件的话,这个事件只能在线程里SetEvent,而主程序要WaitForSingleObject,主程序在等待的时候,线程也不会执行的
      

  4.   

    用个事件来控制吧。在线程中窗口创建成功后SetEvent
      

  5.   

    您可以把主窗口的柄传给新建窗口,当自己创建完成后,给主窗口发消息,主窗口响应这个消息,但我想最好还是用事件。
    HANDLE gTerminate;
    //用户界面线程创建一个窗口之前,在主线程中
    gTerminate=::CreateEvent(NULL,FALSE,TRUE,NULL);
    //在用界面线程中,窗口创建完成之后
    ::SetEvent(gTerminate);
    //在主线程中
    WaitForSingleObject(gTerminate,5000);
      

  6.   

    这种方法我都试过了,主程序是不能Wait的,主程序暂停了,线程就不执行了,我现在是这么做的,不使用界面线程,还是不行
    //创建窗口
    pDlg->ShowWindow(SW_SHOW);
    pDlg->UpdateWindow();
    //这时候窗口就跳出来了
    pDlg->SendMessage(...);
    这时对话框收到消息,并在列表框中插入字符串,然后刷新
    但是对话框都是一次性显示出来的,我发送一次消息,让它Sleep(500)结果还是一次性显示出来的,不明白啊,郁闷
      

  7.   

    MsgWaitForMultipleObjects可以同时等待 事件和windows ui 消息
      

  8.   

    你的意思是想让界面出现之后,收到主界面的消息后才怎么样吗?为什么不能在线程界面里用WaitForSingleObject?