【发布时间】:2011-12-31 04:11:03
【问题描述】:
我有一个 MFC 对话框和一个 ActiveX 网格控件。每当用户尝试编辑日期类型网格单元格时,我都会创建一个 CDateTimeCtrl 并在网格内显示。该控件是作为网格控件的子控件创建的,但它是对话框类中的一个变量。
现在,我想在我的对话框类中处理此日期控件的 DTN_DATETIMECHANGE 消息。我可以在 Spy++ 中看到这些消息被发送到网格控件,但是我们如何在祖父(对话框)类中处理这个?
【问题讨论】:
我有一个 MFC 对话框和一个 ActiveX 网格控件。每当用户尝试编辑日期类型网格单元格时,我都会创建一个 CDateTimeCtrl 并在网格内显示。该控件是作为网格控件的子控件创建的,但它是对话框类中的一个变量。
现在,我想在我的对话框类中处理此日期控件的 DTN_DATETIMECHANGE 消息。我可以在 Spy++ 中看到这些消息被发送到网格控件,但是我们如何在祖父(对话框)类中处理这个?
【问题讨论】:
您是否尝试过将其创建为同级,但只是在 Z 顺序上更高?您可能需要将 WS_CLIPSIBLINGS 添加到父对话框的样式中以避免网格在日期控件上绘制的问题。
另一种技术是使用充当转发器的中间子节点,因此网格包含包含日期控制的转发器。这样你的代码仍然会收到通知;并且您仍然可以获得适当的 HWND 遏制效果。 (转发器通常没有边框,只是调整其唯一子节点的大小以占据其整个客户区,因此对最终用户不可见。)
【讨论】: