我有一个应用程序,它创建了一系列以“级联”形式显示的无模式对话框窗口。用户应该能够单击任何窗口以将其带到顶部并与之交互。
这是一个屏幕截图,显示了它按预期工作。用户点击了底部第三个窗口,成功地将其带到顶部。
用户报告说,当他运行此程序并单击其中一个被遮挡的窗口时,该窗口不会升到顶部。
这是显示问题发生的视频。它显示了笔记本窗口的正常级联,其行为符合预期。然后出现我的应用程序窗口的级联,但用户无法将任何选定的窗口置于顶部。所选窗口的外观发生变化,表明它已被选中,但仍处于隐藏状态。(视频最后展示了一个相关问题,我们现在可能可以忽略它)
用户报告此问题发生在他尝试过的其他 PC 上。我无法重现该问题。
我完全被难住了,甚至无法猜测可能是什么原因造成的。
(我的一个理论是应用程序已冻结并且不再响应绘制消息。但是,视频显示用户将被遮挡的窗口拖出级联,然后窗口被绘制得很好。看起来很明显选择窗口时,应用程序没有收到或忽略它的绘制消息)
该应用程序使用 C++ 和 wxWidgets 2.9.4 编写并在 windows 7 下运行
这似乎是 wxWidgets 2.9 的问题。当使用 v2.8.12 库构建时,用户报告它工作正常。
这是创建窗口的代码。请注意,父项为 NULL。(这允许在不最小化级联窗口的情况下最小化主应用程序窗口 - 这是一项必需的功能。)
cNewDataPopup::cNewDataPopup( cPatDataset& data )
: wxDialog(NULL,-1,L"New data",wxPoint(200,200),wxSize(570,242),
wxDEFAULT_DIALOG_STYLE|wxSTAY_ON_TOP )
, myData( data )
{