win32应用程序,Windows窗体应用程序和控制台应用程序有什么区别?

时间:2013-12-15 08:47:23

标签: c++ windows console-application win32gui

我想知道windows form应用程序,win32application和控制台之间有什么区别,我知道windows form应用程序和win32应用程序都是gui工具,但我想知道何时使用其中一个,而且我可以将控制台应用程序转换为Windows窗体应用程序吗?

3 个答案:

答案 0 :(得分:10)

Windows窗体是指.NET应用程序。它不是直接基于本机Windows API,而是基于.NET基础结构。其中包括虚拟机。

Win32 通常是指32位Windows API。但是,_WIN32宏是为32位和64位编程定义的。作为Visual Studio项目类型,它包括GUI和控制台子系统API级程序。

Windows子系统是可执行文件头中的一个小整数值,用于告诉Windows该程序需要哪种服务。可以通过例如检查该值。微软的dumpbin计划,例如dumpbin c:\windows\notepad.exe /headers | find "ubs"。在Windows 9x中,dumpbin输出可通过文件预览功能获得,但该功能已停止使用。

Windows中的每个进程都可以与一个,最多一个控制台窗口相关联。

GUI子系统表示Windows将 NOT 尝试使用关联的控制台窗口装备每个实例。但是,该过程本身可以创建控制台窗口。通常这个子系统用于具有图形用户界面的普通程序(因此,“GUI”),并且对于大多数链接器,它被指定为“窗口”。

控制台子系统表示Windows将尝试使用关联的控制台窗口装备每个实例,并在必要时创建一个新窗口。

请注意

  • 可以将相同的源代码构建为控制台或GUI子系统。这非常容易。只需更改子系统规范。

  • GUI子系统可执行文件具有标准流,就像控制台子系统可执行文件一样。

  • 控制台子系统可执行文件可以呈现图形用户界面,就像GUI一样。

另请注意

  • 对于GUI子系统构建,Microsoft的工具默认不接受标准C ++ main。但是,这种不符合要求的行为很容易解决。只需在链接器选项中指定/entry:mainCRTStartup

GNU工具没有这样的问题,即g ++。

答案 1 :(得分:4)

  1. Windows窗体应用程序是使用图形编程接口框架(如.NET,DELPHI或MFC)而不是直接调用win32 API的应用程序。
  2. 另一方面, win32应用程序通常直接处理windows api以自下而上创建应用程序。
  3. 控制台应用程序没有任何图形界面。只有命令行窗口用于数据输入和结果输出。

答案 2 :(得分:3)

“Windows窗体应用程序”是一个GUI .NET应用程序。

“win32应用程序”是本机Windows GUI应用程序。

“控制台应用程序”是没有GUI的本机应用程序。

我真的不明白你将一种应用程序“转换”为另一种应用程序的意思。但。如果您正在谈论使用某些IDE并将项目转换为另一个项目:是的,这是可能的。主要区别在于您将应用链接到的.DLL。例如,您可以将打开为“控制台”的项目配置为“win32”。这不是很容易,但仍然有可能。如果您想知道您安装的给定现有应用程序是否可以转换,则为否: