Winapi 标准Windows错误对话框

Winapi 标准Windows错误对话框,winapi,Winapi,如何在Windows上显示独立于操作系统语言的标准错误对话框,如以下内容 进程无法访问该文件,因为其他进程正在使用该文件 (用于记事本等)PowerISO(具有多语言界面)将始终以操作系统语言(在我的情况下为荷兰语)显示此消息 例如,在C++中使用流的时: bool write_file(const char* filename) { ofstream f(filename, ios::out | ios::binary); if (!f.is_open()) return 0;

如何在Windows上显示独立于操作系统语言的标准错误对话框,如以下内容

进程无法访问该文件,因为其他进程正在使用该文件

(用于记事本等)PowerISO(具有多语言界面)将始终以操作系统语言(在我的情况下为荷兰语)显示此消息

例如,在C++中使用流的
时:

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 ..." ??
}

您可能需要自己将字符串翻译成其他语言。我认为Windows不会给你一个内置的本地化标准对话框字符串数据库。如果您愿意自己翻译,您可以使用a根据区域设置加载相应语言的字符串。

您可能需要自己将字符串翻译成其他语言。我认为Windows不会给你一个内置的本地化标准对话框字符串数据库。如果您愿意自己翻译,可以使用a根据区域设置加载相应语言的字符串。

使用Win32 API函数将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);
}
使用Win32 API函数将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);
}

@Midas我知道,但我不认为Windows有一个方便的查找表(或API函数)供您使用,即使是它显然自己使用的字符串。我不能肯定地说没有办法,但我从未听说过,在几分钟的搜索中找不到任何东西。我知道API中有一个本地化的查找函数-
FormatMessage()
@Midas,但我认为Windows没有一个方便的查找表(或API函数)供您使用,甚至对于它显然使用自身的字符串。我不能肯定地说没有办法,但我从来没有听说过,在几分钟的搜索中也找不到任何东西。API中有一个本地化的查找函数-
FormatMessage()
谢谢,一定有办法!!谢谢你,一定有东西!!