弹出模态对话框,对话框初始化时运行一辅助线程(因为想在OnInitDialog初始后就调用某些函数A,如果直接放在OnInitDialog中,A不运行完,对话框会一直不显示出来,所以想到在OnInitDialog开一辅助线程,在辅助线程中运行A,A运行完,再OnOk掉,当然希望高手指点更好的方法),在辅助线程函数中A结束时调用了OnOk();结果程序挂掉了,如果用OnCancel()就没问题。求方法

解决方案 »

  1.   

    线程结束时给窗口发送自定义消息执行OnOk()
      

  2.   

    对。我就是在线程最后结束时加了个OnOk()
    ,想让这个对话框消失掉,结果挂掉了。
      

  3.   

    你的意思是用postmessage再发自定义消息,在自定义消息里用onok????
      

  4.   

    不就是一个提示对话框,再启用一个工作线程来做你的事情,这个事情做完后把提示对话框关掉嘛不要这样直接调用OnOk,给你的对话框发消息让他自己销毁就可以了,用post不要用send
    post的话,你可以让你的线程先退出,再销毁对话框,send的话,这个次序就有问题了,还是会导致出错。
      

  5.   

    定时回调,用后删除,直接调用处理函数
    UINT SetTimer( 
    UINT nIDEvent, 
    UINT nElapse, 
    void (CALLBACK EXPORT* lpfnTimer)( 
    HWND, UINT, UINT, DWORD) ); 
    BOOL KillTimer( int nIDEvent );
    另外还可以处理重载CWnd::OnShowWindow中处理,当然调用基类OnShowWindow显示后再处理你的东西