如何发消息更新CView::OnDraw()?

HalfmanHuang 2009-07-15 03:31:02
先申明,本人没系统学过MFC,基本是看书看代码自学的,所以最好说的详细点,在线等,分不多,谢谢了。

void CErrorView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
CStdioFile file;
file.Open(_T("E:\\temp.txt"),CStdioFile::modeRead);
int i=1;
while(file.ReadString(data)>0)
{
pDC->TextOutA(1,i,data);
i+=20;
}
file.Close();
}

现在我要从MENU添加一个对CErrorView的消息处理函数来更新CErrorView视图,也就是重新读取"temp.txt"后显示,请问怎么做?我一点也不会。
...全文
213 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
HalfmanHuang 2009-07-16
  • 打赏
  • 举报
回复
结贴给分了
HalfmanHuang 2009-07-15
  • 打赏
  • 举报
回复
是用classwizard加的
找到问题了,菜单不能直接发送消息给拆分窗口视类,我现在要先发消息到MainFrame,在转发自定义消息到拆分窗口视类
快乐鹦鹉 2009-07-15
  • 打赏
  • 举报
回复
你是用classwizard加的消息响应吗???
HalfmanHuang 2009-07-15
  • 打赏
  • 举报
回复
好像找到问题了,菜单消息根本没发出来,不知道为什么,
CinfView是我做在拆分窗口中的。
我从菜单不能直接发送消息到拆分窗口的CinfView中吗?
HalfmanHuang 2009-07-15
  • 打赏
  • 举报
回复
唉,CinfView就是CErrorView,被我替换掉了,已经没有CErrorView了,简单的讲已经被我废掉了。
就当我是重新开了个项目,
现在我是这样做的:
void CinfView::On32771()
{
Invalidate();
}
没效果,客户区的内容还是没重绘,但是我最小化最大化一下就重绘了。
不管怎样,谢谢大家的热心帮忙
dl551djs 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 HalfmanHuang 的回复:]
void CinfView::On32771()
{
// TODO: 在此添加命令处理程序代码
this->Invalidate(TRUE);
}


这是我添加的消息函数,但还是没用,没有重绘
[/Quote]

因为你是要重绘CErrorView,而上面这个只是重绘CinfView。
解决方法,在CErrorView写个函数,如
void CErrorView::On32771()
{
Invalidate();
}
在CinfView类内调用就行
超gogo 2009-07-15
  • 打赏
  • 举报
回复
当需要重绘时 添加Invalidate();
快乐鹦鹉 2009-07-15
  • 打赏
  • 举报
回复
那你现在换到哪里了啊?贴出来啊。必须在CErrorView中
HalfmanHuang 2009-07-15
  • 打赏
  • 举报
回复
哦,不好意思,我换了个视图类,一样的,还是这个问题
spring203 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 HalfmanHuang 的回复:]
void CinfView::On32771()
{
// TODO: 在此添加命令处理程序代码
this->Invalidate(TRUE);
}


这是我添加的消息函数,但还是没用,没有重绘
[/Quote]
调用CErrorView视图窗口的Invalidate呀,不是CinfView的,哎上面不是说过了吗,真累呀!
HalfmanHuang 2009-07-15
  • 打赏
  • 举报
回复
void CinfView::On32771()
{
// TODO: 在此添加命令处理程序代码
this->Invalidate(TRUE);
}


这是我添加的消息函数,但还是没用,没有重绘
快乐鹦鹉 2009-07-15
  • 打赏
  • 举报
回复
Invalidate()
HalfmanHuang 2009-07-15
  • 打赏
  • 举报
回复
不是啊,添加消息函数我会,关键是我不知道用什么函数去更新视图区.
spring203 2009-07-15
  • 打赏
  • 举报
回复
调用CErrorView视图窗口的Invalidate好了!
快乐鹦鹉 2009-07-15
  • 打赏
  • 举报
回复
classwizard会用吗?添加菜单消息就行,然后消息函数中Invalidate()
数据说明:源数据来自王晓磊博士提供的全国空气质量监测数据。经过数据清洗,制作成分城市、分站点、按指标存储的小时浓度监测数据,如果需要其他城市、站点、指标数据可以站内消息联系本人。 内容概要:本文档记录了北京市2015年部分日期每小时的PM2.5浓度监测数据,时间跨度从1月到12月的部分时段,数据以“年月日 时 PM2.5值”的格式呈现,数值单位为微克/立方米(μg/m³),部分时间段存在缺失值(用NaN表示)。数据反映了北京在不同季节、不同时段的空气质量变化情况,包括污染高峰期(如冬季)和较为清洁时段(如夏季),部分数据显示PM2.5浓度严重超标,达到300以上,属于重度或严重污染级别。; 适合人群:环境科学研究人员、空气质量数据分析人员、气象学爱好者、公共卫生政策制定者以及关注城市空气污染问题的社会公众。; 使用场景及目标:①用于分析北京2015年PM2.5浓度的时间变化趋势与周期性特征;②支持空气质量建模、污染源追踪及健康风险评估研究;③作为教学案例帮助学生理解大气污染物的时间序列特性;④辅助政府机构制定雾霾治理措施并评估其效果。; 阅读建议:此数据为原始时间序列记录,使用前应进行数据清洗(处理NaN值)、时间对齐和统计分析,建议结合气象数据(如风速、湿度)和地理信息综合解读,以便更准确地识别污染成因与传播规律。

15,976

社区成员

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

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