当前位置:首页 > 代码 > 正文

wtl代码(wtl下载)

admin 发布:2022-12-19 15:43 107


本篇文章给大家谈谈wtl代码,以及wtl下载对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

C++ WTL中怎么加载外部的图片显示到PICTRUE或者其他控件上,不是添加到资源..求教,在线等。。

我这里有个源代码例子,可以用GDI+的接口,将指定路径的图片,加载到内存中。

这里有个WTL GDI+的代码,你试试,指定好路径及文件类型。

ATLINLINE HBITMAP AtlLoadGdiplusImage(ATL::_U_STRINGorID bitmap, ATL::_U_STRINGorID type = (UINT) 0)

{

   USES_CONVERSION;

   static bool s_bInitied = false;

   if( !s_bInitied ) {

      s_bInitied = true;

      Gdiplus::GdiplusStartupInput gsi;

      Gdiplus::GdiplusStartupOutput gso;

      ULONG uToken = 0;

      Gdiplus::GdiplusStartup(uToken, gsi, gso);

   }

   Gdiplus::Bitmap* pBitmap = NULL;

   if( HIWORD(bitmap.m_lpstr) != NULL ) {

      // Load from filename

      pBitmap = new Gdiplus::Bitmap(T2CW(bitmap.m_lpstr)); 

   }

   else if( type.m_lpstr != NULL  type.m_lpstr != RT_BITMAP ) {

      // Loading PNG, JPG resources etc

      WTL::CResource res;

      if( !res.Load(type, bitmap) ) return NULL;

      DWORD dwSize = res.GetSize();

      HANDLE hMemory = ::GlobalAlloc(GMEM_MOVEABLE, dwSize);

      if( hMemory == NULL ) return NULL;

      ::memcpy(::GlobalLock(hMemory), res.Lock(), dwSize);

      ::GlobalUnlock(hMemory);

      IStream* pStream = NULL; 

      if( FAILED( ::CreateStreamOnHGlobal(hMemory, TRUE, pStream) ) ) {

         ::GlobalFree(hMemory);

         return FALSE;

      }

      pBitmap = new Gdiplus::Bitmap(pStream);

      pStream-Release();

   }

   else {

      // This only loads BMP resources

      pBitmap = new Gdiplus::Bitmap(_Module.GetResourceInstance(), (LPCWSTR) (UINT) bitmap.m_lpstr);

   }

   if( pBitmap == NULL ) return NULL;

   HBITMAP hBitmap = NULL;

   pBitmap-GetHBITMAP(NULL, hBitmap); 

   delete pBitmap;

   return hBitmap;

}

在ATL开发的控件要使用WTL该怎么办

首先WTL里面好像没有CListCtrl,有一个CListViewCtrl。每一行应该有一个标识号,在鼠标点击消息响应函数里面:先获取鼠标点击位置的标识号GetSelectionMark(),然后用Switch选择,如下程序。你可以参考其实现的思想,其中m_listView是一个CListViewCtrl的对象,CListViewCtrl控件有一个鼠标点击消息NOTIFY_HANDLER(IDC_LIST1, NM_DBLCLK, OnNmDblclkList1),然后在OnNmDblclkList1里面添加如下代码

int cursel=m_listview.GetSelectionMark(); //获取双击节点的标识号

if(cursel==-1)

return 0;

switch(cursel)

{

case 0:

{

MessageBox(_T("Hello1"));

m_listview.SetSelectionMark(-1);

break;

}

case 1:

{

MessageBox(_T("Hello2"));

m_listview.SetSelectionMark(-1);

break;

}

case 2:

{

MessageBox(_T("Hello3"));

m_listview.SetSelectionMark(-1);

break;

}

case 3:

{

MessageBox(_T("Hello4"));

m_listview.SetSelectionMark(-1);

break;

}

如何在WTL和MFC中使用duilib及如何静态使用duilib库

不可以

在使用DuiLib的时候,一种是使用他的DLL库(或者lib库)的方式,一种是直接使用源代码。我偏向于使用后者,这样在发布出去的程序中,就会尽量少一些库文件的烦恼。我们下载的DuiLib的源码中,包括测试程序都是使用dll的形式。

使用源代码时,直接把下载的DuiLib里的源码文件添加到自己的工程中:

将红框里的文件夹和文件导入到自己的工程中,如下:

但在编译的时候,会有几个错误:

(1) stb_image.c XUnzio.cpp这两个文件的预编译头问题。取消使用预编译文件即可。

(2) error C2371: “IDispatchEx”: 重定义 问题。

UIFlash.h文件中

#import "..\Utils/Flash11.tlb" raw_interfaces_only, named_guids

改为:

#import "..\Utils/Flash11.tlb" raw_interfaces_only, named_guids, rename("IDispatchEx","IMyDispatchEx")

wtl代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于wtl下载、wtl代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/10911.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载