切分窗口中列表控件的更新问题

patron 2007-02-16 11:02:17
我在左边窗口中创建一个基于CListView的类,然后使用CListCtrl& m_List= GetListCtrl()来获取列表,
并用SetTimer( 1, 1000, NULL )和响应函数
void CMylist::OnTimer(UINT nIDEvent)
{
AfxMessageBox("刷新");//测试框
CListView::OnTimer(nIDEvent);
}
来实现列表的刷新.但是运行后却无法定时刷新.只有任意选中其中一列(REPORT状态下)或者其中一个图标(SMALLICON状态下)时,测试框才会弹出来.请问这是什么原因造成的?
...全文
320 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
patron 2007-02-26
  • 打赏
  • 举报
回复
没人回答吗?换个问法.
在CMainFrm处理WM_TIMER的话,如何能够修改m_List的内容?它是在CListView的初始化函数中定义的,无法做为全局变量让CMainFrm来处理。
patron 2007-02-26
  • 打赏
  • 举报
回复
谢谢楼上的兄弟.
我找到问题所在了,CListView::OnTimer(nIDEvent)这个函数会自动调用KillTimer来杀掉TIMER,我把它注释掉就可以了.
不过让人郁闷的是,定时器响应特别快(快过1秒),无法定时,SetTimer的时间设长了没用,有人知道是什么原因吗?
raymonzhao 2007-02-26
  • 打赏
  • 举报
回复
在CMainFrm处理WM_TIMER的话,如何能够修改m_List的内容?它是在CListView的初始化函数中定义的
-----------------------------
m_List定义为成员变量,不能是局部的.
raymonzhao 2007-02-26
  • 打赏
  • 举报
回复
但是我要操作的数据都是在CMylist下定义和赋值的,要改的话改太多了.能确定这样能解决问题吗?
------------------------------------
将CListView改成CFormView,再拖一个list上去,设定成员变量为CMyList.
然后在OnTimer里
void CMylist::OnTimer(UINT nIDEvent)
{
AfxMessageBox("刷新");//测试框
CListView::OnTimer(nIDEvent);改成m_cMyList.UpdateChanListCtrl();
}
lypying 2007-02-26
  • 打赏
  • 举报
回复
兄弟你加我QQ 我也在做这个188290951 一起研究下好么?
patron 2007-02-16
  • 打赏
  • 举报
回复
那是测试用的,实际是调用UpdateChanListCtrl()这个自己写的函数,现在的情况是并没有每秒弹出一出对话框,而是选中一列才弹出来
东文-桑晨 2007-02-16
  • 打赏
  • 举报
回复
用SetTimer( 1, 1000, NULL )和响应函数
void CMylist::OnTimer(UINT nIDEvent)
{
AfxMessageBox("刷新");//测试框
CListView::OnTimer(nIDEvent);
}
来实现列表的刷新.
===================================

这个怎么可能会定时刷新呢?

设了Timer后,应该会每秒钟弹出一次对话框啊!
patron 2007-02-16
  • 打赏
  • 举报
回复
但是我要操作的数据都是在CMylist下定义和赋值的,要改的话改太多了.能确定这样能解决问题吗?
孤必有邻 2007-02-16
  • 打赏
  • 举报
回复
让CMainFrm处理WM_TIMER吧

15,975

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧