注册 登录
编程论坛 VC.NET论坛

关于MFC工作线程问题

shyseaman 发布于 2007-12-01 13:45, 2460 次点击
用VC的MFC进行多线程编程,建立了单文档的应用程序,在VIEW类下响应菜单按钮,创建工作者线程,然后在线程程序中执行后台程序,后台程序估计需要运行10分钟左右,然后我希望的结果是 后台程序运行结束后将结果通过OnDraw()函数显示到VIEW的文档里,不知道该怎么办?
void CEngineerView::OnMenuFour()
{
    pThread=AfxBeginThread(ThreadFunc,&Info);
    Invalidate();
}
UINT ThreadFunc(LPVOID lpParam)
{
    threadInfo* pInfo=(threadInfo*)lpParam;
        程序执行内容
    ::AfxEndThread(0);
    return 0;
}
在响应OnMenuFour()菜单后,执行工作者线程,然后直接调用Invalidate();函数进行VIEW窗口重绘显然不对,
现在不知道该怎么处理,希望是程序能在执行完工作者线程后引起窗口重绘,另外在执行工作者线程程序的时候不会引起主线程的等待导致程序跟死机一样!

现在最大的问题是句柄如何返回
在对话框中输入数据,点确定后线程计算,
::PostMessage((HWND)(AfxGetApp()->GetMainWnd()->GetSafeHwnd()),WM_DISPLAY,aTmpt,NULL);
用这样的函数调用 WM_DISPLAY 消息函数对VIEW进行重绘
现在的问题是这个句柄如何返回呢?
AfxGetApp()->GetMainWnd()->GetSafeHwnd()这个句柄好象不行
1 回复
#2
hnzz_wgf2007-12-01 14:27
支持一下
1