找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 10|回复: 0

VC6 CImage加载DLL

[复制链接]

32万

主题

0

回帖

96万

积分

超级版主

积分
964681
发表于 2025-3-15 06:55:55 | 显示全部楼层 |阅读模式
软件标签:  vc6.0   dll
vc6 cimage加载dll是在电脑中比较常用的一个文件,而对于很多不熟悉电脑的朋友来说,这款文件不能调用时就能麻烦,现在绿色资源网就为大家提供免费的问价即使用方法,有需要或者不懂的朋友可以来本站下载哦。
文件介绍
由于vc6启动速度快,产生的执行代码小,还有可爱的类向导,所以许多c++程序员还工作在vc6环境中。

但是我们想在vc6中用vs2005中的新功能怎么办呢?例如cimage类(有很强的图像处理功能).当然我们无法直接使用cimage了,经过我的思考和实践,以下方法是可行的:

用vs2005生成一个cimage2005动态库,然后用vc6调用就可以了。



文件使用方法
今天改一个vc6的程序,因为需要加载png和jpg图像,于是想到了cimage,但是vc6又不支持cimage类,郁闷了,网上看了一下,都是改这改那,改得头大。后来看到有一个人提出一个建议,用vs2008写一个dll让vc6去动态加载不就ok了。恩,这个注意不错,于是乎就这么做了吧

先建立一个工程,叫atlimage吧,在atlimage头文件中声明[自动向导其实帮我生成了]:

#ifdef atlimage_exports

#define atlimage_api __declspec(dllexport)

#else

#define atlimage_api __declspec(dllimport)

#endif

//需要添加一个extern c,否则导出函数名···额郁闷死你

extern "c" atlimage_api hbitmap loadatlimage(const char * pfilename);

然后在atlimage.cpp中实现:

// atlimage.cpp : defines the exported functions for the dll application.

//

#include "stdafx.h"

#include "atlimage.h"

#include

// this is an example of an exported function.哇靠,下面够简单吧

atlimage_api hbitmap loadatlimage(const char * pfilename)

{

cimage image;

hresult hr=image.load(pfilename);

if (succeeded(hr))

{

return image.detach();

}

else

{

return null;

}

}

ok,编译成一个release版的dll即可成功加载,在需要使用的地方如下声明:

typedef hbitmap (*loadimagefunc)(const char *pstrfilename);

m_funloadatlimage=null;

m_hmodule=::loadlibrary("atlimage.dll");

if(!m_hmodule)

{

afxmessagebox("缺少动态链接库:atlimage.dll");

m_hmodule=null;

}

m_funloadatlimage=(loadimagefunc)::getprocaddress(m_hmodule,"loadatlimage");

if (!m_funloadatlimage)

{

afxmessagebox("function miss : loadatlimage");

m_funloadatlimage=null;

}

hbitmap hbitmap=m_funloadatlimage(“test.png”);

freelibrary(m_hmodule); //最后还是释放一下资源


aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|ziyuan80.com

GMT+8, 2025-8-10 03:52 , Processed in 0.071239 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表