如何使用Win32 API的DATETIMEPICKER

时间:2015-09-22 08:38:19

标签: winapi datetimepicker

我正在使用普通的C学习Win32 API。在尝试实现一些查询数据库的代码时,我遇到了使用datetimepicker检索查询的开始和结束日期的问题。

我有两个datetimepickers。

点击查询按钮时,必须检索两个日期并通过查询将其发送到数据库服务器。为了解决这个问题,我提出了两个想法。

在案例WM_NOTIFY下处理它。以下是我处理邮件的代码。

case WM_NOTIFY:
{
  HWND picker = (HWND) lpnmhdr->hwndFrom;
  if(lpnmhdr->code == DTN_DATETIMECHANGE){
    if(picker == GetDlgItem(hwnd, ID_DDAN_TAB_START_DATE)){
      HWND DTP_start = GetDlgItem(hwnd, ID_DDAN_TAB_START_DATE);
      DWORD dwTextLength_S = GetWindowTextLength(DTP_start);
      char s_date[dwTextLength_S + 1];
      GetWindowText(DTP_start, s_date, dwTextLength_S + 1);
    } else if(picker == GetDlgItem(hwnd, ID_DDAN_TAB_END_DATE)){
      HWND DTP_end = GetDlgItem(hwnd, ID_DDAN_TAB_END_DATE);
      DWORD dwTextLength_E = GetWindowTextLength(DTP_start);
      char e_date[dwTextLength_E + 1];
      GetWindowText(DTP_end, e_date, dwTextLength_E + 1);
    } 
...

在案例WM_COMMAND下处理它。以下是我处理邮件的代码。

case WM_COMMAND:
{
  switch(LOWORD(wParam)){
    case ID_DDAN_TAB_INT_Q_BTN: // this is the query button
    {
      HWND DTP_start = GetDlgItem(hwnd, ID_DDAN_TAB_START_DATE);
      HWND DTP_end = GetDlgItem(hwnd, ID_DDAN_TAB_END_DATE);
      DWORD dwTextLength_S = GetWindowTextLength(DTP_start);
      DWORD dwTextLength_E = GetWindowTextLength(DTP_end);
      char s_date[dwTextLength_S + 1];
      char e_date[dwTextLength_E + 1];
      GetWindowText(DTP_start, s_date, dwTextLength_S + 1);
      GetWindowText(DTP_end, e_date, dwTextLength_E + 1);
      ...

在处理这两封邮件时,我无法检索datetimepicker

中的值

有人请给我一个解释或示例如何处理DATETIMEPICKER事件吗?

0 个答案:

没有答案