`
dato0123
  • 浏览: 914629 次
文章分类
社区版块
存档分类
最新评论

工作小结

 
阅读更多

1,Win2000下动态加载DLL时遇到一个奇怪的问题,

CStringsdkPath=_T("C://WINDOWS//system32");
::SetCurrentDirectory(sdkPath);
handle
=::LoadLibrary(_T("C://WINDOWS//system32//termb.dll"));
if(handle==NULL)
{
DWORDe
=GetLastError();
returnfalse;
}
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

这样一段代码居然加载dll不成功,报错127,将其改为从相对路径下进行加载又成功了,可是有的资料上说在Win2000下动态加载DLL时应该指明DLL的完整路径才行.

2,VS2005中开发的ActiveX控件在另一台没有开发环境的XP下无法运行,会报错由于应用程序配置不正确,应用程序未能启动,重新安装应用程序可能可以解决这个问题”.这是由于VS2005默认的MFC是使用动态的MFC程序库(Use MFC in a Shared DLL)来链接的,而动态的 MFC程序库是Muti-threaded DLL(/MD),由于WinXP对于文件的监控比较严格,因此导致部分使用多线程的DLL执行时发生错误.

解决方法: 修改编译时的属性设定,在Project ->Property ->configuration Properties ->C/C++ -> Code Generation ->Runtime Libary 修改成Multi-threaded(/MT),修改了Runtime之后,將MFC编译类型更改成静态程序库,Project ->Property ->Configuration Properties ->Use of MFC修改成Use MFC in a Static Library.

3,图片的融合以及文字的输出(使用CxImage库).

voidCScanDlg::ShowImage(CString&srcImgPath,CString&destImgPath)
{
//加载第一副图片
CxImage*imgSrc=newCxImage();
imgSrc
->Load(srcImgPath,CXIMAGE_FORMAT_JPG);
//加载背景图片
CxImage*imgDest=newCxImage();
imgDest
->Load(destImgPath,CXIMAGE_FORMAT_JPG);
//图片融合
CxImage*tmpImg=newCxImage();
tmpImg
->Copy(*imgDest);
tmpImg
->Mix(*imgSrc,CxImage::OpAnd,(long)(-350),(long)(-100),FALSE);
//输出文字
RGBQUADc=tmpImg->RGBtoRGBQUAD(BLACK_PEN);
c.rgbReserved
=255;
tmpImg
->DrawString(0,75,33,m_strName,c,"宋体",14,10,0,0,true);
//显示处理后的图片
if(m_bitmap)DeleteObject(m_bitmap);
m_bitmap
=tmpImg->MakeBitmap(m_picture.GetDC()->m_hDC);
m_picture.SetBitmap(m_bitmap);
deleteimgSrc;
deleteimgDest;
deletetmpImg;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics