Windows 标题栏图标

问题描述 投票:0回答:3

我在为应用程序设置标题栏图标时遇到问题。

我已经尝试弄清楚这个问题,谷歌搜索出了什么问题,已经两天了,但没有成功。

主窗口.cpp:

#include "../../res/Icons.h"

void MainWindow::Create(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
    const wchar_t CLASS_NAME[]  = L"MainWindow";
    WNDCLASSEX wc = {};
    wc.cbSize = sizeof(wc);
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = CLASS_NAME;
    wc.hIcon = LoadIcon(NULL,IDI_MYICON);
    wc.hIconSm = LoadIcon(NULL,IDI_MYICON);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = CreateSolidBrush(RGB(255,255,255));
    RegisterClassEx(&wc);

    HWND hwnd = CreateWindowEx(0, CLASS_NAME, wstring(Language::wText[1].begin(),Language::wText[1].end()).c_str(), WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL);
    ShowWindow(hwnd, nCmdShow);

    MSG msg = {};
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}

图标.h

#define IDI_MYICON 1000

图标.rc

IDI_MYICON ICON "App.ico"

它编译得很好,图标显示在任务栏中以及可执行文件中,但不显示在标题栏中。该图标是一个标准的 ico,尺寸为 32x32。我什至尝试过使用

LoadImage()
,但结果相同。

c++ winapi
3个回答
1
投票

您将

NULL
传递给
LoadIcon
,您应该传递应用程序的
HINSTANCE
以从您自己的资源加载。


0
投票

资源头文件需要和.rc文件(即icon.rc中的

#include "icon. h"
)配合使用,否则会找不到具体的图标文件(.rc文件中指定了路径)。此外,如果“icon.h”不以空行结尾,您将收到“发现意外的文件结尾”错误。


0
投票

wndClass.hIcon = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON5), IMAGE_ICON, 16, 16, 0);//程序图标

© www.soinside.com 2019 - 2024. All rights reserved.