0

我有一个正在处理的 Windows 应用程序,并且在调试时遇到了一个奇怪的问题。我正在使用 WTL,并在表单上有一个 CDateTimePickerCtl 来设置日期。我在消息映射中使用以下内容处理 DTN_DATETIMECHANGE 事件:

NOTIFY_HANDLER(CONTROL_ID_DATE, DTN_DATETIMECHANGE, OnDateChanged)

当应用程序在没有断点的调试器中运行时,这可以正常工作。如果我在 OnDateChanged 函数中有一个断点,即使在第一行,如果我通过下拉日历更改时间,VS 也会挂起。如果我通过在控件中输入来编辑日期,则没有问题。

我什至试图让 OnDateChanged 只调用 PostMessage,并使用特定于应用程序的消息来尝试解决该问题,但如果我在该消息处理程序中有断点,我会遇到同样奇怪的问题。

它变得更加陌生。不仅 VS 挂起,而且一旦 VS 挂起,其他一些应用程序也会挂起。IE 10、Chrome、Outlook 挂起,记事本没有。这是完全可重复的。

我最终不得不通过任务管理器多次杀死 VS。

您可以在此处查看我使用 MS Connect 打开的票证:

https://connect.microsoft.com/VisualStudio/feedback/details/799690/break-point-in-vs-2005-when-debugging-c-gui-hangs-vs-and-other-applications-running-on-系统如果日历控制有日历显示

我的主要问题是其他人是否已经看到这个问题和/或他们是否可以重现它。我在这里有另一个开发人员在另一台机器上使用相同的代码进行了 repro,但还没有将代码的精简版本放在一起只是 repo。

另请注意,我在 Win7 64 位上运行 VS 2008。

4

2 回答 2

1

在早期版本的 Windows 上,我遇到了与组合框相同的问题。特别是当断点设置在关闭时间并由另一个控件激活左右启动时。看起来很可能问题也存在于日期时间中。对于这种情况,我建议使用 TRACE/ATLTRACE 调用进行调试。

于 2013-09-06T22:00:09.980 回答
0

这个问题已经很老了,但也许这个答案可以帮助那些偶然发现的人:

Microsoft 的 Connect 网站(https://connect.microsoft.com/VisualStudio/feedback/details/490277/,链接不再有效)在 C#/.NET 环境中描述此行为时存在问题。

微软团队发现它是由安装全局鼠标钩子的 Win32 DateTimePicker 控件本身引起的,从而导致所描述的行为。由于 bug(?) 已经存在于 Win32 中,因此对于 .NET/C++ 应用程序也是如此。

我认为这个错误不会被修复。连接网站链接已关闭。

当前的解决方法是在 DateTimePicker 事件处理程序中没有断点。

于 2015-10-01T07:28:12.070 回答