我们可以在基于对话框的 mfc Visual Studio 2010 中绘制形状(线、圆等)吗?

Posted

技术标签:

【中文标题】我们可以在基于对话框的 mfc Visual Studio 2010 中绘制形状(线、圆等)吗?【英文标题】:can we draw shapes (line,circle , etc.) in dialog-based mfc visual studio 2010? 【发布时间】:2011-07-06 12:54:59 【问题描述】:

我想实现一个示波器,通过基于对话框的 MFC Visual c++ 显示一些不同的频率,但是当我搜索太多时,我发现在 Visual c++ 中绘制形状的唯一方法是使用 SDI 或 MDI! 我想知道是否有办法通过基于对话框的 mfc 来绘制我的频率图。 如果有人知道任何参考,如果他/她介绍给我,我真的很感激。

【问题讨论】:

【参考方案1】:

是的,您可以使用 MFC 在对话框中绘图。

简而言之,在对话框上放置一个“静态”(或图像,我不确定)资源,覆盖/派生类并处理 WM_PAINT 消息以绘制图形/示波器。

看看http://www.codeproject.com/KB/miscctrl/High-speedCharting.aspx 是一个很好的例子。

【讨论】:

非常感谢 Max 并感谢您提供链接!我对 Windows 编程非常陌生,特别是 Visual C++,您能否解释一下有关使用静态资源的更多信息。我怎样才能覆盖/派生类?我很抱歉我的愚蠢问题。非常感谢您的帮助。【参考方案2】:

您可以使用GDI 绘制任何东西,如果您打算重复使用它,您甚至可以为您的示波器实现自定义控件,否则您可以只使用静态/图片框架作为容器。

对于可以进行多次更新的东西,例如示波器,您可能需要对绘制的表面进行双重缓冲,否则您会被撕裂。可以在here 找到使用 GDI 的简短概述。

MFC 有自己的 GDI 数据结构和函数等价物,see this。

【讨论】:

以上是关于我们可以在基于对话框的 mfc Visual Studio 2010 中绘制形状(线、圆等)吗?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Community 2015 MFC 空项目无法编译

为啥 CDC::LineTo() 不在 Visual C++ 2015 MFC 对话框中绘制?

MS Visual Studio 2013 MFC 应用程序:为消息/输出服务创建文本框

如何根据用户输入创建动态变化的对话框 Visual Studio 2010 (mfc)

Visual Studio 2008. MFC 事件向导损坏

MFC 对话框的属性页包含文件在 Visual Studio 2008 中显示为空