无法理解普通 c++ 与 vc++、win32 编程、mfc、win32 api、CLI 之间的关系 [关闭]

Posted

技术标签:

【中文标题】无法理解普通 c++ 与 vc++、win32 编程、mfc、win32 api、CLI 之间的关系 [关闭]【英文标题】:Cannot understand relationship between normal c++ vs vc++, win32 programming, mfc, win32 api, CLI [closed] 【发布时间】:2012-05-10 07:46:10 【问题描述】:
    什么是mfc、cli和win32?您能帮我了解一下 Visual Studio 是如何与这 2 个相关的吗? c++ 和 vc++ 的区别是什么?当我们说“vc++”时,它是否意味着默认的对话框、表单、窗口和其他 gui 元素? 如果我在 Visual c++ 中创建一个基于控制台的应用程序,而不使用任何 win32 编程,它是否有资格作为一个可视化应用程序? 框、对话框、表单和其他 gui 属于 win32 编程还是它们不同? 除了基于控制台和 win32 编程之外,c++ 中还有哪些其他类型的编程?

请尽量简单。

【问题讨论】:

为什么是近距离投票?对我来说似乎是一个真正的问题。我可以理解对这些话题感到困惑。 @DavidM:在 meta 上有人提到“yoru 搜索引擎不是这样”和“它不是所有事物的列表”之类的。 @DavidM:这不是问题。这是许多不同的问题。 【参考方案1】:

C++ 是一种编程语言。它已编译,这意味着您需要一个编译器将源代码转换为可执行程序。

VC++是微软的一款编译器,运行在MS Windows上,将C++代码编译成MS Windows操作系统的可执行程序。

您可以使用 C++ 编写各种程序,从设备驱动程序到网络浏览器插件。好吧,如果您愿意,您甚至可以编写自己的操作系统。

为了简化您的开发,编译器开发人员(和第三方)编写了各种有用的库。 MFC 是一个库示例(更准确地说是一个框架),它可以帮助您在 MS Windows 上开发“可视化应用程序”。市场上还有其他 MFC 替代品。

现在来回答你的问题:

    MFC 是 Microsoft 用于在 Visual C++ 中创建可视化应用程序的框架。 CLI 是命令行界面。 CLI 应用程序通常没有任何可视元素,除了命令行输入——它们大多也没有任何菜单和鼠标交互。 Win32 是 32 位 MS Windows 应用程序的总称。你也可以为 64 位 Windows 开发。

    C++ 是一种语言。 VC++ 是一个编译器。除了 C++ 中提供的功能之外,此编译器还提供了一些附加功能,以简化 MS Windows 开发,特别是通过 MFC。

    “可视化应用程序”没有标准术语,但笼统地说,如果没有图形元素,您的应用程序将不会被视为可视化应用程序。

    对话框、表单和其他 GUI 元素确实属于 Win32 编程。如前所述,您可以使用 MFC 来简化此类 Win32 应用程序的开发。

    超越基于控制台和 Win32 编程:我认为您会因为在 IDE 中创建新 C++ 项目时 Visual Studio 附带的各种“向导”而感到困惑。您的安装中可能配置了几种类型的向导;仅举几个例子:您还可以将 ActiveX 和 MFC 控件作为您要创建的“应用程序类型”。

【讨论】:

在这种情况下,CLI 可能指的是 C++CLI 而不是命令行界面。 @jaywalker 谢谢。所以据我了解,微软有自己的编译器,称为 VC++,它与许多其他东西一起包含在 .net 框架中。它可以制作非常好的应用程序,如 1) 我们可以在其中使用一个非常好的和广泛的库,称为 Base CLass 库。 2) 编译时,它会生成一个独立于平台的可移植中间代码,称为字节码(也称为通用中间语言)。此 CIL 是通用语言基础结构规范 (CLI) 的 Microsoft 实现。 3) 在其他类型中,我们可以制作被称为 Win32 的应用程序,因为它们是由 32 位内存地址组成的。此外,win32编。包括使用各种 gui 元素进行编程。我对吗?现在,我的问题在 a) mfc 和 bcl 之间有所不同。 b) cts 和 cil。 另外,Win32 编程的定义是否更多地关注具有 32 位地址的应用程序”而更少关注“包含 gui 元素的应用程序”,还是反之亦然? @JASMEETBHATIA:这不是论坛。您不会在 cmets 中提问。您可以按 按钮提问。最好在搜索完答案之后。【参考方案2】:

好的,让我们从 Windows 开始。 Windows 是使用 C/C++ 构建的。您可以使用 Windows 提供的功能编写 Windows 程序 - 这是 Win32

MFC = Microsoft Foundation Classes - 一个环绕 Win32 接口的 C++ 类库。它是一个非常薄的包装器,这意味着您仍然可以(有时必须)访问 Win32 函数。按钮、对话框等是 Windows 的原始控件。

控制台应用程序设计为在命令行(也称为 dos 框)中运行。您可以使用 Windows 的某些部分,例如进程、文件系统等,但不能使用对话框之类的“光学东西”。

VC++ 是一个经常用于 C++ 和 MFC 的术语,或者至少是 Windows 下的 C++。

HTH 一点点。

【讨论】:

命令提示符是not,也称为“dos box”。它被称为命令提示符。控制台应用程序可以显示图形 UI。例如,没有限制控制台应用程序不能调用MessageBox。 VC++ 是一个产品名称。 MFC 是本产品的一部分。 MFC 绝不是一个“瘦” 包装器。例如,WTL 就是。

以上是关于无法理解普通 c++ 与 vc++、win32 编程、mfc、win32 api、CLI 之间的关系 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

vc新建工程Win32 Application和Win32 Console Application区别

vc新建工程Win32 Application和Win32 Console Application区别

VC学习笔记---ATL MFC CLR三个库的区别

简述在VC++6.0环境下运行一个C++源程序的步骤

无法在 32 位机器上注册使用 VS2012/VC++ 构建的 COM DLL

Win32 Console Application和cpp 。请问在vc++中写程序,新建Win32 Console Application和新建一个cpp的区