我正在使用普通的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
事件吗?