我正在编写 wxWidgets 应用程序,我在其中导入 .ICO 文件作为标题。我正在尝试使用 wxMemoryFSHandler 使这个图标(以及其他图标)可以作为文件访问。我正在使用以下代码来执行此操作:
wxFileSystem::AddHandler(new wxMemoryFSHandler);
wxMemoryFSHandler::AddFileWithMimeType(
"app_inactive.ico",
CsiWebAdmin_ico,
sizeof(CsiWebAdmin_ico),
"image/vnd.microsoft.icon");
不幸的是,如果我尝试从这个"file"加载一个图标,如下所示,它不起作用。当我逐步查看 MSW 源代码 (wx 2.8.10) 时,我可以看到加载程序从未尝试解析虚拟文件名。
wxIcon icon("memory:app_inactive.ico");
我也试过以下方法:
wxIcon icon(wxIconLocation("memory:app_inactive.ico"));
并遇到了相同的结果。
我意识到我可以使用资源来加载这些文件,但是当需要将我的应用程序移植到 GTK 时,我仍然会面临同样的困境。有什么明显的东西是我遗漏的吗?
最佳答案
您是否尝试设置应用程序图标?然后看wxIconBundle。我使用这段代码:
wxFileName frameIconFile = your_resources_folder;
frameIconFile.SetFullName("appicon.ico");
wxIconBundle frameIcons(frameIconFile.GetFullPath(),wxBITMAP_TYPE_ICO);
mainFrame->SetIcons(frameIcons);
图标包(它是一个包含多个图标的文件)在应用程序启动时加载。 为了构建图标包,我使用了 IcoFX (http://icofx.ro/)。
关于c++ - 有没有办法从内存文件处理程序加载图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4513763/