我想知道什么是Windows窗体应用程序,win32application和控制台之间的区别,我知道窗口窗体应用程序和win32应用程序都是GUI工具,但我想知道什么时候使用其中一个,我可以转换控制台应用程序到Windows窗体应用
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"
dumpbin c:\windows\notepad.exe /headers | find "ubs"
。 在Windows 9x中,通过文件预览功能可以使用dumpbin
输出,但是该功能已停用。
Windows中的每个进程都可以与一个,最多一个控制台窗口关联。
GUI子系统意味着Windows 不会尝试为每个实例提供关联的控制台窗口。 该过程可以创建一个控制台窗口本身。 通常这个子系统用于具有图形用户界面(因此,“GUI”)的普通程序,并且大多数连接器被指定为“窗口”。
控制台子系统意味着Windows将尝试为每个实例提供关联的控制台窗口,如有必要,创建一个新窗口。
注意
可以构建与控制台或GUI子系统相同的源代码。 这非常容易。 只需更改子系统规格。
GUI子系统可执行文件具有标准流,就像控制台子系统可执行文件一样。
控制台子系统可执行文件可以呈现图形用户界面,就像GUI一样。
另请注意
main
。 但是,这种不合格行为很容易解决。 只需在链接器选项中指定/entry:mainCRTStartup
。 GNU工具没有这样的问题,就是g ++。
一个“Windows窗体应用程序”是一个GUI .NET应用程序。
一个“win32应用程序”是一个本地的Windows GUI应用程序。
“控制台应用程序”是没有GUI的本地应用程序。
我真的不明白你的意思是把一种应用“转换”为另一种。 但。 如果您正在讨论使用一些IDE并将项目转换为另一个:是的,这是可能的。 主要区别在于您将应用程序链接到的.DLL文件。 例如,您可以配置打开为“控制台”的项目,以表现为“win32”。 这并不容易,但仍然有可能。 如果您想知道您安装的给定现有应用程序是否可以转换,请输入Nos:NO。