如何在Visual C ++中创建非托管Windows GUI?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Visual C ++中创建非托管Windows GUI?相关的知识,希望对你有一定的参考价值。

当我创建一个“Windows窗体应用程序”时,生成的程序是一个托管程序。创建“Win32应用程序”会产生本机,但是当我尝试添加表单时,如果我继续,我会通知项目将转换为CLI。如何使用Visual C ++ 2008 Express Edition设计本机Windows GUI?我可能在这里很傻,但我无法理解。

答案

作为Reed Copsey,MFC将是在Windows平台上创建本机非托管GUI的“默认”方式。但是,Visual Studio Express中不包含MFC。因此,您可能需要升级到完整版本,或者您可以考虑使用免费提供的C ++ GUI库,例如wxWidgets

如果你想要一个GUI编辑器,还有wxFormsBuilder

您也可以使用“裸机”和Win32 API的代码,也许可以从common controls library获得一些帮助。但是你将进入痛苦的世界;)

另一答案

我注意到没有人提到JUCE可用于在C ++中构建跨平台用户界面。我觉得这很酷。看起来它已经扩展到支持移动设备,因为我使用它。

个人和教育许可证是免费的。 'Pro'和'Indie'许可证相对便宜。

另一答案

使用MFC,WTL或直接Win32 API。如果不切换到托管代码,则无法使用表单(或任何.NET)。

另一答案

您只需要避免托管库。最有可能的是,这意味着使用MFC作为GUI,而不是Windows Forms。有关详细信息,请参阅MSDN's MFC pages

遗憾的是,VC ++ Express Edition不直接支持MFC,因此您将受到更多限制。使用Express Edition可以使用compile MFC projects,但是你丢失了所有的Wizards等。如果你认真做非托管GUI开发,你应该考虑升级到更高级别的SKU。


另一种选择是使用Qt进行GUI。它现在是LGPL,在商业C ++项目中可以免费使用,并且包括一个完整的设计师。

另一答案

这是相关问题的答案。不幸的是,罗伯特哈维已经关闭了,因为他认为这是重复的。不是,抱歉鲍勃。

创建xll的最佳库是http://xll.codeplex.com。您可以使用它来使用Excel宏创建基本的用户界面。其中一个例子可以在xll/error.cpp的ALERT.FILTER宏中找到

另一答案

您需要使用本机应用程序框架。对于Windows,这意味着MFC或裸Win32库。 WinForms在后台使用.NET库,因此需要进行管理。

另一答案

本机应用程序不使用“表单”。对于本机应用程序,您可以创建,例如,MFC应用程序。如果您希望它类似于基于表单的应用程序,您可以告诉向导您想要一个基于对话框的应用程序,或者(在向导的最后一页)让您的视图派生自CFormView而不是CView。

或者,您可能希望使用WTL - 尽管这意味着手工编写基本上所有代码而不是使用向导等。

另一答案

Windows窗体是作为Microsoft .NET Framework一部分提供的图形应用程序编程接口(API)的名称,通过将现有Windows API包装在托管代码中,提供对本机Microsoft Windows界面元素的访问。

另一答案

上面的大多数答案都很好地解释了 - 如果你想要创建一个纯粹的Win32 Native App表单(没有MFC / WTL等),请看一下这里的教程:http://www.zetcode.com/tutorials/winapi/ for starters。这是我第三次在这里链接到这个网站,但他的教程非常好。

注意 - 在这个阶段,除了结果之外没有任何关于它的“视觉” - 它都是在代码中完成的,尽管这表示我认为它实在太难了。这肯定是很好的编程经验。

另一答案

Windows窗体是用托管代码编写的GUI框架,因此您无法在本机应用程序中使用窗体。

使用本机应用程序,您必须创建窗口。 Charles Petzold对Windows编程是最直接的操作方法。与使用好的框架相比,这是一项很多工作。 MFC(Microsoft基础类)是本机Windows GUI的框架。我不知道它是否带有VC ++ Express。

以上是关于如何在Visual C ++中创建非托管Windows GUI?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Visual C ++中创建一个包含对话框的dll(对于Windows应用程序为Dll)[关闭]

如何在 Visual Studio 2010 C# 中创建具有截止期的报表

如何在visual studio2008中创建,编译和运行C++程序,

如何从 C# 中的非托管内存中读取数据?

如何在 Visual Studio 2017 中创建 C++ Windows 桌面应用程序?

如何调试在 ASP 页中创建的 Visual Studio 6.0 中的 COM 对象?