gpt4 book ai didi

c++ - 如何在 SDL2/C++/Visual Studio 2012 Express 程序中设置窗口标题栏图标和 alt-tab 图标?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:43 30 4
gpt4 key购买 nike

我已经在我的项目中添加了一个 .rc 文件,其中包含以下内容:

IDI_MAIN_ICON          ICON          "..\\..\\icon_artwork\\windows_icons\\project.ico"  

.ico 文件包含 16x16、32x32、48x48 和 256x256 分辨率的图标。

我在任务栏和资源管理器中看到图标(所以毫无疑问 .ico 已成功嵌入到 .exe 中),但我在应用程序自己的标题栏中看到默认的 Windows 7 应用程序图标,并且在 alt-标签。

有没有办法让操作系统在所有情况下都能自己看到嵌入的图标,或者我是否需要为此编写一些应用程序代码?我注意到有一个 SDL2 函数

void SDL_SetWindowIcon(SDL_Window*  window, SDL_Surface* icon)  

但这需要一个 SDL 表面,而不是来自可执行文件的嵌入式图标资源。

感谢收到的任何想法,
托尼

最佳答案

就目前而言,没有。 SDL 出于某种原因吃掉了实际应用程序窗口的图标。但是,您可以使用 WINDOWS 特定代码来解决此问题。请记住,这不是可移植的。

#if defined(_WIN32) && defined(GCL_HICON)
void setWindowsIcon(SDL_Window *sdlWindow) {
HINSTANCE handle = ::GetModuleHandle(nullptr);
HICON icon = ::LoadIcon(handle, "IDI_MAIN_ICON");
if(icon != nullptr){
SDL_SysWMinfo wminfo;
SDL_VERSION(&wminfo.version);
if(SDL_GetWindowWMInfo(sdlWindow,&wminfo) == 1){
HWND hwnd = wminfo.info.win.window;
::SetClassLong(hwnd, GCL_HICON, reinterpret_cast<LONG>(icon));
}
}
}
#endif

关于c++ - 如何在 SDL2/C++/Visual Studio 2012 Express 程序中设置窗口标题栏图标和 alt-tab 图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19311609/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com