如何在Windows上显示标准错误对话框,与操作系统语言无关,如下所示?
该进程无法访问该文件,因为该文件正由另一个进程使用。
(由记事本等使用)PowerISO(具有多语言界面)将始终以OS语言显示此消息(在我的情况下为荷兰语)。
例如,在C ++中使用ofstream
时:
bool write_file(const char* filename)
{
ofstream f(filename, ios::out | ios::binary);
if (!f.is_open()) return 0;
// (...)
return 1;
}
然后在一些Windows消息处理程序中:
if (!write_file("recipe.txt"))
{
// MessageBox("The process cannot ..." ??
}
答案 0 :(得分:4)
使用Win32 API FormatMessage()
函数将Win32错误代码转换为本地化的文本字符串。例如:
if (!write_file("recipe.txt"))
{
DWORD dwErrorCode = GetLastError();
LPTSTR lpMsg = NULL;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwErrorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsg, 0, NULL);
MessageBox(..., lpMsg, ...)
LocalFree(lpMsg);
}
答案 1 :(得分:2)
您可能需要自己将字符串翻译成其他语言。我认为Windows不会为您提供本地化标准对话框字符串的内置数据库。如果您愿意自己翻译,可以使用string table根据区域设置加载适当语言的字符串。