CListCtrl怎么在最后一列加入图象???给高手送分,解决就结贴!!! 控件第一列是主机IP地址,第二列是图象,根据对主机IP运行PING命令来显示不同的图象。现在被第二列怎么加入图象难住了!救命! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个你要把CLISTCTRL设置成重画,这个你可以得到每一个RECT,你就可以在这个RECT中画可以了。 我想显示256色的图象,必须用重绘,有谁会ower draw???解决再给他加100分,决不食言 我来帮你!给你举一个例子:imglist 是 对话框的成员变量, m_ListCtrl是 对话框的控件. imglist.Create(32,16,ILC_COLOR,8,4); imglist.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME)); m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT |LVS_EX_SUBITEMIMAGES); m_ListCtrl.InsertColumn( 0 ,"Col1",LVCFMT_CENTER, 40 ); m_ListCtrl.InsertColumn( 1 ,"Col2",LVCFMT_LEFT, 50); m_ListCtrl.SetItem( 1 , 1,LVIF_IMAGE,"",0,0,0,0);怎么样?应该解决了吧:) 呵呵,这个好处理阿,往Clistctrl各列插入图像相信楼主已经知道了吧要实现第一列没有图像,第二列没有图像,可以这样做在vc的资源编辑器中生成一个空白的,也就是底色为白色的icon资源然后把它加入到与listctrl相关联的图像列表中,不需要图像的列就插入这个空白图标,需要图像的列就插入对应的图标,这样应该就能实现楼主所需要的效果了吧!! 感谢大家的好意。不过你们还是没有解决我的问题:(用CImageList加入图标或图象显示的颜色只有16色,我想显示256色的一个.BMP图象无奈只好自己在每个subitem里画!必须重载CListCtrl::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct)设置了CListCtrl控件的LVS_OWNERDRAWFIXED属性,我已经能够进入这个虚函数了现在不知道如何获得最后一列的RECT,然后再在其上作图! 而且有一点很奇怪,我用CListCtrl生成的对象可以实现以下代码 CString column_str[4] ={ "IP", "仓库名称", "POS", "状态" }; long column_width[4]={115, 100, 50, 100 }; LV_COLUMN lvc; lvc.mask = LVCF_FMT | LVCF_WIDTH |LVCF_TEXT ; m_ipList.SetExtendedStyle(LVS_EX_FULLROWSELECT); m_ipList.SetExtendedStyle(LVS_EX_SUBITEMIMAGES); for(i = 0; i<4; i++){ lvc.iSubItem = i; lvc.pszText = column_str[i].GetBuffer(0); lvc.cx = column_width[i]; lvc.fmt = LVCFMT_CENTER ; m_ipList.InsertColumn(i,&lvc); } for(i = 0; i < nSections; i++){ i = m_ipList.InsertItem(i,strIP); m_ipList.SetItemText(i,1,strCR); m_ipList.SetItemText(i,2,strPOS); m_ipList.SetItemData(i, i); }可是从CMyListCtrl(其中重载了DrawItem函数)这些代码就不起效果了 改变列显示的顺序BOOL SetColumnOrderArray( int iCount, LPINT piArray ); 最后一列的RECT可以用GetColumnWidth来计算 CListCtrl::GetSubItemRect(...);//得到subitem的rect 设备无关位图的显示.. 能弹出复选tree列表的combo box 无法修改控件的Text 请问是否有办法获得(上一次)那个按钮被按下了 求救!一个DLL编译的问题 如何使用UDP进行大流量数据收发?比如100Mbits/s以上的速度。 怎么用程序关机呀? 急:关于对话框处理问题 如何在程序中判断并删除一文件夹 求帮忙 如何根据离散数据动态显示曲线波形 为什么自动生成的对话框类标识ID没有定义????????再线等 麻烦
给你举一个例子:
imglist 是 对话框的成员变量, m_ListCtrl是 对话框的控件.
imglist.Create(32,16,ILC_COLOR,8,4);
imglist.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT |LVS_EX_SUBITEMIMAGES);
m_ListCtrl.InsertColumn( 0 ,"Col1",LVCFMT_CENTER, 40 );
m_ListCtrl.InsertColumn( 1 ,"Col2",LVCFMT_LEFT, 50);
m_ListCtrl.SetItem( 1 , 1,LVIF_IMAGE,"",0,0,0,0);
怎么样?应该解决了吧:)
要实现第一列没有图像,第二列没有图像,可以这样做
在vc的资源编辑器中生成一个空白的,也就是底色为白色的icon资源
然后把它加入到与listctrl相关联的图像列表中,不需要图像的列就插入这个空白图标,需要图像的列就插入对应的图标,这样应该就能实现楼主所需要的效果了吧!!
用CImageList加入图标或图象显示的颜色只有16色,我想显示256色的一个.BMP图象
无奈只好自己在每个subitem里画!
必须重载CListCtrl::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct)
设置了CListCtrl控件的LVS_OWNERDRAWFIXED属性,我已经能够进入这个虚函数了
现在不知道如何获得最后一列的RECT,然后再在其上作图!
可以实现以下代码
CString column_str[4] ={
"IP",
"仓库名称",
"POS",
"状态"
};
long column_width[4]={115,
100,
50,
100
};
LV_COLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_WIDTH |LVCF_TEXT ;
m_ipList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_ipList.SetExtendedStyle(LVS_EX_SUBITEMIMAGES);
for(i = 0; i<4; i++){
lvc.iSubItem = i;
lvc.pszText = column_str[i].GetBuffer(0);
lvc.cx = column_width[i];
lvc.fmt = LVCFMT_CENTER ;
m_ipList.InsertColumn(i,&lvc);
} for(i = 0; i < nSections; i++){
i = m_ipList.InsertItem(i,strIP);
m_ipList.SetItemText(i,1,strCR);
m_ipList.SetItemText(i,2,strPOS);
m_ipList.SetItemData(i, i);
}
可是从CMyListCtrl(其中重载了DrawItem函数)
这些代码就不起效果了
BOOL SetColumnOrderArray( int iCount, LPINT piArray );