首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC对话框无法正确加载IDR_MAINFRAME

MFC对话框无法正确加载IDR_MAINFRAME
EN

Stack Overflow用户
提问于 2021-11-17 16:25:04
回答 1查看 124关注 0票数 0

我的项目(基于对话框)以前配置为32位。现在,我将其混淆为64位应用程序。但是应用程序在主对话框和about对话框中都丢失了。

调试时,我可以在主对话框的构造函数中这一行之后看到m_hIcon为NULL:

代码语言:javascript
复制
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

我试图调用GetLastError,但它返回0。我甚至试过:

代码语言:javascript
复制
m_hIcon = LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_MAINFRAME));
auto lastError = GetLastError();

不幸的是,lastError也是0。

应用程序使用WinSparkle,VC2019的输出窗口显示:

Microsoft C++异常:win闪烁::win32Exception位于内存位置0x000000800836E408。WinSparkle:可执行文件没有必需的VERSIONINFO资源:指定的映像文件不包含资源部分。在XXXX.exe中的0x00007F9F0204F99抛出的异常: Microsoft C++异常:win闪烁::win32Exception位于内存位置0x00000000800836DF18。WinSparkle:可执行文件没有必需的VERSIONINFO资源:指定的映像文件不包含资源部分。

所以我的问题是:

  1. ,我能做些什么来修复丢失的应用图标?
  2. 为什么GetLastError返回0?我如何才能找到潜在的情况呢?
EN

回答 1

Stack Overflow用户

发布于 2021-11-18 04:03:53

如果有人有同样的问题,我的应用程序试图在m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);之前修改PEB本身,这会导致LoadIcon无法工作。它适用于win32配置,但不适用于x64配置。

LoadIcon调用后移动PEB修改逻辑后,主对话框现在有图标,托盘图标也可以显示在windows任务栏上。但是,AboutDialog上的图标仍然没有正确显示,因为它每次都是动态创建的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70008085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档