wtl代码(wtl下载)
admin 发布:2022-12-19 15:43 107
本篇文章给大家谈谈wtl代码,以及wtl下载对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、C++ WTL中怎么加载外部的图片显示到PICTRUE或者其他控件上,不是添加到资源..求教,在线等。。
- 2、在ATL开发的控件要使用WTL该怎么办
- 3、如何在WTL和MFC中使用duilib及如何静态使用duilib库
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站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 04-30底部弹出图片代码(点击弹出图片代码)[20240430更新]
- 04-30学生信息录入代码(程序录入学生信息)[20240430更新]
- 04-30c.net源代码下载(c#源码下载)[20240430更新]
- 04-30jQuery隐藏代码(jquery 隐藏控件)[20240430更新]
- 04-30js代码重用(可重用代码)[20240430更新]
- 04-30jquery自动滚动切换特效代码(html滚动效果代码)[20240430更新]
- 04-30经典图片切换代码下载(图片转代码软件下载)[20240430更新]
- 04-30代码日记(代码 笔记)[20240430更新]
- 04-30比较好的源代码网站(开源代码网站推荐)[20240430更新]
- 04-30firefox设为首页代码(firefox新标签页)[20240430更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接