I want to know what is the difference between windows form application, win32application ana console, i know that both the windows form application and win32 application is gui
Windows Form refers to a .NET application. It's not based directly on the native Windows API, but instead on the .NET infrastructure. Which includes a virtual machine.
Win32 generally refers to the 32-bit Windows API. However, the _WIN32
macro is defined for both 32-bit and 64-bit programming. As a Visual Studio project type it includes both GUI and console subsystem API-level programs.
A Windows subsystem is a small integer value in the executable's header that tells Windows what kind of services this program needs. This value can be inspected via e.g. Microsoft's dumpbin
program, e.g. dumpbin c:\windows\notepad.exe /headers | find "ubs"
. In Windows 9x the dumpbin
output was available via the file preview functionality, but that feature was discontinued.
Each process in Windows can be associated with one, and at most one, console window.
GUI subsystem means that Windows will NOT attempt to outfit each instance with an associated console window. The process can however create a console window itself. Usually this subsystem is used for ordinary programs with a graphical user interface (hence, "GUI"), and with most linkers it's specified as "windows".
Console subsystem means that Windows will attempt to outfit each instance with an associated console window, creating a new one if necessary.
Note that
The same source code can be built as console or GUI subsystem. And that's extremely easy to do. Just change the subsystem specification.
A GUI subsystem executable has standard streams, just as a console subsystem executable has.
A console subsystem executable can present a graphical user interface, just as a GUI one can.
Also note that
main
for a GUI subsystem build. However, this non-conforming behavior is easy to fix. Just specify /entry:mainCRTStartup
in the linker options.There is no such problem with the GNU tools, that is, g++.
A "windows form application" is a GUI .NET app.
A "win32 application" is a native Windows GUI app.
A "console application" is a native app without GUI.
I don't really understand what you exactly mean by "convert" one kind of app to another kind. But. If you are talking about using some IDE and convert a project to another one : YES it is possible. What makes the main difference is the .DLLs you linked your app with. You can configure a project opened as "console" to behave as a "win32" for example. It is not really easy, but it remains possible. Nos if you want to know if a given existing application that you installed can be converted : NO.