CImage与CString使用冲突问题

归来的云 2019-09-29 09:44:58
C++,MFC新手,想使用MFC开发一个截图ocx控件,查询资料选择CImage对本地图片进行截图(矩形图片,设定一个坐标,指定宽和高),并保存截取区域为图片,使用CImage类,引入#include <atlimage.h>头文件,但使用发现该头文件只有放在stdafx.h最前面,才对CImage有效,不然就出现未定义标识符"CImage"。但是把CImage放在头文件stdafx.h最前面,又出现“CString”不明确问题. 网上这个问题给出解决办法挺多。但试了下都不管用。请教如何解决两个类冲突问题,或者可以使用其它的类来完成该需求?
...全文
171 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
归来的云 2019-09-29
  • 打赏
  • 举报
回复
问题已经解决:
在引用的CPP文件引入头文件:
#include <atlimage.h>

定义是加上:ALT作用域。如下:
ATL::CImage image;
归来的云 2019-09-29
  • 打赏
  • 举报
回复
怪了,难道CImage不能在ActiveX控件中使用.不加就无法识别。加了CString编程不明确问题.
女神打Boss 2019-09-29
  • 打赏
  • 举报
回复
引用 3 楼 女神打Boss 的回复:
应该不是头文件的问题吧,CImage在vs2015不用加头文件

MFC ActiveX控件项目就不懂了的确不支持
女神打Boss 2019-09-29
  • 打赏
  • 举报
回复
应该不是头文件的问题吧,CImage在vs2015不用加头文件
归来的云 2019-09-29
  • 打赏
  • 举报
回复
我使用的是VS2015,我把头文件atlimage.h放在当前CPP文件中,提示未定义标识符"CImage",好像没有效果.必须放在stdafx.h文件中,而且还必须放在stdafx.h文件的最前面,否则CImage就无法识别,如下:
#pragma once


// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件


#include <atlimage.h>
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料
#endif
schlafenhamster 2019-09-29
  • 打赏
  • 举报
回复
CImage类是ATL和MFC共用的一个类,其头文件为atlimage.h,主要用于图片文件的打开,显示与保存。这里需要注意的是,在VS2010和VS2012的MFC编程中,不需要将头文件包含进来。MFC中要使用CImage类,必须先将头文件包含进来,可以包含在当前代码的CPP文件中,也可以包含在所属类的头文件中,不过最好还是包含在工程的stdafx.h文件中。CImage总共有39个成员函数。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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