社区
界面
帖子详情
如果修改CListCtrl的HeaderCtrl?
Flood1984
2007-01-30 05:02:23
我想修改ListCtrl中标题的大小和显示文字(需要自绘标题)。
我现在已经有了自绘的类CMyListCtrl和CMyHeaderCtrl。
怎样才能把CMyHeaderCtrl嵌入到CMyListCtrl中?
...全文
485
10
打赏
收藏
如果修改CListCtrl的HeaderCtrl?
我想修改ListCtrl中标题的大小和显示文字(需要自绘标题)。 我现在已经有了自绘的类CMyListCtrl和CMyHeaderCtrl。 怎样才能把CMyHeaderCtrl嵌入到CMyListCtrl中?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Flood1984
2007-02-01
打赏
举报
回复
子类化成功了,可是HeaderCtrl不能接收到WM_DRAWITEM消息。
郁闷,算了,不研究了,直接PAINT。
Flood1984
2007-01-31
打赏
举报
回复
不是创建不成功,
ASSERT(m_hWnd == NULL);//这一句的意思应该是要保证n_hWnd为NULL。
所以不是没创建成功,恰恰相反,他就是要不存在才好。
问题出在哪儿?
SubclassWindow应该怎么用?这个问题只能用SubclassWindow来解决么?
crumpy
2007-01-31
打赏
举报
回复
这里也写错了^_^!, 应该是:
// this will have a valid HWND
TRACE("HEADER HWND = %08x\n", ::GetDlgItem(m_hWnd, 0));
mynamelj
2007-01-31
打赏
举报
回复
那就是你的m_headerCtrl控件创建不成功
crumpy
2007-01-31
打赏
举报
回复
最后一行写错了, 应该是
m_headerCtrl.SubclassWindow( GetHeaderCtrl()->m_hWnd );
或
m_headerCtrl.SubclassWindow( ::GetDlgItem(m_hWnd, 0) );
crumpy
2007-01-31
打赏
举报
回复
改成下面的样子试试:
void CMyListCtrl::PreSubclassWindow()
{
CListCtrl::PreSubclassWindow();
// this will force the HEADER CTRL to be created
InsertColumn(0, _T(""));
DeleteColumn(0);
// this will have a valid HWND
TRACE("HEADER HWND = %0x8\n", ::GetDlgItem(m_hWnd, 0));
m_headerCtrl.SubclassWindow(m_headerCtrl.m_hWnd);
}
Flood1984
2007-01-31
打赏
举报
回复
按照楼上的方法,结果有ASSERT错误。
跟踪得到是在调用SubclassWindow时,
SubclassWindow调用了Attach(HWND hWndNew),
Attach()中的ASSERT(m_hWnd == NULL);失败。
怎么解决?我的代码如下:
void CMyListCtrl::PreSubclassWindow()
{
CListCtrl::PreSubclassWindow();
CRect rc;
GetClientRect(&rc);
m_headerCtrl.Create(HDS_HORZ|HDS_BUTTONS|CCS_TOP,CRect(0,0,rc.right,m_headerHeight),this,1);
// GetHeaderCtrl()->UnsubclassWindow();
GetHeaderCtrl()->SubclassWindow(m_headerCtrl.m_hWnd);
}
mynamelj
2007-01-31
打赏
举报
回复
void CMyListCtrl::PreSubclassWindow()
{
//use our custom CHeaderCtrl as long as there
//is a headerctrl object to subclass
if(GetHeaderCtrl())
m_headerCtrl.SubclassWindow(GetHeaderCtrl()->m_hWnd);
CListCtrl::PreSubclassWindow();
}
mynamelj
2007-01-30
打赏
举报
回复
// Declare member
CMyHeaderCtrl m_headctrl;
// create...
m_headctrl.Create(....);
GetHeadCtrl()->SubclassWindow(&m_headctrl);
crumpy
2007-01-30
打赏
举报
回复
用CWnd::SubclassWindow()试试, 可能还要在Header Ctrl销毁前Unsubclass
得到CListCtrl的Header, 可以用(CHeaderCtrl*)CListCtrl::GetDlgItem(0)
MFC自绘制
CLi
st
Ctrl
用mfc绘制的
CLi
st
Ctrl
控件,非常简单实用,使用了
Header
Ctrl
子类,界面很全面,就是里面的图片是我自己画的,使用者可以根据自己情况
修改
。
mfc单元格坐标_MFC
CLi
st
Ctrl
改变表头/单元格/字体的背景颜色及高度
就是自己创建Li
st
Ctrl
和
Header
Ctrl
的子类.代码如下:
Header
Ctrl
Cl.cppint m_R;int m_G;int m_B;int m_Gradient; // 画立体背景,渐变系数float m_Height; //表头高度,这是倍数,int m_fontHeight; //字体高度int m_...
CLi
st
Ctrl
控件功能扩展总结
最近需要开发一个功能丰富的
CLi
st
Ctrl
控件(report样式),包括自定义表头、背景、文字颜色、行高、加载缩略图、ToolTip、拖拽、加载进度条控件、排序等功能。在MFC的框架中,采用继承
CLi
st
Ctrl
子类的实现方式应该是...
CLi
st
Ctrl
自绘checkBox
那么开始吧,自绘
CLi
st
Ctrl
必然是 在DrawItem里面了,所以派生一个
CLi
st
Ctrl
Ex是必然了。那个自绘的风格改成true. //标记每个checkBox的状态,这个结构体保存了每个item的状态,所有的item会保存在一个vector里...
美化
CLi
st
Ctrl
中显示的焦点行
经常使用
Cli
st
Ctrl
来显示大量的数据,但是总感觉焦点行的背景颜色为蓝色,显示的效果挺难看的,参考《MFC技术内幕》这本书中的例子,自己
修改
了
Cli
st
Ctrl
的OnPaint代码,把焦点行改为白色的背景,加了一个矩形的边框...
界面
15,979
社区成员
115,897
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章