1

我在带有无模式对话框的屏幕中有一个非常奇怪的行为,我找不到解决方案。

我通过单击视图中的按钮打开一个无模式对话框。由于对话框不是模态的,我应该能够在打开对话框时单击此视图中的任何其他按钮。但是我不能。事实上,我无法将焦点放在任何控件中……编辑、按钮等。

我检查了视图收到了哪些消息,但它似乎没有收到 WM_LBUTTONDOWN 消息。但它确实收到了 WM_LBUTTONUP 消息。

更奇怪的是,它只发生在 64 位 Windows 7 中(没有人在 Windows XP 中报告过这个问题,并且已经使用了很长时间),并且只发生在某些计算机中。但是我找不到原因,也不知道为什么会在这些计算机中发生这种情况。

有人有线索吗?从哪里开始看?

谢谢。

哈维尔

4

2 回答 2

1

这是一个棘手的问题。问题恰好出在对话框的自定义实现中。他们使用 MFC2008 视觉样式绘制它的非客户区域,并且在为视觉管理器调用 OnNcActivate 时,当 Aero 和桌面窗口管理器处于活动状态时它返回 FALSE。所以对话框没有将控件释放给它的子控件。

正如我所说的那样非常棘手......我只是让你知道问题出在哪里,以防万一有人在某个地方遇到类似的问题。我花了两天时间试图弄清楚。

谢谢。

哈维尔

于 2011-11-08T15:35:28.550 回答
1

你必须以WM_NCACTIVATE错误的方式处理。确保父窗口过程在使用 wparamTRUE接收时返回。WM_NCACTIVATEFALSE

于 2012-02-22T10:13:00.060 回答