c⼀c++ VC++ MFC 关于在Static 控件里面作图的问题 详见问题补充,希望能留下QQ,交流一下

2025-05-21 16:38:25
推荐回答(2个)
回答1:

图层叠加的问题吧!你建立的是单文档视图,在view中又添加了一个CStatic,此static属于view的一个局部窗口,而你在view的OnPaint中画图,也就是当view发现需要重绘时才会在重绘,而且在OnPaint中你获得的是static的DC,在此DC中画,也就是以static的坐标绘制,绘制以后你又移动static,移动static后,当系统发现有地方被覆盖了需要重绘,又会调用static的WM_PAINT消息,所以才会产生这么多的问题(可能我还解释的不全也不完全对,你斟酌着看),我一般会这样处理:

  1. 在view的OnPaint中,用view的dc画,得到static的相对与view的坐标,以此坐标为原点坐标画想在static中绘制的图像。

  2. 自定义一个类CMyStatic继承自CStatic,重写其WM_PAINT消息,在其消息处理函数中绘制我想在此控件中绘制的图像,在view中创建的CStatic就是我自定义的类了。

回答2:

设置风格 把控制置在最前 前面那个方形的背景是什么?
增加VIEW风格WS_CLIPCHILDREN