微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Windows 7 上为林加拉语使用 GetDateFormatEx 的问题

如何解决在 Windows 7 上为林加拉语使用 GetDateFormatEx 的问题

如果需要,我可以与您分享一个测试解决方案。但是采用认的 Dialog MFC 项目并重命名窗口上的 STATIC 控件并将其映射到变量。在 OnInitDialog 中执行以下操作:

VERIFY(datToday.GetAsSystemTime(sysTime));
int i = GetDateFormatEx(_T("ln"),NULL,&sysTime,_T("d/MM"),m_strDate.GetBufferSetLength(_MAX_PATH),_MAX_PATH,nullptr);
if (i == 0)
{
    AfxMessageBox(GetLastErrorAsstringEx(::GetLastError()));
}
m_strDate.ReleaseBuffer();
UpdateData(FALSE);

还要将此方法添加到类中:

CString GetLastErrorAsstringEx(DWORD dwError)
{
    LPVOID  lpMsgBuf;
    CString strError;

    ::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
        FORMAT_MESSAGE_FROM_SYstem |
        FORMAT_MESSAGE_IGnorE_INSERTS,nullptr,dwError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),// Default language
        (LPTSTR)&lpMsgBuf,nullptr);

    strError = (LPTSTR)lpMsgBuf;

    LocalFree(lpMsgBuf);

    return strError;
}

它应该显示 Lingala 的日期(尽管只是数字)。在 Windows 10 上没问题,但在 Windows 7 上会引发错误

enter image description here

根据网站:

ERROR_INVALID_ParaMETER。任何参数值无效。

我知道还有其他格式化日期的方法,但我的应用程序支持 50 多种语言,使用 GetDateFormatEx 是最好的恕我直言。在实际示例中,许多语言具有不同的格式字符串,其中包括月份名称。根据 Microsoft 网站,自 Windows Vista 以来就支持方法,那么为什么它会在用户 Windows 7 PC 上失败?是否需要额外的资源,或者该操作系统实际上不支持 Lingala?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。