中易网

帅哥,看见你的帖子,想请教个问题,如何取得日历控件中的正确值啊? #include <windows.h> #include <wind

答案:1  悬赏:30  
解决时间 2021-01-18 21:04
帅哥,看见你的帖子,想请教个问题,如何取得日历控件中的正确值啊? #include <windows.h> #include <wind
最佳答案
#include "stdafx.h"
#include
#include
#include "resource.h"
#include "Commctrl.h"
#include "TimepickerDlg.h"

BOOL WINAPI TimepickerDlg_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, TimepickerDlg_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, TimepickerDlg_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, TimepickerDlg_OnClose);
}

return FALSE;
}

BOOL TimepickerDlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
TimepickerDlg* timepicker_td=(TimepickerDlg*)lParam;
SetWindowLong(hwnd,GWL_USERDATA,(LPARAM)timepicker_td);

return TRUE;
}

void TimepickerDlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_TIMEPICKER_OK:
{

SYSTEMTIME st;
LRESULT lResult1,lResult2;
TimepickerDlg* timepicker_td=(TimepickerDlg*)GetWindowLong(hwnd,GWL_USERDATA);
lResult1 = SendMessage(GetDlgItem(hwnd,IDC_DATETIMEPICKER1), DTM_GETSYSTEMTIME, 0, (LPARAM)&st);
if(lResult1 == GDT_VALID)
{
// 获取成功,进行其他处理。
// TCHAR szDay[50];
// wsprintf(szDay, TEXT("%04u-%02u-%02u"),st.wYear, st.wMonth, st.wDay);
// MessageBox(hwnd,szDay,TEXT(""),MB_OK);
timepicker_td->year=st.wYear;
timepicker_td->month=st.wMonth;
timepicker_td->day=st.wDay;
}
lResult2 = SendMessage(GetDlgItem(hwnd,IDC_DATETIMEPICKER2), DTM_GETSYSTEMTIME, 0, (LPARAM)&st);
if(lResult2 == GDT_VALID)
{

timepicker_td->hour=st.wHour;
timepicker_td->minute=st.wMinute;
timepicker_td->second = st.wSecond;


}
//TCHAR str[50];
//wsprintf(str,TEXT("%04u-%02u-%02u %02u:%02u:%02u"),timepicker_td->year ,timepicker_td->month ,timepicker_td->day ,timepicker_td->hour ,timepicker_td->minute ,timepicker_td->second);
//MessageBox(hwnd,str,TEXT(""),MB_OK);

EndDialog(hwnd, 1);
}
break;
case IDC_TIMEPICKER_CANCEL:
{
EndDialog(hwnd, 0);
}
break;
default:
break;
}
}

void TimepickerDlg_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);
}

我之前写的有些你都不用管,主要的是这句吧:lResult1 = SendMessage(GetDlgItem(hwnd,IDC_DATETIMEPICKER1), DTM_GETSYSTEMTIME, 0, (LPARAM)&st);用SendMessage,第一个参数得到控件句柄,因为我用的是长时间,两个控件,第二个参数是获取时间的宏定义,最后传向的参数吧,我用的是结构体,基本上就这样的,其实回答我问题 的那个人已经给出答案了
追问:LRESULT lResult = SendMessage (hwnddtm, DTM_GETSYSTEMTIME, 0, (LPARAM) &gst );
我也是这么来的,但是返回值一直都是错误的,不知道为什么。
后来我在网上找到一个方法,
LPNMDATETIMECHANGE lpChange = (LPNMDATETIMECHANGE)lParam;
lpChange ->st 就是正确的值了。
不知道为啥
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
阅读理解According to the passage we know t
太阳大气由内向外分为哪三层?各层发生什么现
包庇罪属于什么犯罪类型
对联(守定寒窗空寂寞)求下联,(堂前洗砚,
桃木斧子挂在哪好
景森设计和瀚华,哪间好?
海豚英语地址有知道的么?有点事想过去
为什么总是体虚感觉,走路都很累,怎么办?
东方舞蹈学校(烟台莱山市)地址在什么地方,我
课内阅读。   ①读书就跟参观博物馆一样
求闪婚闪婚小说
关于带字和木字的成语
女人随不随便,看她有没有这三点表现,非常准
高频彩qq群——LOL引燃伤害是否能叠加
淘宝卖家被人恶意诈骗,怎么处理?
推荐资讯
dota2哪些信使可以打虚无宝石
好听的后宫个性伤感签名
lol剑魔刚出来的技能加成都是什么?
中国联通智能手机卖场(那丽镇丽华路15号中国
马岔乡中学怎么去啊,我要去那办事
关于英国top up的问题
和平娱乐城地址有知道的么?有点事想过去
做wish怎样编辑tag关键词标签
丰田逸致车突然打不着火,是什么情况???
求一位诡计多端的大师为小弟出谋划策,小弟偶
带贺字的微信名名称
ppr螺纹水堵自来水堵头能用几年、、容易漏水
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?