如何处理日期和时间选取器通知

本节演示如何处理日期和时间选取器通知。

需要了解的事项

技术

先决条件

  • C/C++
  • Windows 用户界面编程

说明

当控件中发生通常由用户输入触发的事件时,日期和时间选取器 (DTP) 控件会向父窗口发送通知消息。 应用程序必须包含代码,以确定通知消息的类型并作出适当的响应。

如果计划在应用程序中将回调字段与 DTP 控件一起使用,则必须准备好处理 DTN_FORMATQUERYDTN_FORMATDTN_WMKEYDOWN 通知代码。 有关回调字段的其他信息,请参阅回调字段

以下 C++ 代码示例可标识 DTP 控件发送的通知消息,并调用相应的应用程序定义的函数。 有关如何处理本示例中出现的通知的代码示例,请参阅以下主题。

主题
如何处理 DTN_DATETIMECHANGE 通知
如何处理 DTN_FORMATQUERY 通知
如何处理 DTN_FORMAT 通知
如何处理 DTN_WMKEYDOWN 通知

 

BOOL WINAPI DoNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
    LPNMHDR hdr = (LPNMHDR)lParam;

    switch(hdr->code){

        case DTN_DATETIMECHANGE:{
            LPNMDATETIMECHANGE lpChange = (LPNMDATETIMECHANGE)lParam;
            DoDateTimeChange(lpChange);
        }
        break;

        case DTN_FORMATQUERY:{
            LPNMDATETIMEFORMATQUERY lpDTFQuery = (LPNMDATETIMEFORMATQUERY)lParam;

            // Process DTN_FORMATQUERY to ensure that the control
            // displays callback information properly.
            DoFormatQuery(hdr->hwndFrom, lpDTFQuery);
        }
        break;

        case DTN_FORMAT:{
            LPNMDATETIMEFORMAT lpNMFormat = (LPNMDATETIMEFORMAT) lParam;

            // Process DTN_FORMAT to supply information about callback
            // fields (fields) in the DTP control.
            DoFormat(hdr->hwndFrom, lpNMFormat);
        }
        break;

        case DTN_WMKEYDOWN:{
            LPNMDATETIMEWMKEYDOWN lpDTKeystroke = 
                            (LPNMDATETIMEWMKEYDOWN)lParam;

            // Process DTN_WMKEYDOWN to respond to a user's keystroke in
            // a callback field.
            DoWMKeydown(hdr->hwndFrom, lpDTKeystroke);
        }
        break;
    }

    // All of the above notifications require the owner to return zero.
    return FALSE;
}

日期和时间选取器通知

日期和时间选取器控件参考

使用日期和时间选取器控件

日期和时间选取器