怎么在ListView的Column上画图?
来源:互联网 发布:centos7 查看php版本 编辑:程序博客网 时间:2024/04/20 23:30
首先,添加一个ImageList,加入两个图标用来表示排序状态,把ListView的SmallImage指向它
然后,添加一个函数:
void __fastcall TForm1::MakeIconToRight(TListView * lvSort)
{
LVCOLUMN lvcl;
for(int i=0; i< lvSort->Columns->Count; i++)
{
ZeroMemory(&lvcl,sizeof(LVCOLUMN));
lvcl.mask|=LVCF_FMT;
ListView_GetColumn(lvSort->Handle,i,&lvcl);
lvcl.fmt=lvcl.fmt|LVCFMT_BITMAP_ON_RIGHT;
ListView_SetColumn(lvSort->Handle,i,&lvcl);
}
}
在Form的OnShow事件里调用MakeIconToRight(ListView1);这样,Column上的图标就会跑到右边,但,一点我们改变Column的宽度或设定不同的图标,就又会跑到左边去?怎么办呢?
我们可以来拦截消息后再次调用MakeIconToRight方法。
添加一个ApplicationEvent控件,在OnMessage里添加如下代码:
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
if(IsChild(ListView1->Handle,Msg.hwnd)&&Msg.message==15)//我也不知道15是什么消息,我是过滤所有消息后得到的这个数值……可能是重绘消息-_-b
{
MakeIconToRight(ListView1);
Handled = false;//不写也没关系,但是不能为true;
}
}
这样,图标就永远在右面了~~~
然后,添加一个函数:
void __fastcall TForm1::MakeIconToRight(TListView * lvSort)
{
LVCOLUMN lvcl;
for(int i=0; i< lvSort->Columns->Count; i++)
{
ZeroMemory(&lvcl,sizeof(LVCOLUMN));
lvcl.mask|=LVCF_FMT;
ListView_GetColumn(lvSort->Handle,i,&lvcl);
lvcl.fmt=lvcl.fmt|LVCFMT_BITMAP_ON_RIGHT;
ListView_SetColumn(lvSort->Handle,i,&lvcl);
}
}
在Form的OnShow事件里调用MakeIconToRight(ListView1);这样,Column上的图标就会跑到右边,但,一点我们改变Column的宽度或设定不同的图标,就又会跑到左边去?怎么办呢?
我们可以来拦截消息后再次调用MakeIconToRight方法。
添加一个ApplicationEvent控件,在OnMessage里添加如下代码:
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
if(IsChild(ListView1->Handle,Msg.hwnd)&&Msg.message==15)//我也不知道15是什么消息,我是过滤所有消息后得到的这个数值……可能是重绘消息-_-b
{
MakeIconToRight(ListView1);
Handled = false;//不写也没关系,但是不能为true;
}
}
这样,图标就永远在右面了~~~
- 怎么在ListView的Column上画图?
- 在ListView 的Column Header上显示任意图片
- 在基于对话框的应用程序上画图
- 在panel上画图
- 在TCanvas上画图
- hibernate 的@Column注解在的字段上不生效
- ListView的Column排序方法
- 常用的在CALayer上画图的方法
- 在计算机屏幕上画图
- C#在屏幕上画图
- 在窗体边框上画图
- C#在Panel上画图
- android 在surfaceView上画图
- 在windows phone上画图
- J2ME是这样在屏幕上画图的
- 在web页面上画图的JS类
- 在屏幕上画图的C#实现代码
- 3.27-如何在 主应用程序窗口 的背景上画图?
- windows 不能在本地计算机启动apache Tomcat
- VCC、VDD和VSS三种标号的区别
- CRC原理
- C#反射基础--代码篇
- C# 装箱和拆箱[整理]
- 怎么在ListView的Column上画图?
- Unable to compile class for JSP解决方案
- 在大容量数据集中查找前N个数的算法
- 初学者应该如何理解Oracle的架构知识
- 中文分词算法总结
- JavaScript介绍 (二)
- 有利于SEO搜索的div+css命名规则
- 函数可以返回一个值,变通一下,过程也行。
- comparable 与comparator的区别?