- 軟件(jiàn)大小:11KB
- 軟(ruǎn)件語言:中文
- 軟件類型:國產軟(ruǎn)件
- 軟件(jiàn)類別:免費軟件 / DLL文(wén)件
- 更(gèng)新時間:2019-09-03 18:05
- 運行環境:WinAll, WinXP, Win7, Win8, Win10
- 軟件(jiàn)等級:
- 軟件廠商:
- 官方網(wǎng)站(zhàn):http://www.itseasyglobal.com
5.22M/中文(wén)/10.0
745KB/中文/10.0
193KB/中文/10.0
12KB/中文/10.0
0KB/中文/10.0
VC6 CImage加載DLL是在電腦中比較(jiào)常用的一個(gè)文件(jiàn),而對於(yú)很多不熟悉電(diàn)腦的(de)朋(péng)友來說(shuō),這款文件不能調用時(shí)就能麻煩,現在(zài)綠色資源(yuán)網就為大家提供免費的問價(jià)即(jí)使用方法,有需要或(huò)者(zhě)不懂(dǒng)的朋(péng)友(yǒu)可以來本站下載哦。
由於VC6啟動速度快,產生(shēng)的執(zhí)行代(dài)碼小(xiǎo),還有可愛的類(lèi)向導,所以許(xǔ)多(duō)C++程序員還工(gōng)作(zuò)在VC6環境中。
但是(shì)我們想(xiǎng)在VC6中用VS2005中的(de)新(xīn)功(gōng)能怎麽辦呢?例如CImage類(有很強的圖像處理功(gōng)能).當然我們無法直(zhí)接使用CImage了,經過我的思考和(hé)實踐,以下方法是可行的:
用(yòng)VS2005生(shēng)成(chéng)一(yī)個CImage2005動態庫,然後(hòu)用VC6調用就可以了。
今天改(gǎi)一(yī)個VC6的程序,因為(wéi)需要(yào)加載png和jpg圖像(xiàng),於是想到了(le)CImage,但是VC6又不支(zhī)持CImage類,鬱悶了,網上看了一下,都是改這改那,改(gǎi)得(dé)頭大(dà)。後來看到(dào)有一個人提出(chū)一個(gè)建議,用VS2008寫一個DLL讓VC6去(qù)動態加載不就(jiù)OK了。恩,這(zhè)個(gè)注(zhù)意不錯(cuò),於是乎就這(zhè)麽做了吧
先建立一個工程,叫AtlImage吧,在AtlImage頭文件中聲明[自動向(xiàng)導其實幫我生(shēng)成了]:
#ifdef ATLIMAGE_EXPORTS
#define ATLIMAGE_API __declspec(dllexport)
#else
#define ATLIMAGE_API __declspec(dllimport)
#endif
//需要添加一個(gè)extern C,否則(zé)導出函數名···額鬱悶(mèn)死(sǐ)你(nǐ)
extern "C" ATLIMAGE_API HBITMAP LoadAtlImage(const char * pFileName);
然(rán)後在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.哇(wa)靠(kào),下麵(miàn)夠簡單吧
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版的(de)DLL即(jí)可成功(gōng)加載,在需要(yào)使(shǐ)用的地方如下聲明:
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); //最後還(hái)是釋(shì)放一下資源
請描(miáo)述(shù)您所遇到(dào)的錯誤(wù),我(wǒ)們將盡快予以修(xiū)正,謝謝!
*必填項,請輸入內容(róng)