activex 如何调用OnDraw函数

 我来答
寒武之纪
2012-02-24 · TA获得超过475个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:156万
展开全部
在最初显示或重新绘制 ActiveX 控件时,控件遵循与使用 MFC 开发的其他应用程序相似的过程,但有一个重要的区别:ActiveX 控件可以是活动状态或非活动状态。

活动控件在 ActiveX 控件容器中由子窗口表示。与其他窗口一样,活动控件负责在接收到 WM_PAINT 消息时绘制自身。控件的基类 COleControl 在其 OnPaint 函数中处理此消息。此默认实现调用控件的 OnDraw 函数。

非活动控件的绘制过程与此不同。当控件处于非活动状态时,其窗口不可见或不存在,因此无法接收绘制消息。相反,控件容器直接调用控件的 OnDraw 函数。此过程与活动控件的绘制过程不同,因为从不调用 OnPaint 成员函数。

如以上段落所讨论的,如何更新 ActiveX 控件取决于控件的状态。但是,由于框架在两种情况中都调用 OnDraw 成员函数,因此在此成员函数中添加大部分绘制代码。

OnDraw 成员函数处理控件的绘制。当控件处于非活动状态时,控件容器调用 OnDraw,并传递控件容器的设备上下文和该控件所占据的矩形区域的坐标。

框架传递给 OnDraw 成员函数的矩形包含控件占据的区域。如果控件处于活动状态,则左上角是 (0, 0),并且传递的设备上下文是包含该控件的子窗口的设备上下文。如果控件处于非活动状态,则左上角的坐标不一定是 (0, 0),并且传递的设备上下文是包含该控件的控件容器的设备上下文。

其余请见参考资料部分。
下面是咱自己的心得:就像大多数GUI一样,当图形需要初始化时,OnDraw函数响应ONPAINT消息,工程起初生成的三大基类之中的COleControl调用OnPaint方法,OnPaint方法调用OnDraw函数执行绘制;如果控件已被初始化且重新回到活动状态时(重绘),就直接调OnDraw方法。

参考资料: http://msdn.microsoft.com/zh-cn/library/cc451433(v=vs.71).aspx

灵魂的羊
2012-02-24
知道答主
回答量:47
采纳率:0%
帮助的人:25万
展开全部
写好OnDraw();
在OnInititalUpdate()里面调用就好啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式