【发布时间】:2020-06-22 17:51:50
【问题描述】:
我正在尝试使用 LoadIcon() 函数为我的 3D 游戏的应用程序窗口使用自定义图标(有关 3D 游戏的详细信息,请参阅 My first question on this site)。我像在代码论坛网站上看到的那样初始化了实例句柄(与此类似,我什至没有注册它),它调用GetModuleHandle() 函数并将其参数设置为NULL。然后我使用了hIcon 和hIconSm 的图像文件名,它们与可执行文件位于同一文件夹中(我最初将文件与源代码放在同一文件夹中,但这似乎不起作用)。这是我的WNDCLASSEX 对象初始化代码(其中也有HINSTANCE 初始化):
HINSTANCE hinstance;
hinstance = GetModuleHandle(NULL);
WNDCLASSEX wc;
wc.cbClsExtra = NULL;
wc.cbSize = sizeof(WNDCLASSEX);
wc.cbWndExtra = NULL;
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(hinstance, "ArtificialIconLg.png");
wc.hIconSm = LoadIcon(hinstance, "ArtificialIcon.ico");
wc.hInstance = NULL;
wc.lpszClassName = "MyWindowClass";
wc.lpszMenuName = "";
wc.style = NULL;
wc.lpfnWndProc = &WndProc;
我还将包括我的CreateWindowEx() 函数:
m_hwnd = ::CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "MyWindowClass", "Artificial", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 1024, 768, NULL, NULL, NULL, window);
【问题讨论】:
-
尝试仅加载图标、检查返回值并检查错误。如果它们没有加载,它们将不会显示。你现在不知道代码的方式。
-
开始检查返回值是否有错误非常重要
-
哦,我该如何检查?我对编程有点陌生。
-
documentation 通常会解释函数如何失败以及需要检查的内容。
-
尝试使用
LoadImage(nullptr, "ArtificialIconLg.png", IMAGE_ICON, 0, 0, LR_LOADFROMFILE)。