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

sar*_*ara 7 c++ windows console-application win32gui

我想知道windows表单应用程序,win32application和控制台之间有什么区别,我知道windows表单应用程序和win32应用程序都是gui工具,但我想知道何时使用一个而不是另一个,我可以转换控制台应用程序到Windows窗体应用?

Che*_*Alf 11

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

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

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

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

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

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

注意

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

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

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

另请注意

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

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


ric*_*d.g 5

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


Jea*_*nès 5

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

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

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

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

  • 控制台应用程序通常附加到控制台窗口。但是,他们可以完全访问 Win32 API,并且可以创建其他 GUI 窗口。 (2认同)