如何处理 DTN_WMKEYDOWN 通知

本主题演示如何处理 DTN_WMKEYDOWN 通知。 通过处理该通知代码,控件所有者可以在控件的回调字段中对按键做出特定的响应。

需要了解的事项

技术

先决条件

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

说明

日期和时间选取器 (DTP) 控件会发送 DTN_WMKEYDOWN 消息,以报告用户在回调字段中输入了内容。 如果要模拟标准 DTP 字段支持的相同键盘响应或提供自定义响应,则应用程序必须包含处理此通知的代码。

以下 C++ 代码示例是一个应用程序定义的函数,用于处理 DTN_WMKEYDOWN 通知。

安全警告:错误使用 lstrcmp 会危及应用程序的安全。 例如,在以下代码示例中调用 lstrcmp 之前,应确保两个字符串都是以 null 结尾。 在继续之前,应查看安全注意事项:Microsoft Windows 控件

//  DoWMKeydown increments or decrements the day of month according 
//  to user keyboard input.

void WINAPI DoWMKeydown(
 HWND hwndDP,
 LPNMDATETIMEWMKEYDOWN lpDTKeystroke)
{
    int delta =1;
    if(!lstrcmp(lpDTKeystroke->pszFormat,L"XX")){
        switch(lpDTKeystroke->nVirtKey){
            case VK_DOWN:
            case VK_SUBTRACT:
                delta = -1;  // fall through

            case VK_UP:
            case VK_ADD:
                lpDTKeystroke->st.wDay += (WORD) delta;
                break;
        }
    }
}

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

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

日期和时间选取器