gpt4 book ai didi

c++ - 如何从不同线程调用 CMFCRibbonProgressBar 方法?

转载 作者:太空宇宙 更新时间:2023-11-04 14:21:19 33 4
gpt4 key购买 nike

我有一个简单的 CMFCRibbonProgressBar 和一个在进行冗长操作时调用 SetPos(value, TRUE) 的线程。问题是在 Debug模式下,它在 wincore.cpp 中断言:

    CHandleMap* pMap = afxMapHWND();
ASSERT(pMap != NULL);

根据该文件中的注释,我明白我不应该从不同的线程调用它,因为它可能有潜在的危险。那么我的问题是如何获得更新进度条位置的线程?我很想忽略那个断言并在 Release模式下继续,但那是非常邪恶的......

有什么建议吗?

最佳答案

好的,有人对这个问题进行了非常简短的评论,他们给出了正确的答案。我不知道他们为什么撤回他们的评论:/

我最终在 CMFCRibbonProgressBar 派生类中存储了一个 CWnd* 指针,每当我从工作线程调用“SetAmountCompleted”方法时,我都会使用 CWnd 发送一条自定义消息,该消息带有指向 WPARAM 中派生类的指针.收到消息的 CWnd 然后提取指针并调用 Update 方法,该方法将重绘进度条。

复杂,丑陋,是MFC。呸。

关于c++ - 如何从不同线程调用 CMFCRibbonProgressBar 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7497167/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com