AfxMessageBox 重复执行

来源:百度知道 编辑:UC知道 时间:2024/05/26 18:46:49
VC 单文档
在 view 中的 ONDRAW里加入了如下语句

if(a==0)
{
AfxMessageBox("1");
a=1;
}

发现 运行以后 弹出很多的对话框 为啥呢??
a是已经在VIEW中定义的变量

a的作用是让他只出现一个对话框 为什么没有完成任务

跟踪调试发现 a竟然没有定义....为什么

很多时候都会出现这样的问题,比如在OnTimer里......

可以这样改一下:

if(a==0)
{
a=1;
AfxMessageBox("1");
}

弹出的消息框遮盖了VIEW,当你点击“确定”,消息框消失,使本来被遮盖的VIEW露了出来,由于VIEW的画面已处于失效状态,需要重新绘制,发出WM_PAINT消息。VIEW在WM_PAINT消息函数里会再调用OnDraw,因此消息框再次出现,如果这时你再点击“确定”,问题又会循环出现。
另外,即使你不点击确定,单纯的把消息框从VIEW中移开,也会跳出另一个消息框,结果会在屏幕上出现2个消息框。

把a定义成static行不行?

把语句顺序改一下。先a=0。再弹出消息。应该就可以了