case WM_SETTINGCHANGE:
GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITIME, szBuffer, 2) ;
f24Hour = (szBuffer[0] == '1') ; GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITLZERO, szBuffer, 2) ;
fSuppress = (szBuffer[0] == '0') ; InvalidateRect (hwnd, NULL, TRUE) ;
return 0 ;中的GetLocaleInfo函数不怎么理解,哪位大哥英文好,给看看,并把这个函数的用法,和那个参数总结一下子.
GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITIME, szBuffer, 2) ;
f24Hour = (szBuffer[0] == '1') ; GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITLZERO, szBuffer, 2) ;
fSuppress = (szBuffer[0] == '0') ; InvalidateRect (hwnd, NULL, TRUE) ;
return 0 ;中的GetLocaleInfo函数不怎么理解,哪位大哥英文好,给看看,并把这个函数的用法,和那个参数总结一下子.
GetLocaleInfo:取得与指定地方有关的信息
Locale:想要获得信息的地方(可选)
lCType:要取回的信息类型
lpLCData:制定缓冲区,用于装载要求的信息.
cchData:缓冲区长度;0=获取必要的缓冲区长度
返回值:成功返回非零,失败为零|local参数可选值:
LOCALE_USER_DEFAULT:默认表示当前用户
LOCALE_SSHORTDATE :短日期格式
LOCALE_SLONGDATE :长日期格式
LOCALE_STIMEFORMAT:时间格式1.//获取时间日期格式
procedure GetDateTimeFormat();var buf:pchar; i:integer; GPrevShortDate,GPrevLongDate,GPrevTimeFormat:string;begin getmem(buf,100); i:=100; //i必须在调用前赋值为buf缓冲区的长度。如果设为0或负值,将取不到设置的值 GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SSHORTDATE,buf,i); //取当前用户设置,短日期格式。 GPrevShortDate:=string(buf); i:=100; GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SLONGDATE,buf,i); //取长日期格式 GPrevLongDate:=string(buf); i:=100; GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_STIMEFORMAT,buf,i); //取时间格式 GPrevTimeFormat:=string(buf); FreeMem(buf);end;
2.//设置时间格式
procedure SetDateTimeFormat();
var
p:DWORD;
begin
SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SSHORTDATE,pchar('yyyy-MM-dd')); //设置短日期格式
SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SLONGDATE,pchar('yyyy''年''M''月 ''d''日'')); //设置长日期格式为 yyyy'年'M'月'd'日',“年月日”字符必须用单引号括起来。Delphi字符串里必须用两个单引号。
SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_STIMEFORMAT,pchar('H:mm:ss')); //设置时间格式,24小时制
SendMessageTimeOut(HWND_BROADCAST,WM_SETTINGCHANGE,0,0,SMTO_ABORTIFHUNG,10,p);//设置完成后必须调用,通知其他程序格式已经更改,否则即使是程序自身也不能使用新设置的格式
end;
由于您长时间不结贴,上一次答复已超一个月并且已有最佳答案,本人帮你结贴。
若是觉得答案不嘉,请放在本版的疑难杂症帖链接:
http://bbs.csdn.net/topics/390351579。
如果您有什么意见,请您联系我。