- 浏览: 59604 次
- 性别:
- 来自: 株洲
文章分类
最新评论
-
yuvista:
礼顶膜拜,我心中的大神!一个在生活中迷失的程序员向您致敬!
一个程序员的奋斗历程(再发经典,这是我见过最牛的程序员了
的CListCtrl风格设置为ICON风格
CImageList m_ImageList;
CListCtrl m_list;
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list.SetIconSpacing(CSize(140, 130)); //set pictures spacing
//wide of picture is 120,height is 90
m_ImageList.Create(120,90,ILC_COLORDDB|ILC_COLOR32,1,1);
m_list.SetImageList(&m_ImageList,LVSIL_NORMAL); //CImageList associates CListCtrl
//此处用GDI+,
Bitmap bmp(文件的相对或绝路径); //传入图片路径
int sourceWidth = 120; //获得图片宽度,这个120和创建的120保持相同。
int sourceHeight = bmp.GetHeight(); //获得图片宽度
if(sourceHeight>120) / /和m_ImageList.Create(120…)有很大关系,如果小于设
//定的宽度,图片将无法显示。
{
sourceHeight=120;
}
else
{
sourceHeight=bmp.GetHeight();
}
Bitmap* pThumbnail = (Bitmap*)bmp.GetThumbnailImage(sourceWidth , sourceHeight , NULL, NULL); //设定缩略图的大小
HBITMAP hBmp;
pThumbnail->GetHBITMAP(Color(255,255,255),&hBmp);
CBitmap *pImage = CBitmap::FromHandle(hBmp); //转换成CBitmap格式位图
_wsplitpath(*photo_iter ,drive,dir,fname,ext );
wcscpy_s(itemName,fname);
wcscat_s(itemName,ext);
int a=m_imageList.Add(pImage,RGB(255,255, 255));
m_pictureList.InsertItem(a,itemName,a); // itemName,你自己设法得到图片片的名字。名字会显示在图片下面。
//这里要注意,一定要用InsertItem(a,itemName,a);之前的m_list不需要在insert(I,_T(””));更不需要setItemText(item,subItem,Text),这可能会导致插入相同的图片。
顺便说下GDI这个鬼东西,不懂原理,直接说应用。会用的高手见笑。VS2008自带了gdi+,不需要下载。
1.声明头文件,在stdafx中,或者能被你编译到其他地方都可以。
#include <gdiplus.h> //GDI+声明,可以GDI/GDI+混合使用
#pragma comment(lib, "gdiplus.lib")
using namespace Gdiplus;
2.初始化GDI+,
CMyApp: public CWinApp
{
…………
ULONG_PTR m_gdiplusToken;
…………
};
BOOL CMyApp::InitInstance() //在这个函数中添加
{
//初始化GID+
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup( &m_gdiplusToken,&gdiplusStartupInput,NULL );
}
int CMobilePCApp::ExitInstance() //释放GDI+调用,这个函数需要自己写。别忘了声明。
{
GdiplusShutdown( m_gdiplusToken );
return CWinApp::ExitInstance();
}
当时这样做了后,我的GDI+还是不能用,添加图片时候Bitmap bmp(文件的相对或绝路径); bmp这个东西无效,里面有个空指针的东西,可见GDI+并没有初始化。后来先,初始化GDI+这段代码没有执行到。好了,那就把初始化的代码放到可以执行到的地方。
在主对话框的InitInstance()中添加
//初始化GID+
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup( &m_gdiplusToken,&gdiplusStartupInput,NULL );
好了,GDI+可以使用了,可以添加缩略图了。截图一张。
每行图片的数量随窗口大小自动排列。按下面设置属性。
CListCtrl属性
Alignment设置为top
Auto Arrage设置为True.
如有疑问,请留言。
//ClimageList无效的原因 1,creare的大小;2,如果是被重写的类,在drawItem重新绘制,不能在关联CImageList
.h
CListCtrlCl m_dataStatisticsList;
CImageList m_DataImageList;
.cpp
m_DataImageList.Create(44,30,ILC_COLOR24,2,2);
//bmp.Attach(tempBitmap);
bmp.LoadBitmap(IDB_CONTACT);
int a=m_DataImageList.Add(&bmp,RGB(255,255,255));
int b=m_DataImageList.GetImageCount();
m_dataStatisticsList.SetImageList(&m_DataImageList,LVSIL_SMALL);
for(int i=0;i<5;i++)
{
m_dataStatisticsList.InsertItem(i,_T(""),0); //0是CImageList的第一个图标。
}
分析:在m_DataImageList.Add(&bmp,RGB(255,255,255));之后,得到的CImageList的元素数量b还为0,原因可能在于 m_DataImageList.Create(44,30,ILC_COLOR24,2,2); 前两个参数图片的宽度和长度大于了图片本身,就会add失败。
在add成功后,b将成为1。 但是 m_dataStatisticsList.InsertItem(i,_T(""),0); 还不见图片,插入的文字倒是没有问题。 这个原因在于m_dataStatisticsList是一个被重写的类CListCtrlCl的对象。在CListCtrlCl中的drawItem并没有绘出图片。
发表评论
-
CDialogResize
2011-08-16 17:35 1518Introduction Recently I' ... -
有用的vc获取当前目录的代码
2011-03-11 16:02 1081//获取当前目录CString GetModuleDir(){ ... -
Visual C++多媒体设计及图形、图像处理
2011-03-07 13:14 887在VC下显示JPEG、GIF格式图像的一种简便方法一、 引言 ... -
vc制作异形窗口的方法
2011-02-26 15:01 1020http://wenku.baidu.com/view/d4a ... -
add a status bar to an MFC dialog
2011-02-08 11:48 1642we can get the method from the ... -
QQ找茬外挂 开源
2011-01-12 11:31 900http://hi.baidu.com/blue236146_ ... -
LPTSTR详解
2011-01-07 10:02 1110LPTSTR 与char*等价,表示普通字符/字符串变量 ... -
Unicode下MFC获取命令行参数,执行脚本制作
2011-01-06 15:07 2408在MFC程序中,可以用以下几种方法来获取命令行参数。 ... -
INT_PTR介绍
2011-01-06 09:07 2683不知道是从哪个版本的SDK开始,微软引入了一个新的类型——IN ... -
VC++多线程编程
2011-01-05 12:48 1301多线程编程之一——问题提出 一、问题的提出编写一个耗时的单线 ... -
VC++文件操作
2010-12-30 17:40 871文件属性相关 1.判断文件是否存在 利用CFile类和CF ... -
vc++ 如何使radio button ,checkbox初始为已选状态?
2010-12-29 11:28 1674CheckDlgButton(IDC_CHECK1, BS ... -
vc++ 开源异步socket通信项目
2010-12-21 17:28 1070http://www.codeproject.com/KB/I ... -
smtp小记录,慢慢记录
2010-12-17 08:46 637我的smtp小研究,正在开发一个vc++的邮件客户端,goog ...
相关推荐
将CListCtrl设置成图片格式,然后关联了CImageList,显示图片。其中用了GDI+来缩小图片到指定大小。
使用CListCtrl+CImageList显示任意图片 文章链接 http://blog.csdn.net/guoming0000/article/details/7303361
网上学的,点OK打开png,使用Gdiplus截图实现缩略图,有需要的看看,写的不好莫见怪
CListCtrl 显示图片
生成文件的listview,并支持图片的缩略图显示,对于界面编程很有帮助。
主要通过CListCtrl::InsertColumn、InsertItem、SetItemText向列表插入数据,CImageList插入BMP图片或ICON图标.是博客文章http://blog.csdn.net/eastmount/article/details/20085489的源程序,只是显示图片和文字,并...
该工程是一个利用MFC listcontrol 控件实现的缩略图显示功能,注意 要使用bmp图像
重写CListCtrl,对图片可视化管理,显示,添加删除图片,编辑状态等功能
基于MFC扩展CListCtrl子项显示图片并叠加文字,子项显示为图片,并在图片上叠加文字,用于展示图片及描述信息。
在CListCtrl控件中的第一列添加图片
很简单明了的一个小例子,看完就能明白如何使用CListCtrl完成icon显示。
clistctr加载图标、clistctrl report加载任意图标,稍微改下可以适用到 其他分割的listctrl中,比如ctreectrl 或者clistctrl的icon风格!
ClistCtrl显示数据有vc和vs2005的示例
关于MFC中ClistCtrl控件的使用,带图标的列表显示,有icon和report两种模式的例子
CListCtrl中显示ProgressBar控件,学习CListCtrl控件里加入其它控件的方法,有参考价值
可以自动排序的CListCtrl,对初学者帮助很大!
CListCtrl最基础、清晰实例子,可以对ClistCtrl最快捷的学习与掌握
CListCtrl控件背景颜色网格色彩,用CListCtrl来显示数据比较方便,有时候我们需要标注某一列或某一个单元格的背景和字体颜色,或者需要改变一下行高和字体大小,CListCtrl要改变这些并不是很方便。本文将介绍如何...
本实例展示了CListCtrl虚模式显示大量数据的情况,并可根据点击列进行排序
重写的CListCtrl类,能改变行的颜色,能点击列标题后实现自动排序。同时包含VC2010下,CString转为Char*的技巧。类在VC6.0和VC2010下均编译通过。