请问,修改MFC控件的内容时,如何禁止控件发送因修改动作引起的消息?

PDD123 2014-12-17 03:39:22
如题。

以前发生过这种情况,现在又遇到!

多线程,只用到一个临界区,在某些情况下发生死锁的情况。

检查来检查去,跟踪两个线程发现,一个是在EnterCriticalSection(...)的时候暂停,一个是在SetWindowText(...)的时候暂停。
查阅了文档,发现SetWindowText会引发一个WM_SETTEXT消息(This function causes a WM_SETTEXT message to be sent to this window.)。
所以我推测,估计是临界区和SendMessage隐藏的“锁” 发生了互锁的情况。

请问,有没有办法禁止控件发送因修改动作引起的消息?

...全文
200 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2014-12-18
  • 打赏
  • 举报
回复
还是要检查你的死锁到底怎么引起的
vocanicy 2014-12-18
  • 打赏
  • 举报
回复
SetWindowText底层也是用SendMessage实现的 建议在非主线程中如果要更新界面可以自定义一个消息,然后通过PostMessage该消息刷新显示 这样就不会导致死锁了
PDD123 2014-12-18
  • 打赏
  • 举报
回复
原来如此!谢谢。 看来以后只能通过2楼的方法来修改界面了。
allenhiman 2014-12-17
  • 打赏
  • 举报
回复
你要搞清楚 不是修改引起什么消息 而是SetWindowText本身就是通过send消息实现的

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧