如何在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
相关产品推荐
相关产品推荐

