DTN_DATETIMECHANGE断点和日期时间选择器控制是否存在问题?

时间:2013-09-04 18:51:24

标签: c++ windows winapi datetimepicker wtl

我有一个正在处理的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-the-system-if-calendar-control-has-calendar-displayed

我遇到的主要问题是,是否有其他人看过这个问题和/或他们是否可以重现它。我在这里有另一个开发人员使用相同的代码在不同的机器上重新编写,但是没有将代码的精简版本放在一起进行回购。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

这个问题很老了,但也许这个答案可以帮助有人磕磕绊绊:

Microsoft的Connect网站(https://connect.microsoft.com/VisualStudio/feedback/details/490277/上存在问题,链接无法正常工作)在C#/ .NET环境中描述此行为。

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

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

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