通用对话框函数(例如 GetOpenFileName、GetSaveFileName)在执行失败时,可以调用 CommDlgExtendedError 来获取详细的错误信息。这个宏返回一个 DWORD 类型的错误码,可以通过查阅文档来解释具体的错误原因。
以下是一个简单的示例,演示如何使用 CommDlgExtendedError 获取错误信息:
#include <Windows.h>
#include <Commdlg.h>
int main() {
OPENFILENAME ofn;
char szFileName[MAX_PATH] = "";
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFilter = "Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0";
ofn.lpstrFile = szFileName;
ofn.nMaxFile = sizeof(szFileName);
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST;
if (!GetOpenFileName(&ofn)) {
DWORD dwError = CommDlgExtendedError();
if (dwError != 0) {
// 处理错误,你可以根据错误码查阅文档获取详细信息
// 这里简单输出错误码
printf("Error code: 0x%X\n", dwError);
}
} else {
// 用户选择了一个文件,文件名存储在 szFileName 中
// 可以在这里处理选择的文件
}
return 0;
}
在这个示例中,如果 GetOpenFileName 函数返回失败,就调用 CommDlgExtendedError 获取错误码,然后可以根据错误码查阅文档获取详细的错误信息。
转载请注明出处:http://www.zyzy.cn/article/detail/24998/Win32 API/Commdlg.h/CommDlgExtendedError