方法如下:
GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);
用双缓冲,效果比较好。
微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
应该是你画图的函数有问题,你这部分看起来是没错的.
updatedata()这个是当参数为TRUE时,得到你控件中的内容,就是比如你的EDIT控件里输入数据后,如果你不UpdateData(),就得不到新输入的.
Button的代码你右键点Button,然后点"属性",然后找"事件",那些是对应的动作,比如单击是Click什么的,在那里面添加对应事件的操作代码就OK了
-------------------------------------------
补充:
把你画图那部分好好看看,估计就是在那的错误
1、首先要知道,绘制的图并不是所有都显示了的,例如:在OnDraw中画了两个矩形,在一次重绘中虽然两个矩形的绘制函数都有执行,但是很有可能只有一个显示了,这是因为MFC本身为了提高重绘的效率设置了裁剪区,裁剪区的作用就是:
只有在这个区内的绘图过程才会真正有效,在区外的是无效的,即使在区外执行了绘图函数也是不会显示的,因为多数情况下窗口重绘的产生大多是因为窗口部分被遮挡或者窗口有滚动发生,改变的区域并不是整个图形而只有一小部分,这一部分需要改变的就是pDC中的裁剪区了。
因为显示比绘图过程的计算要费时得多,有了裁剪区后显示的就只是应该显示的部分,大大提高了显示效率。
2、其次,这个裁剪区是MFC设置的,它已经提高了显示效率,在进行复杂图形的绘制时进一步提高效率就只有去掉在裁剪区外的绘图过程了,可以先用pDC->GetClipBox()得到裁剪区,然后在绘图时判断你的图形是否在这个区内,如果在就画,不在就不画,这样做就绘图效率有提高。
如果是整个窗口都要重画用 Invalidate
刷新部分区域用 InvalidateRect
仅是部分区域需要重画,用了 Invalidate,浪费效率,并且显示效果不好。
画图语句要写在 OnPaint 事件里面
Invalidate()
试试这个函数
Invalidate();