【问题标题】:How to create and add a custom made component to a Dialog based app (MFC)?如何创建自定义组件并将其添加到基于对话框的应用程序 (MFC)?
【发布时间】:2010-04-16 19:50:26
【问题描述】:

我想制作一个可用于其他应用程序的定制组件(折线图)。

我不知道两件事:

  1. 我应该在哪里使用(在组件类中!)绘图方法,如 FillRect

    还是折线?在我应该在 MESSAGE MAP 中定义和映射它的 OnPaint 处理程序中?会

    从应用程序对话框的 OnPaint 处理程序调用它(OnPaint 处理程序)

    或者从哪里来?

  2. 组件制作完成后如何连接到测试应用程序,这将

    例如是基于对话框的?我应该在哪里实例化该组件?从一个

    MyAppDialog.cpp 的 OnCreate 方法?

几天前我开始在 MFC 中编码,对此我感到很困惑。

提前致谢,

干杯。

【问题讨论】:

    标签: c++ mfc


    【解决方案1】:

    绘制控件的处理方式与它不是控件时的处理方式完全相同。鉴于您使用的是 MFC,这(至少通常)意味着您在 View 类'OnDraw 中进行绘图(MFC 通常在内部处理 OnPaint,因此您很少接触它)。

    在宿主应用程序中插入生成的 ActiveX 控件与插入任何其他 ActiveX 控件一样。假设您在 Visual Studio 中进行开发,您通常会通过打开对话框、在对话框内单击鼠标右键并在弹出的菜单中单击“插入 ActiveX 控件...”来完成此操作。从列表中选择您的控件,它将为控件和代码生成一个包装类,以根据需要创建该类的对象。从对话框代码的角度来看,它就在那里,您可以像使用任何其他控件一样使用它。

    【讨论】:

    • 问题是我正在使用基于对话框的应用程序,但其中没有 OnDraw 方法,因为没有 myAppView 和 myAppDocument classes。我什至不知道我应该在我的组件类中继承哪个类。顺便说一句,我不是要制作 ActiveX 控件,而只是制作一个 Cpp 文件,稍后将使用它。也许这里有些事情我完全错了,如果我错了,我很抱歉。感谢您为帮助我所做的努力!
    • 如果您想在对话框中进行自己的绘图,您真的想在控件中进行。
    【解决方案2】:

    要在MFC中创建新组件,必须从窗口类(CWND)创建一个类,

    之后,您可以为组件和方法使用 MessageMap,还可以覆盖 CWND::OnDraw 方法来绘制您想要的东西。 在此之前,我建议您查看设备上下文

    http://msdn.microsoft.com/en-us/library/azz5wt61(VS.80).aspx

    祝你好运朋友。

    【讨论】:

      猜你喜欢
      • 2013-08-08
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 2017-09-04
      相关资源
      最近更新 更多