2010-02-01 56 views
3

当我创建'Windows窗体应用程序'时,生成的程序是一个托管的程序。创建一个'Win32应用程序'的结果是一个本地的,但是当我尝试添加一个表单时,如果我继续,我会通知该项目将转换为CLI。如何使用Visual C++ 2008 Express Edition设计本地Windows GUI?我可能在这里很愚蠢,但我无法弄清楚。如何在Visual C++中创建非托管Windows GUI?

+0

你是如何“添加表单”? – 2010-02-01 23:30:36

回答

1

里德•科普塞,MFC将创建Windows平台上的本机非托管GUI的 “默认” 的方式。但是,MFC不包含在Visual Studio Express中。因此,您需要升级到完整版本,或者您可以使用免费提供的C++ GUI库(如wxWidgets)进行研究。

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

你也可以深入到“裸机”和代码的权利在Win32 API一下,也许从common controls library一些帮助。但是,你会进入一个痛苦的世界;)

+0

啊,我明白了。我希望有一个非MFC本地设计师。我会研究wxWidgets或qt。感谢所有回复。 – Dataflashsabot 2010-02-01 23:16:01

+6

*是*非MFC本地设计师。它被称为资源编辑器。 – 2010-02-01 23:38:11

2

你只需要避免托管库。很可能,这意味着使用MFC来代替Windows窗体。有关详细信息,请参阅MSDN's MFC pages

不幸的是,VC++ Express版本不支持MFC直接,所以你必须受到更多的限制。使用Express Edition可能会出现compile MFC projects,但您将失去所有的向导等。如果您认真对待非托管GUI开发,则应考虑升级到更高级别的SKU。


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

+0

谢谢,但MFC不包含在Express中。我想我可以使用wxWidgets或类似的东西,但那不是很“可视化”。 – Dataflashsabot 2010-02-01 23:08:00

+0

它可能不是可视化的,里德告诉你如何用VS 2005 Express编写GUI C++应用程序。 – 2010-02-01 23:11:09

+0

@Dataflashsabot:那么我建议考虑Qt。制作本地C++ GUI非常好,并且包含一个设计器。我编辑了我的答案以反映此选项,并且包含链接 – 2010-02-01 23:12:17

0

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

0

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

或者,您可能需要使用WTL - 尽管这手,而不是使用向导和这样的基本就是写所有的代码。

+0

Express Edition中不存在“向导” - 不幸的是,MFC(和WTL)代码在VC++ Express中不直接支持。 – 2010-02-01 23:06:45

+0

@ Reed:我必须为此表达你的意见。我曾经玩过Express Edition,似乎记得它可以创建一个MFC项目,但是1)它可能是我的坏记忆,或者2)由于我已经安装了另一个版本而产生的东西。我的回忆是它只支持DLL而不是静态链接的DLL,但这是主要的限制。 – 2010-02-01 23:08:50

0

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

0

最上面的答案解释的东西相当不错 - 如果你想看看创造一个纯粹的Win32本机应用程序形式(无MFC/WTL等)来看看这里的教程:http://www.zetcode.com/tutorials/winapi/初学者。这是我第三次链接到这个网站,但他的教程非常好。

注意 - 在这个阶段除了结果之外没有任何关于它的“可视化” - 它全部在代码中完成,尽管这说我不认为它太困难了。这绝对是很好的编程经验。

0

Windows Forms是一个用托管代码编写的GUI框架,因此您不能在本机应用程序中使用Forms。

对于本机应用程序,您必须创建窗口。 由Charles Petzold编写的Windows是这方面的权威性书籍。与使用良好的框架相比,这是相当多的工作。 MFC(Microsoft基础类)是本地Windows GUI的框架。我不知道它是否来自VC++ Express。

7

可以使用MFC,WTL或直接的Win32 API。如果不切换到托管代码,您不能使用表单(或任何.NET)。

+1

添加到答案 - CreateWindow和DialogBox类型函数可能需要一个对话框模板资源。您可以使用资源编辑器使用图形窗口编辑器添加新的和编辑。 – 2010-02-01 23:32:53

+0

XAML怎么样?任何具体的原因,在这个问题和其他类似问题中都没有提及它? – 2013-04-23 06:49:12

2

这是对链接问题的回答。不幸的是,罗伯特哈维因为认为这是重复的而被封闭。这不是,对不起鲍勃。

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

+0

Upvoting只是因为我完全恨它,当mods盲目地做这样的事情。当我的答案与另一个被错误地判断为“完全重复”的问题合并时,我个人最喜欢的是赞成脱离主题(提示:如果任何答案奇迹般地变成脱离主题,那么问题不是重复的,不是重要的是5个随机SE用户的想法)。 – 2013-12-10 22:59:48

+0

为了他们的信誉,他们似乎在近期变得越来越好。为什么他们不允许他们的决定输入对我来说是个谜。 – 2013-12-12 02:21:04

0

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

个人和教育许可证是免费的。 '专业'和'独立'牌照相对便宜。