我现在做的程序要连接数据库,在连接远程数据库的时候,费时较长,所以我想显示一个包含AVI动画的对话框,就像windows搜索文件是,有一个手电的动画那样。我是在CMainFrm中连接数据库的,好想不能用非模式对话框,我就调用了一个辅助线程,里面调用一个模式对话框,我想在连接数据库之后结束这个线程,可是DoModal之后就不在执行了,一直在等待操作,根本不执行后面的::WaitForSingleObject(g_eventStart,INFINITE);.请教各位高手怎样结束这个对话框呀?
我后来又想用DialogBar来实现,但是在使用Create创建时,第一个参数CWnd* pParentWnd不知道怎么设置,使用this编译报错!!有没有高手解决过这种问题呀???望指教!!!谢谢!!

解决方案 »

  1.   

    传递对话框的this指针即可,参见:
    void CPage3::LoadThumbImages()
    {
    TerminateThread();
    m_hThread = (HANDLE)_beginthreadex(NULL,0, LoadThumbNail,(LPVOID)this,0/* CREATE_SUSPENDED*/,&m_dwThreadID); 
    m_bRunning = TRUE;
    }unsigned __stdcall CPage3::LoadThumbNail(LPVOID lpParam)
    {
    CPage3* pThumbDlg = (CPage3*)lpParam;
    //调用对话框中的成员变量,也可以调用成员函数!
    CListCtrl& ListCtrl = pThumbDlg->m_cThumbList;
    CImageList* pImgList = &pThumbDlg->m_ImageListThumb;
    }
      

  2.   

    问题解决了,传递this指针后,创建DialogBar也不成功,不知道是什么问题,我还是用的模式对话框,设置一个计时器,检查全局参数,用EndDialog函数关闭对话框。同样谢谢楼上的朋友!