我有一个简单的CMFCRibbonProgressBar和一个在漫长的操作过程中调用SetPos(value,TRUE)的线程。 问题是在调试模式下它在wincore.cpp中断言:
CHandleMap* pMap = afxMapHWND();
ASSERT(pMap != NULL);
我理解该文件中的注释我不应该从另一个线程调用它,因为它可能是危险的。 那么我的问题是你如何得到一个线程来更新进度条的位置? 我很想忽略那个断言并继续处于释放模式但这很邪恶......
有什么建议吗?
答案 0 :(得分:0)
好的,有人在这个问题上做了非常简短的评论,他们得到了正确答案。我不知道为什么他们撤回了他们的评论:/
我最终在CMFCRibbonProgressBar派生类中存储CWnd *指针,每当我从工作线程调用“SetAmountCompleted”方法时,我使用CWnd发送一个自定义消息,其中指向WPARAM中的派生类。 接收消息的CWnd然后提取指针并调用Update方法,它将重绘进度条。
它很复杂,很难看,它是MFC。呼。