缺少WM_LBUTTONDOWN

时间:2011-11-04 15:48:01

标签: windows-7 mfc modeless

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

通过单击视图中的按钮打开无模式对话框。由于对话框不是模态的,因此我可以在打开对话框时单击此视图中的任何其他按钮。但是我不能。事实上,我无法将焦点放在任何控件上......按钮,按钮等。

我已经检查了视图正在获取哪些消息,并且它似乎没有得到WM_LBUTTONDOWN消息。但它确实得到了WM_LBUTTONUP消息。

为了让事情变得更加奇怪,它只发生在Windows 7 64位(没有人在Windows XP中报告此问题并且长时间使用)以及仅在某些计算机中。但我找不到原因,我也不知道为什么会在这些电脑中发生这种情况。

有人有线索吗?在什么地方开始看?

感谢。

哈维尔

2 个答案:

答案 0 :(得分:1)

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

我说的非常棘手.....我只是让你知道问题出在哪里以防万一有人遇到类似的问题。我失去了两天试图解决它。

感谢。

哈维尔

答案 1 :(得分:1)

您必须以错误的方式处理WM_NCACTIVATE。确保父窗口过程在收到TRUE并且wparam为WM_NCACTIVATE时返回FALSE