社区
界面
帖子详情
再请教一个CListCtrl背景刷新的问题
zeeway
2003-06-16 05:34:22
我的CListCtrl控件背景设成了自己的图片,在点击Item时要刷新背景,
我在OnClick函数里用InvalidateRect函数来刷新,为什么我用鼠标点击时
背景会刷新,而用键盘来选择Item(用左右键选择),背景就刷新不了?
thx
...全文
88
19
打赏
收藏
再请教一个CListCtrl背景刷新的问题
我的CListCtrl控件背景设成了自己的图片,在点击Item时要刷新背景, 我在OnClick函数里用InvalidateRect函数来刷新,为什么我用鼠标点击时 背景会刷新,而用键盘来选择Item(用左右键选择),背景就刷新不了? thx
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hzw81
2003-08-15
打赏
举报
回复
up
xyuncn
2003-07-11
打赏
举报
回复
up
zeeway
2003-07-09
打赏
举报
回复
this->voice_dlg->GetDC()->(rect,&bkbrush);
这句根本就编译通过不了啊,GetDC()->后跟的是什么函数啊?
zeeway
2003-06-22
打赏
举报
回复
this->voice_dlg->GetDC()->(rect,&bkbrush);
~~这边少掉的函数是什么啊?
bileg
2003-06-22
打赏
举报
回复
up
lingfeng8888
2003-06-22
打赏
举报
回复
没有少什么,只是加了些代码做测试用,屏蔽和开放最后一句可以看到最后一句是有效果的。
lingfeng8888
2003-06-17
打赏
举报
回复
只有把你的代码贴出来看看,要不谁都不知道你的刷新是怎么处理的?问题在哪?
zeeway
2003-06-17
打赏
举报
回复
是啊,用鼠标和用键盘都会执行那条刷新语句,而且我在执行完后加了TRACE,它们刷新的区域也都是一样的啊,可鼠标点击会刷新,用键盘就刷新不了了。
zhaoweidf
2003-06-17
打赏
举报
回复
学习
lingfeng8888
2003-06-17
打赏
举报
回复
void MyListCtrl::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
this->RefreshBk();
if (pNMListView->iItem < 0)
return;
nSelected = pNMListView->iItem;
*pResult = 0;
}
void MyListCtrl::RefreshBk()
{
CRect rect,rect1,rect2;
int x,y;
this->voice_dlg->GetWindowRect(rect1);
this->GetWindowRect(rect2);
x = rect2.TopLeft().x - rect1.TopLeft().x;
y = rect2.TopLeft().y - rect1.TopLeft().y;
this->GetItemRect(nSelected,&rect,LVIR_BOUNDS);
//nSelected 是调用该函数时所点击的Item
rect.OffsetRect(x,y);
CBrush bkbrush; //用这三条代码刷你要更
bkbrush.CreatSolidBrush(RGB(50,250,250)); //新的区域,屏蔽和开放
this->voice_dlg->GetDC()->(rect,&bkbrush); //下面的语句可以看到效
//果,实际是有用的。
this->voice_dlg->InvalidateRect(&rect);
}
经过上面的测试,在我的机器上无论用鼠标点击还是光标键,最后这条语句都可以起作用。
zeeway
2003-06-17
打赏
举报
回复
this->voice_dlg是我的对话框,
MyListCtrl是我重载的类
zeeway
2003-06-17
打赏
举报
回复
void MyListCtrl::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
this->RefreshBk();
if (pNMListView->iItem < 0)
return;
nSelected = pNMListView->iItem;
*pResult = 0;
}
void MyListCtrl::RefreshBk()
{
CRect rect,rect1,rect2;
int x,y;
this->voice_dlg->GetWindowRect(rect1);
this->GetWindowRect(rect2);
x = rect2.TopLeft().x - rect1.TopLeft().x;
y = rect2.TopLeft().y - rect1.TopLeft().y;
this->GetItemRect(nSelected,&rect,LVIR_BOUNDS);
//nSelected 是调用该函数时所点击的Item
rect.OffsetRect(x,y);
this->voice_dlg->InvalidateRect(&rect);
}
lingfeng8888
2003-06-16
打赏
举报
回复
既然进入了,那么你的刷新处理代码是不是在里面被执行了?如果不行,自己那一句代码让它刷新试试看。
zeeway
2003-06-16
打赏
举报
回复
进入是可以的,我也调试过了,连InvalidateRect用的矩形都是一样的,可动键盘它就是不给我刷新。(是刷新背景,不是刷新Item)
lingfeng8888
2003-06-16
打赏
举报
回复
不知道你的代码是怎么样的,但我在我的程序中做了测试,不仅用鼠标点击可以进入OnItemChanged函数,而且用光标也可以进入。
zeeway
2003-06-16
打赏
举报
回复
我最早用的就是OnItemChanged,效果一样,我才换OnClick来的。
lingfeng8888
2003-06-16
打赏
举报
回复
因为OnClick函数响应你的鼠标单击事件,在单击事件中你做了背景刷新处理。而用键盘操作时并没有激发OnClick事件,因此你的OnClick函数没有被执行,你的背景也就没有被刷新。
你改为在响应LVN_ITEMCHANGED事件试试。
丁淇石头
2003-06-16
打赏
举报
回复
映射HDN_ITEMCHANGED消息
leeajax
2003-06-16
打赏
举报
回复
OnClick当然是要点击才可以,你因该隐射焦点改变消息
Li
stCtrl
插入GIF图片
在很多软件的
CLi
stCtrl
列表控件都能显示Gif动态图标,昨天我也刚好要实现这个功能,向同事
请教
后,他们发给我
一个
ImageEx显示GIF的例子。我拿这个例子来研究,发现上面的Demo只是在窗口中显示
一个
Gif表情,但是我要...
MFC中闪烁的处理
我们可以把要显示的图形先在内存中绘制好,然后再一次性的将内存中的图形按照
一个
点
一个
点地覆盖到屏幕上去(这个过程非常快,因为是非常规整的内存拷贝)。这样在内存中绘图时,随便用什么反差大的
背景
色进行清除都...
Li
stCtrl
颜色控制
http://tech.cixiong.com/t/200501/13/0584162.html
一个
有点难的
问题
,像各位
请教
!!!2005-01-13 09:17:57发贴人: microibm我建了个
CLi
stView的对象,这个视图中的Li
stCtrl
(Report型)中用来显示数据,所显示的数据...
界面(1):对话框和菜单 打印和按钮等杂项
Q
请教
高手,图形对话框的
问题
T我做了
一个
图象的界面,对话框的,在OnPaint中 画上
背景
图案,然后用Invalidate 方法
刷新
每个控件,但是控件并没有完全显示出来,特别是CCtrlList 等控件,滚动条有时候显示不出来,...
Jiangsheng的CSDN Digest (Dec 2005)
关于读XML字串的
一个
小
问题
(VC/MFC 基础类) loadXML之后文档指针已经正常获得,但是文档的内容始终为空 MSXML4的文档对象的async属性默认是真,这时候Load是异步的,要等待对象触发事件再访问文档内容。也可以把...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章