为什么调用 GetOpenFileName 时出现 libpng 的提示

0

以下是来自 msdn(链接 )的关于调用 GetOpenFileName 函数的一段代码:

#include <Windows.h>

int main()
{
    OPENFILENAME ofn;       // common dialog box structure
    TCHAR szFile[260];       // buffer for file name
    HWND hwnd = NULL;              // owner window
    HANDLE hf;              // file handle

    // Initialize OPENFILENAME
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFile = szFile;
    // Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
    // use the contents of szFile to initialize itself.
    ofn.lpstrFile[0] = L'\0';
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = L"All\0*.*\0Text\0*.TXT\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

    // Display the Open dialog box. 

    if (GetOpenFileName(&ofn) == TRUE)
        hf = CreateFile(ofn.lpstrFile,
            GENERIC_READ,
            0,
            (LPSECURITY_ATTRIBUTES)NULL,
            OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL,
            (HANDLE)NULL);

    return 0;
}

在我的 VS2019 上面运行这段代码,在 GetOpenFileName 函数被调用的同时,cmd 窗口中会显示如下提示文字:

libpng warning: iCCP: cHRM chunk does not match sRGB

但是 msdn 文档中似乎没有说明会出现这样的提示,请问是为什么?

最后附上一张图:https://sm.ms/image/DFzZpBR3tjlu4gE

补充:

刚刚发现……貌似凡是调用 windows 预设对话框之后都会有这样的提示内容,

比如下面这段显示提示框的代码也一样会在提示框显示之后出现相同的 libpng warning。

#include <Windows.h>

int main()
{
	MessageBox(GetConsoleWindow(), L"test", NULL, MB_OK);
	while(true);

	return 0;
}

这样看来就可能是我的电脑有问题了吧,可能是什么原因导致的呢?

ava
huidong

2021-10-29

0

应该是的确读了一个 png 文件。你可以用监视软件看看究竟读了哪个 png 导致的这个问题,或许就有线索了。

ava
慢羊羊

2021-10-30

尝试监视了一下,但是没有看到 png 文件被调用(我使用 directorymonitor 监视了 C、D、E 盘)。问题也不大,我就不打算再折腾它了。 - huidong 2021-10-30
0

从网络的搜索结果来看,卸载qq输入法似乎能解决这个问题,你可以试试。

ava
勿忘我

2021-11-6

我正好是用的 QQ 输入法😂,用习惯了,不太想换……可以发一下你搜索到的链接吗? - huidong 2021-11-6
@huidong 换了吧,手心输入法值得你拥有 https://appzip.cn/palm-input/w  - 慢羊羊 2021-11-6