如何从 CDateTimeCtrl 控件的 up/down 按钮捕获 windows 消息?

How to capture windows message from the up/down button of a CDateTimeCtrl control?

我在我的对话应用程序中使用 CDateTimeCtrl 和回调字段。一切都按预期工作,但我想在单击 CDateTimeCtrl 的上下按钮(看起来很像旋转控件)但没有成功时捕获 windows 消息。 Spy++ 报告上下按钮的 class 为 msctls_updown32。 Spy++ 消息日志也没有提供任何线索。如何从这个 up-down 控件(对我来说看起来像一个 OLE 控件)捕获鼠标点击消息?

Edited: : 我试过像这样处理 UDN_DELTAPOS 消息,但仍然无法捕获来自 CMyTimeCtrl.[=17= 的消息]

class CMyTimeCtrl : public CDateTimeCtrl
{
    DECLARE_DYNAMIC(CMyTimeCtrl)
public:
    CMyTimeCtrl();
    virtual ~CMyTimeCtrl();

protected:
    int m_msec;
    DECLARE_MESSAGE_MAP()
public:
    virtual void DoDataExchange(CDataExchange* pDX);
    afx_msg void OnDtnFormat(NMHDR* pNMHDR, LRESULT* pResult);
    afx_msg void OnDtnFormatquery(NMHDR* pNMHDR, LRESULT* pResult);
    afx_msg void OnDtnWmkeydown(NMHDR* pNMHDR, LRESULT* pResult);
    afx_msg void OnDeltaposSpin(NMHDR* pNMHDR, LRESULT* pResult);
};

BEGIN_MESSAGE_MAP(CMyTimeCtrl, CDateTimeCtrl)
    ON_NOTIFY(WM_NOTIFY, UDN_DELTAPOS, &CMyTimeCtrl::OnDeltaposSpin)
    ON_NOTIFY_REFLECT(DTN_FORMAT, &CMyTimeCtrl::OnDtnFormat)
    ON_NOTIFY_REFLECT(DTN_FORMATQUERY, &CMyTimeCtrl::OnDtnFormatquery)
    ON_NOTIFY_REFLECT(DTN_WMKEYDOWN, &CMyTimeCtrl::OnDtnWmkeydown)
END_MESSAGE_MAP()

谢谢,在评论区的指导下我设法解决了我的问题。在消息映射中我犯了一个错误,更正如下所示。现在它工作正常。在我的资源部分,IDC_STATIC 值为 1000:

BEGIN_MESSAGE_MAP(CMyTimeCtrl, CDateTimeCtrl)
    ON_NOTIFY(UDN_DELTAPOS, IDC_STATIC, &CMyTimeCtrl::OnDeltaposSpin)
    ON_NOTIFY_REFLECT(DTN_FORMAT, &CMyTimeCtrl::OnDtnFormat)
    ON_NOTIFY_REFLECT(DTN_FORMATQUERY, &CMyTimeCtrl::OnDtnFormatquery)
    ON_NOTIFY_REFLECT(DTN_WMKEYDOWN, &CMyTimeCtrl::OnDtnWmkeydown)
END_MESSAGE_MAP()