You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual Studio的C++控制台程序中修改窗口标题栏左上角图标?

修改控制台窗口左上角图标(Visual Studio + C++)

要修改控制台窗口标题栏的左上角图标,你可以借助Win32 API直接操作控制台窗口本身——因为控制台本质是标准Windows窗口,以下是具体实现步骤:

核心逻辑

  • 获取控制台窗口的句柄
  • 加载目标图标(系统内置图标或自定义.ico文件)
  • 向窗口发送消息设置图标

代码实现

确保项目包含windows.h头文件,然后在代码中加入以下逻辑:

#include <windows.h>
#include <iostream>

int main() {
    // 设置控制台标题(你已在使用的代码)
    SetConsoleTitle(L"My Text Game");

    // 1. 获取控制台窗口句柄
    HWND consoleHwnd = GetConsoleWindow();
    if (consoleHwnd == nullptr) {
        std::cerr << "Failed to get console window handle!" << std::endl;
        return 1;
    }

    // 2. 加载图标:分两种场景选择

    // 场景A:加载系统内置图标(示例:记事本图标)
    // HICON hIcon = LoadIcon(nullptr, IDI_NOTEPAD);

    // 场景B:加载自定义.ico文件(替换为你的图标路径)
    HICON hIcon = static_cast<HICON>(LoadImage(
        nullptr,
        L"game_icon.ico",  // 图标文件路径,支持绝对/相对路径
        IMAGE_ICON,
        0, 0,  // 0表示使用图标自身尺寸
        LR_LOADFROMFILE | LR_DEFAULTSIZE | LR_SHARED
    ));

    if (hIcon == nullptr) {
        std::cerr << "Failed to load icon! Error code: " << GetLastError() << std::endl;
        return 1;
    }

    // 3. 设置窗口图标:同时设置大图标(任务栏显示)和小图标(标题栏显示)
    SendMessage(consoleHwnd, WM_SETICON, ICON_BIG, reinterpret_cast<LPARAM>(hIcon));
    SendMessage(consoleHwnd, WM_SETICON, ICON_SMALL, reinterpret_cast<LPARAM>(hIcon));

    // 你的游戏逻辑代码
    std::cout << "Hello, Text Game!" << std::endl;
    system("pause");

    // 释放自定义图标资源
    DestroyIcon(hIcon);

    return 0;
}

注意事项

  • 自定义.ico文件建议包含16x16(标题栏小图标)和32x32(任务栏大图标)两种尺寸,确保不同场景下显示正常。
  • 若将图标添加到项目资源文件中,可改用LoadIcon(GetModuleHandle(nullptr), MAKEINTRESOURCE(ICON_ID))加载,避免路径依赖问题。
  • 编译时确保项目类型为Windows控制台应用,而非GUI应用,否则GetConsoleWindow()可能无法获取有效句柄。

内容的提问来源于stack exchange,提问作者AirMarshal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 21:13:21