【发布时间】:2016-12-12 17:34:59
【问题描述】:
我的 MFC 项目有一个非常奇怪的窗口模式设置。我认为这种设置搞砸了自有消息框的显示方式。
在按下 ALT 键之前,消息框是不可见的。
我仍在尝试围绕他们正在使用的窗口设置进行思考,但也许有人可以给我一个线索,让我知道要寻找什么?
我写了一个解决方法,我将所有者窗口和消息框的标题传递给一个类,该类生成一个线程,该线程遍历所有窗口并找到一个由指定所有者拥有的消息框对话框,该对话框具有指定的标题.但是,我必须搜索和替换 1000 多个实例才能使其在系统范围内工作。
更好的选择是找到根本原因。但是这其中的复杂性是相当令人生畏的。任何我应该寻找的可能导致这种行为的线索将不胜感激。
【问题讨论】:
-
这可能是绘画/重绘问题。
-
@1201ProgramAlarm,因为这是一个普通的windows MessageBox,不知道会怎么样。
-
您是否使用多显示器设置?消息框可以在您已断开连接的显示器上吗?
-
你是如何显示消息框的?您是否将对话框窗口句柄传递给它?
-
Win32 MessageBox doesn't appear 表现出相同的故障模式。在该问答中,owner 窗口的
WM_PAINT-handler 缺少BeginPaint/EndPaint调用。有了手头的信息,我建议查看(或注释掉)所有者窗口的PreTranslateMessage实现。按 [Alt] 进入模式循环,即系统提供的消息循环,绕过应用程序提供的消息循环(这可能是错误的)。