Я собираюсь поделиться одним из способов получения этого текста, хотя я не собираюсь его использовать и не рекомендую никому другому его использовать.
Я нашел эту топи c, который описывает способ получения локализованных windows строк. Я начал играть с этим и обнаружил, что ComCtl32.dll
содержит строку ресурса, которая, кажется, та, которую использует элемент управления календаря. Ресурс, содержащий строку «Today:», имеет ID: 4432
. Но это не документированная область, поэтому никто не может полагаться на это, и это может изменяться от выпуска к выпуску.
Однако вот пример кода, который извлекает строку «Today:» на разных языках:
GetTodayString(GetUserDefaultUILanguage()); // Сегодня:
GetTodayString(MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT)); // Today:
GetTodayString(MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT)); // Aujourd’hui :
GetTodayString(MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT)); // Heute:
GetTodayString(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MODERN)); // Hoy:
GetTodayString(MAKELANGID(LANG_UKRAINIAN, SUBLANG_DEFAULT)); // Сьогодні:
CString GetTodayString(LANGID langId)
{
HMODULE hComCtl32 = LoadLibrary(_T("comctl32.dll"));
if (!hComCtl32)
return _T("");
UINT nResourceId = 4432; // I don't think that anyone should rely on this
CString cResourceStr = FindStringResourceEx(hComCtl32, nResourceId, langId);
FreeLibrary(hComCtl32);
int delimiterIdx = cResourceStr.Find(_T('\x6'));
CString cTodayStr = cResourceStr.Left(delimiterIdx);
return cTodayStr;
}
CString FindStringResourceEx(HINSTANCE hinst, UINT uId, UINT langId)
{
// Convert the string ID into a bundle number
LPCWSTR pwsz = NULL;
HRSRC hrsrc = FindResourceEx(hinst, RT_STRING,
MAKEINTRESOURCE(uId / 16 + 1),
langId);
if (hrsrc) {
HGLOBAL hglob = LoadResource(hinst, hrsrc);
if (hglob) {
pwsz = reinterpret_cast<LPCWSTR>
(LockResource(hglob));
if (pwsz) {
// okay now walk the string table
for (int i = 0; i < (uId & 15); i++) {
pwsz += 1 + (UINT)*pwsz;
}
pwsz += 1;
}
}
}
return CString(pwsz);
}
Как я уже сказал, я не собираюсь использовать этот подход, и, вероятно, я просто опущу текст "Today:" и выведу только отформатированную дату сегодня в нижнем колонтитуле.