遇到了这样的编程:
   有个计算函数要等待较长时间,以前没有开辟新线程的时候,一运行,这下好了,等着吧,中间还不能停止,所以我想开个新线程来计算,这样主线程就比较空闲了,也可以随时停止新线程。
   我找个例子来,就是为线程处理函数写了个全局UINT TreadProc(LPVOID param)
在这里面,我想完成计算并让当前窗体的m_progress(进度控件)显示计算进度,显示进度这块我能弄,关键是如何或者这个进度条。
我的思路是:获取当前应用程序句柄,然后获得当前对话框句柄,然后获得里面的m_progress,并且给他设个进度,这个思路如何实现那,或者各位有什么好的相法啊,着急中啊。

解决方案 »

  1.   

    通过UINT TreadProc(LPVOID param)的param把控件指针传过去
      

  2.   

    这是我在 UINT TreadProc(LPVOID param)函数里的模拟程序,结果一道pDlg->m_progress.SetPos(i);就出错
    CThreadsDlg* pDlg = (CThreadsDlg*)param;//将接受到的LPVOID类型的指针强制类型转换

    for(int i=1;i<=100;i++){
    Sleep(1000);
            pDlg->m_progress.SetPos(i);
    }

    return 0;
      

  3.   

    直接将m_progress的指针当参数传到TreadProc的参数中
      

  4.   

    CThreadsDlg* pDlg = (CThreadsDlg*)param 那你就要把dlg的this指针传给param 了