vc++调用Invalidate()函数没有触发ondraw函数

SDI文档,下面是我在view中加的函数,CADD是一个对话框类,voidCIdentifyView::OnAddnote(){CADDdlg;if(dlg.DoModa... SDI文档,下面是我在view中加的函数,CADD是一个对话框类,
void CIdentifyView::OnAddnote()
{
CADD dlg;
if(dlg.DoModal ()==IDOK)
{
Invalidate();
}
}
我在ondraw中加了下面这句话;
MessageBox("刷新");
编译没错误,能运行,但是不管怎样都不会弹出messagebox。
如果在 Invalidate();下面加上messagebox就有弹出,说明 Invalidate();函数确实执行了。
求大神帮忙。。。
展开
 我来答
bhtzu
推荐于2016-03-30 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4056万
展开全部
在ondraw中加MessageBox("刷新");,你确认程序还能运行么?
OnDraw函数在程序启动和任何界面刷新情况下都会调用,你点一下菜单或者鼠标通过客户区,就会造成无数个弹出窗口。
如果程序运行中一个弹出也没有,那么两种情况:一个是OnDraw不是系统提供的重载函数,你写错了,另外一个是你的View不是标准CView继承类,比如CFormView继承,那么OnDraw是无效的,调用的是OnPaint。
追问
嗯 确实 我的是Clistview继承,但是我找不到onpaint函数啊,求教啊
还有一个问题就是静态切分窗口能用CView之外的类吗。。比如Clistview。。
追答
ListView是嵌套了一个CListCtrl啊,你在View里面没法控制刷新的,如果要在界面上画东西,要在进行控件重绘才可以。
分隔视图,理论上每个View都可以是任意支持的窗口类型,CListView当然没问题。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式