CommDlgExtendedError 不是一个函数,而是一个宏,用于获取通用对话框函数的扩展错误代码。这个宏位于 Commdlg.h 头文件中。

通用对话框函数(例如 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