dll中的函数是这样的。函数在vc应用程序中没有问题。只是做成dll在vb中调用1、2、3、出内存不能写错误。
我想在vb中得到一个图片的略缩图。
int THUMBDLL_SaveThumbImage2()
{
//WCHAR * pcSourceFilename=L"c://Windows2000.jpg";
Bitmap image(L"c://Windows2000.jpg");//SysAllocString((BSTR)str);
MessageBox("ok"); //这个没有问题。
CLSID pngClsid;
int r=GetEncoderClsid(L"image/png", &pngClsid);
image.GetThumbnailImage(60,60,NULL,NULL); //1、这个出错
image.Save(L"c://Mosaic22.png", &pngClsid, NULL); //2、这个出错
Image* pThumbnail = image.GetThumbnailImage(40, 40, NULL, NULL); //3、这个出错
pThumbnail->Save(L"c://Mosaic44.png", &pngClsid, NULL);
delete pThumbnail; return THUMBDLL_E_ERROR_NO;
}还有可不可以在vb中直接使用gdi++,这样就不用做dll在vb中调用了。
解决方案 »
- 如何将整形数组传递给activex控件
- 如何用vc编程实现连接指定的无线路由
- MFC 新建窗口
- VC中怎么注册控件.为什么我的Gallery文件夹中是空的?
- 在模态对话框调用另一个对话框里函数问题
- 关于服务器用同一个端口发送和接受的问题
- 怎么回事呀?求救中 !
- 视频采集的问题!会和不会的都来看一下。
- 请教关于ATL做ComDLL时传递二维数组的问题(一维传递没问题用VARIANT+SafeArray)
- 手头有dll及函数声名,用implib.exe生成.lib后是不是把他放到lib文件夹后就行
- 怎么强制结束某个线程??????????????????????????????????????????/再线等,马上解决,立刻给分.......................
- l = (l << 4) + c - 'A' + 10 和 l = (l << 4) + c - '0'的提问
但是现在图片生成了,OK1、OK2、OK3都出现,最后出内存能读的错误了。int THUMBDLL_SaveThumbImage2()
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); //char * pcSourceFilename="c://Windows2000.jpg";
//Bitmap image(SysAllocString((BSTR)pcSourceFilename));//SysAllocString((BSTR)str);
Bitmap image(L"c://Windows2000.jpg");//SysAllocString((BSTR)str);
CLSID pngClsid;
int r=GetEncoderClsid(L"image/png", &pngClsid);
image.GetThumbnailImage(60,60,NULL,NULL);
image.Save(L"c://Mosaic22.png", &pngClsid, NULL);
Image* pThumbnail = image.GetThumbnailImage(40, 40, NULL, NULL);
pThumbnail->Save(L"c://Mosaic44.png", &pngClsid, NULL);
MessageBox(NULL,"OK1",NULL,NULL);
delete pThumbnail;
MessageBox(NULL,"OK2",NULL,NULL);
GdiplusShutdown(gdiplusToken);
MessageBox(NULL,"OK3",NULL,NULL);
return THUMBDLL_E_ERROR_NO;
}VB中是这样调用的。
Option Explicit
Private Declare Function THUMBDLL_SaveThumbImage2 Lib "MakeThumbnailDll.dll" () As LongPrivate Sub Command1_Click()
Dim a As Long
a = THUMBDLL_SaveThumbImage2()
End Sub