1. 添加#include "initguid.h" 和#include "imaging.h"两个头文件,并且一定要注意顺序。#include "initguid.h"一定要在#include "imaging.h"之前。如果不包含"initguid.h"或在#include "imaging.h"之后,或者这两个头文件在应用代码的头文件之后,则编译时会出现错误,所以在使用此组件时一定要注意头文件的位置
TempApp.obj : error LNK2001: unresolved external symbol CLSID_ImagingFactory
TempApp.obj : error LNK2001: unresolved external symbol IID_IImagingFactory
2. 需要在编译连接中添加Imaging.lib静态库。
添加静态库
3. 程序代码如下:
HRESULT hr; // 返回结果
IImagingFactory * pImagingFactory = NULL; // Image 接口对象
IImage * pImage = NULL;
LPCTSTR szFileName = L"\\Storage Card\\Photo\\test.jpg";// 初始化COM环境
if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED)))
{
TRACE(L"COINIT_MULTITHREADED ERROR");
return ;
}// 得到Image 接口对象
hr = CoCreateInstance(CLSID_ImagingFactory,
NULL,
CLSCTX_INPROC_SERVER,
IID_IImagingFactory,
(void **)&pImagingFactory);if (FAILED(hr))
{
TRACE(L"IMAGE FACTORY CREATED ERROR");
goto finish;
}// 加载图像文件到IImage接口对象
hr = pImagingFactory->CreateImageFromFile(szFileName,&pImage);if (FAILED(hr))
{
TRACE(L"IMAGE FACTORY CREATED ERROR");
goto finish;
}// 开始绘制图像
// 得到设备环境
CDC *pDC = GetDC();// 定义绘制尺寸
RECT rect;
GetClientRect(&rect);// 绘制图片
pImage->Draw(pDC->m_hDC,&rect,NULL);// 释放设备环境
ReleaseDC(pDC);finish:
// 释放IImage接口对象
if (pImage)
{
pImage->Release();
}// 释放IImagingFactory接口对象
if (pImagingFactory)
{
pImagingFactory->Release();
}// 释放程序占用的COM资源
CoUninitialize();
4. 运行结果如下: