我想知道windows form应用程序,win32application和控制台之间有什么区别,我知道windows form应用程序和win32应用程序都是gui工具,但我想知道何时使用其中一个,而且我可以将控制台应用程序转换为Windows窗体应用程序吗?
答案 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一样。
另请注意
main
。但是,这种不符合要求的行为很容易解决。只需在链接器选项中指定/entry:mainCRTStartup
。GNU工具没有这样的问题,即g ++。
答案 1 :(得分:4)
答案 2 :(得分:3)
“Windows窗体应用程序”是一个GUI .NET应用程序。
“win32应用程序”是本机Windows GUI应用程序。
“控制台应用程序”是没有GUI的本机应用程序。
我真的不明白你将一种应用程序“转换”为另一种应用程序的意思。但。如果您正在谈论使用某些IDE并将项目转换为另一个项目:是的,这是可能的。主要区别在于您将应用链接到的.DLL。例如,您可以将打开为“控制台”的项目配置为“win32”。这不是很容易,但仍然有可能。如果您想知道您安装的给定现有应用程序是否可以转换,则为否: