MFC 编程

huazai434 2009-11-02 11:18:10
我想写这样的简单mfc程序:创建2个菜单项,分别为DDA,CIRCLE,单击2个菜单项时会显示直线和圆。我是这样想的,在对应的ondda和oncircle中分别写入CHOICE=1和CHOICE=2.(已经将CHOICE声明为全局变量初始值1)。然后在view类中的ondraw函数中写入如下代码(用伪代码表示):
if CHOICE=1
画直线;
if CHOICE=2
画圆;
但运行后立即显示直线,单击circle菜单并不显示圆。所以我想是因为ondraw只在窗口重绘的时候才调用,因为单击circle菜单时窗口并没有重绘,自然不会调用ondraw函数,因此因此也不会根据CHOICE 的值判断画直线还是圆。所以我在上述两个消息映射函数中分别添加了UpdateWindow();这样choice被更改之后因为窗口重绘了所以会调用ondraw从而根据CHOICE 的值画线或圆。运行后仍然没出现期望的结果。请问问题出在哪里呢?麻烦各位高手于百忙之中解决一下我范的幼稚错误。。。分就这么点不好意思(分实在不好挣)
...全文
63 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huazai434 2009-11-02
  • 打赏
  • 举报
回复
啊哈!我在看的就是这个。谢谢啦!分都给你。嘿嘿。
hhwei1985 2009-11-02
  • 打赏
  • 举报
回复
呵呵
UpdateWindow是更新控件中的数据,不是窗口重绘;
Invalidate(FALSE)是重绘整个矩形区域;
明白了吧?
wwwxhb 2009-11-02
  • 打赏
  • 举报
回复
建议看一下孙鑫的视频,貌似10章有讲,看了你就会明白的。
huazai434 2009-11-02
  • 打赏
  • 举报
回复
太感谢了!!!

%>_<% %>_<%
不知道为什么把updatewindow换成invaludedate就好了呢?这个函数是干什么的呢?
我只看了三天的vc视频教程。。。。。
fandh 2009-11-02
  • 打赏
  • 举报
回复
if (CHOICE==1 )

我给你加了30分!
fandh 2009-11-02
  • 打赏
  • 举报
回复
if CHOICE=1
画直线;
if CHOICE=2
画圆;

应该是
if CHOICE==1
画直线;
if CHOICE==2
画圆;

fandh 2009-11-02
  • 打赏
  • 举报
回复
UpdateWindow换成Invalidate(FALSE);
试试

19,468

社区成员

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

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