如何处理日期和时间选取器通知
本节演示如何处理日期和时间选取器通知。
需要了解的事项
技术
先决条件
- C/C++
- Windows 用户界面编程
说明
当控件中发生通常由用户输入触发的事件时,日期和时间选取器 (DTP) 控件会向父窗口发送通知消息。 应用程序必须包含代码,以确定通知消息的类型并作出适当的响应。
如果计划在应用程序中将回调字段与 DTP 控件一起使用,则必须准备好处理 DTN_FORMATQUERY、DTN_FORMAT 和 DTN_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;
}
相关主题