Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include "windows.h"
#include <port1632.h>
#include "date.h"
extern CHAR chSepDate; extern CHAR chSepTime; extern CHAR sz1159[]; extern CHAR sz2359[]; extern INT iDate; extern INT iYearOffset; extern BOOL f24Time; extern BOOL fLZero; extern HANDLE hinstTimeDate; extern INT cchTimeMax; extern INT cchLongDateMax; extern CHAR *rgszDayAbbrevs[];
void LockStrings(id) WORD id; { HANDLE h;
if ((h = FindResource(hinstTimeDate, MAKEINTRESOURCE(IDS_DATESTRINGS >> 4), RT_STRING)) && (h = LoadResource(hinstTimeDate, h))) { GlobalLock(h); } }
void CalcCchDateMax(idFirst, idLast) WORD idFirst; WORD idLast; { CHAR rgch[30]; register INT cch, cchT;
cch = 0; while (idFirst <= idLast) { cchT = LoadString(hinstTimeDate, idFirst++, rgch, 30); if (cchT > cch) cch = cchT; } cchLongDateMax += cch; }
BOOL FAR APIENTRY InitLongTimeDate(UINT format) { INT cchT; INT i; CHAR rgch[30]; LANGID PrimaryLangID = PRIMARYLANGID(GetSystemDefaultLangID());
/* Get date/time strings into memory & lock down for all time */ LockStrings(((WORD)IDS_DATESTRINGS >> 4) + 0); LockStrings(((WORD)IDS_DATESTRINGS >> 4) + 1);
/* Now calculate worst case size of long date string */ /* this is sum of separator strings, plus max of months, plus max of
weekdays, plus 2 digits, plus 4 digits, plus zero terminator */ cchLongDateMax = 2 + 4; CalcCchDateMax(IDS_MONTHS, IDS_MONTHS+11); #ifdef LEPPARD
for (i = IDS_SEPSTRINGS; i <= IDS_SEPSTRINGS+4; i++) { cchLongDateMax += LoadString(hinstTimeDate, i, rgch, 30); } #else
cchLongDateMax += 5; /* room for spaces and commas */ #endif
CalcCchDateMax(IDS_DAYSOFWEEK, IDS_DAYSOFWEEK+6);
//
// See if it's Japanese or Korean.
//
if ((PrimaryLangID == LANG_JAPANESE) || (PrimaryLangID == LANG_KOREAN)) { cchLongDateMax += LoadString(hinstTimeDate, IDS_SEPSTRINGS+5, rgch, 30); cchLongDateMax += LoadString(hinstTimeDate, IDS_SEPSTRINGS+6, rgch, 30); }
/* Calc max size of time string */ cchT = 0; if (!f24Time) { cchT = lstrlen(sz2359); cchTimeMax = lstrlen(sz1159); if (cchT > cchTimeMax) cchTimeMax = cchT; } cchTimeMax += 6; return TRUE; }
|