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

FormatMessage 并不总是提供正确的输出 - 某些值被复制 - 为什么?

如何解决FormatMessage 并不总是提供正确的输出 - 某些值被复制 - 为什么?

STRINGTABLE 项目:

  • ID:IDS_TPL_SWAP_CONFIRMATION
  • 值:5149
  • 标题Swap assignments:\n\n%1 - %2 [%3]\n%4 - %5 [%6]\n\nPlease confirm.

有时当我尝试这段代码时:

CString strPrompt = _T("");
strPrompt.FormatMessage(IDS_TPL_SWAP_CONFIRMATION,m_pEntry->GetMeetingDateAsstring(),(LPCTSTR)strExistingName,(LPCTSTR)strExistingDescription,pReplacement->GetMeetingDateAsstring(),(LPCTSTR)getter(pReplacement),(LPCTSTR)strReplacementDescription);

我有时发现 %1 值与 %4 值重复,即使 pReplacement->GetMeetingDateAsstring() 实际上是不同的日期。

最后我把代码改成这样:

strPrompt.LoadString(IDS_TPL_SWAP_CONFIRMATION);
strPrompt.Replace(_T("%1"),m_pEntry->GetMeetingDateAsstring());
strPrompt.Replace(_T("%2"),strExistingName);
strPrompt.Replace(_T("%3"),strExistingDescription);
strPrompt.Replace(_T("%4"),pReplacement->GetMeetingDateAsstring());
strPrompt.Replace(_T("%5"),getter(pReplacement));
strPrompt.Replace(_T("%6"),strReplacementDescription);

这保证对我有用。我使用 FormatMessage 语法是因为我的应用程序支持超过 50 种语言,而且我无法确定每种语言是否都需要相同顺序的数据。

如前所述,所有数据都是正确的,除了在某些情况下,它会在最终输出中将第一个日期重新用于第四个项目。 FormatString 有什么我需要了解的问题吗?

我的解决方法在会议时间内对我来说效果很好。

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