VS2015中MFC发布release版本后在独立运行exe时图片无法显示

www_indows 2017-06-06 04:11:00
如图



图片是通过调用API加载实现的
...全文
705 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jadechen 2017-09-09
  • 打赏
  • 举报
回复
LoadImage后返回的hBmpBG应该判断下 如果为NULL就是图片加载失败了,路径不正确 你用的相对路径,应该用绝对路径 CString strExePath;   CString strFileName;   GetModuleFileName(NULL,strFileName.GetBufferSetLength(MAX_PATH+1),MAX_PATH+1);   int nPos = strFileName.ReverseFind(_T('\\'));   strExePath = strFileName.Left(nPos+1);   strExePath 是你程序的路径,再加上你图片的路径就好了
draculamx 2017-09-09
  • 打赏
  • 举报
回复
把资源都放在RES文件吧,使用的时候用LoadResource,这样release以后方便点,而且资源都在EXE中,一个exe文件搞定
赵4老师 2017-09-08
  • 打赏
  • 举报
回复
请判断每个函数调用的返回值。
赵4老师 2017-09-08
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
001mn 2017-09-07
  • 打赏
  • 举报
回复
我的调用本地xml文件,也是不可以,应该是文件没有导入吧?为什么呢?
worldy 2017-06-07
  • 打赏
  • 举报
回复
InitBackGround在哪调用? 这个调用必须在OnPaint'或者在OnEarseBKGround里调用,另外,hBmpBG一直LoadImage不是一个好的主意,最好是作为窗口类的成员函数,加载一次就可以
zgl7903 2017-06-06
  • 打赏
  • 举报
回复
另外 LoadImage 的资源 需要 DeleteObject 释放, 如果不是动态图片的话, 可以把位图句柄放在类中, 这样只需要加载一次就好, 效率比较高
schlafenhamster 2017-06-06
  • 打赏
  • 举报
回复
bmp 加载 失败, 不在同一个目录
zgl7903 2017-06-06
  • 打赏
  • 举报
回复

#include <shlwapi.h>
#pragma comment(lib, "shlwapi.lib")

{
  TCHAR szOut[MAX_PATH + 1];
  GetModuleFileName(NULL, szOut, MAX_PATH);
  PathRemoveFileSpec(szOut);
  PathAppend(szOut, _T("myPathA\\myPathB\\a.bmp"));
  TRACE(_T("full path = %s\n"), szOut);
}

www_indows 2017-06-06
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
根据GetModuleFileName 获得的文件名, 构造出绝对路径
通过VS2015编译运行后,是可以显示,没问题的 但单独运行release里生成的exe文件 就变黑了
www_indows 2017-06-06
  • 打赏
  • 举报
回复
根据网上的MFC发步可独立执行的release版本操作。已经将项目属性 MFC的使用改为了 在静态库中使用MFC 运行库也改为了 多线程(/MT)
zgl7903 2017-06-06
  • 打赏
  • 举报
回复
根据GetModuleFileName 获得的文件名, 构造出绝对路径
Radmin自动登陆器 v3.0 - By: ybmj@vip.163.com 20150615 By: ybmj@vip.163.com , http://dep.yibinu.cn/wgzxnew/ 1、程序功能和使用环境介绍 2、程序操作方法介绍 3、登录信息文件RadminM.txt介绍 4、登录信息文件RadminM.txt的转换和编制 5、v3.0版新增解锁远程桌面功能 6、相关配置和多种语言支持介绍 7、免责申明 1、程序功能和使用环境介绍 (1)、程序功能 为了安全高效地使用Radmin Viewer来自动登录和管理多台服务器,故编制RadminM (Radmin Connection Manager,Radmin自动登录器)。 v3.0版的可执行文件是RadminM.exe,一台电脑只能运行一个实例,再次运行只是将已运行的实例调到前台。v3.0版之前的老版本的可执行文件是RadminM2.exe。 新版的功能已经比较完善,基本上可以代替Radmin Viewer 3.5进行管理(除Intel AMT功能外),另外还增加了一些实用功能,支持Windows Xp、Vista、Win7、Win8、2003、2000、9x及相应Windows Server版等操作系统。 (2)、程序使用环境要求 使用前请将Radmin Viewer 3.5的Radmin.exe文件直接拷贝到该目录,其它Radmin Viewer 3.x版本也可以,文版、英文版均可; 请设置防火墙允许Radmin.exe和RadminM.exe(仅扫描功能用)访问网络; 若要用到聊天、语音聊天、传送信息等连接模式,必须将相应的8个dll文件也拷贝到该目录:ChatLPCx.dll、raudiox.dll、rchatx.dll、unicows.dll、vcintcx.dll、vcintsx.dll、voicex.dll、WinLpcDl.dll。 (3)、Radmin Server使用权限设置(新版本可选) 注意:在v1.5及以前的老版本,Radmin Server被控端必须将“使用权限...”(Permissions)设置为“Windows NT 安全性”(Security),如果设置为“Radmin安全性”(Security)将不能实现自动登录功能。在新版本,这两种安全性模式下,都可以实现自动登录功能。 (4)、开发环境 v1.5及以前的老版本用AutoIt语言开发,AutoIt是解释性语言,功能和稳定性有限,并且一些防病毒软件会报警。 为了在功能和稳定性方面进一步提高和改进,v2.0版使用VC++ Unicode(MFC)编程,程序在编译已经集成了VC运行库,可独立运行。 由于MFC越益臃肿笨重,为了提高稳定性和效率,v3.0版使用WTL VC++ Unicode编程,程序短小精悍、可独立运行。WTL是Windows Template Library,可参见 http://wtl.sourceforge.net/ 。 2、程序操作方法介绍 (1)、程序的鼠标操作 * 双击某条记录以默认模式自动连接(等待6秒);若该记录包含私有代理将自动进行代理连接(代理登录和目标登录各等待6秒); * 左上角的选择框或主菜单都可以选择默认连接模式; * 先右击某条记录(或F9)填为强制代理(支持域名),并选强制代理选项,便可对另一条记录强制进行代理连接(将忽略私有代理); * 支持鼠标滚轮; * 主菜单和右键菜单均可完成本程序的常规操作;记录窗格的右键菜单或单击工具栏的相应按钮可直接选择进行指定模式的连接(将忽略默认连接模式); * 主菜单的“配置”菜单可以选择程序的各项相关配置; * 工具栏各个按钮的功能均有提示; * 单击工具栏上的“显示隐藏树状目录”按钮可以显示隐藏目录树窗格,目录树窗格的右键菜单可完成目录树的一些常规操作; * 单击工具栏上的“选择切换图标查看模式”按钮可以切换或选择记录窗格的图标查看模式; * 记录窗格和目录树窗格都支持鼠标拖放功能,强烈建议用户使用该功能前备份RadminM.txt,以免损坏或丢失数据;直接鼠标拖放为移动,Ctrl+鼠标拖放为复制。拖放状态栏有提示信息; * 程序启动,记录自动按记录名称升序排列;在记录窗格单击列表框某列表头,可以按该列进行记录排序,再次单击可以反向排序。 (2)、程序的常用快捷键 * Enter :以默认模式连接记录; * Insert :新建记录; * Ctrl+e :编辑记录; * Ctrl+c
创建一个新的XML文档,分析修改现存的XML文档,所有的这些都可以从一个利用MFC或STL字符串所实现的一个简单类的方法得到。关于CMarkup,你可以运行Zip文件右边的例子,如果你愿意,你可以通过看源码,几分钟把它加入到你自己的应用。 特征 Cmarkup是依据EDOM的,这是这个简单XML分析的关键。EDOM是操作XML元素、属性和数据的简明方法集。当你不需要复杂的XML特性,它避免你读大量的DOM和SAX文档。 如果你希望使用微软的MSXML,CMarkup工程CmarkupMSXML类全面的演示了通过EDOM来使用MSXML,并且它是以C++ COM语法开始。 下载包(看上面zip文件的链接)包含了测试对话框工程的源码、Cmarkup类的所有测试和示例、以及编译选项。关于用在商业用途的详细说明请看文章底部的在Licensing的注意事项。 下面列出了CMarkup的特征: 独立:不需要任何外部的XML组件。 小:编译到你的工程只是很小的一个类,并且对于文档只维持了一个字符串,以及一个总计小于字符串内存大小的索引数组。 快:分析器在相当快的建立索引数组。 简单:EDOM方法使创建、导航和修改XML无比的简单。 MSXML:CMarkupMSXML类用EDOM方法包装了微软的XML服务。MSXML编译选项用来演示这个类。 UNICODE(统一字符编码标准):对于WindowsNT和WindowsCE平台能够被编译成UNICODE,在WindowsNT UNICODE下,XML文档是流到UTF-8文件,但是内部用宽字符。 UTF-8:对于UTF-8文件,这接受和返回UTF-8字符串(确保_MBCS没有被定义) MBCS:对于双字节数据(定义_MBCS),它不与UTF-8兼容. STL:CMarkupSTL类完全没有使用MFC,它的演示要使用STL编译选项。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧