CMFCToolbar 图像通过远程桌面或连接到投影仪时消失

CMFCToolbar image disappears through remote desktop or when connected to projector

我在派生自 CDialog 的对话框中使用 CMFCToolbar,并使用 LoadBitmap() 在工具栏上加载图像。当我 运行 应用程序时,图像可以正常显示。但是,当我通过远程桌面连接计算机时,图像消失了。当计算机长时间闲置或进入睡眠模式时,也会出现同样的问题。这仅发生在 CMFCToolbar 中。所有其他工具栏都正确可见。

经过一些调试,我有以下观察(虽然很奇怪)。我发现只要在 OnSize() 事件(在我的对话框中超载)中发生某些异常(例如在 NULL 指针上调用 SetWindowPos()),图像就不会消失。这意味着 windows 在出现异常后停止进一步调用,并且不会出现该问题。但是,如果没有异常,则 OnSize() 会成功评估并出现此问题。我尝试删除 OnSize() 事件但没有成功。

终于想通了,解决了问题。我正在使用 LoadBitmap() 加载 PNG 图像。在我连接到远程桌面或投影仪或计算机从睡眠模式唤醒之前,它工作得非常好。当我用 BMP 文件替换 PNG 文件时,问题得到解决。在这些情况下,PNG 文件似乎不能与 CMFCToolbar 控件一起使用,尽管它们可以在正常工作流中工作。