hit1160300508
2020-08-28 18:35
采纳率: 50%
浏览 209

MFC中,使用AfxMessageBox弹出的消息,被模态的等待提示框suo遮挡

之前做了一个模态的等待提示框,yi防止用户误认为软件卡死,但之后就遇到了一个问题,当其他线程监测到错误并使用afxmessagebox函数提示用户进行处理时,弹出的消息框被等待框所遮盖。

有查到使用MB_SYSTEMMODAL来使消息框置顶,但是软件代码量很大,如果用这种方式要修改的地方很多、很繁琐,有办法设置等待提示框在消息框下方吗?

PS:等待提示框的实现是另开一个线程,在线程中DoModal,通过提示框类的定时器检测结束标志来关闭

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 蒋晟 2020-09-02 02:15
    已采纳

    Raymond Chen的Modality博客系列里面有提到这样的问题。里面有两篇文章也提到了定时的消息框怎么实现的。 建议还是把整个系列从头到尾看一遍以避免类似的问题。
    https://devblogs.microsoft.com/oldnewthing/tag/modality

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • threenewbee 2020-08-28 18:43

    用宏定义,把mfc的AfxMessageBox用你自己的函数替换掉,这是最简单的办法。

    评论
    解决 无用
    打赏 举报
  • czc1014548352 2020-08-29 10:28

    HWND hwnd = ::FindWindow(_T("消息框的类"), NULL);
    if(hwnd)
    {
    隐藏或者关掉等待提示框
    }

    评论
    解决 无用
    打赏 举报