while (GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
...How much more could you own it, really? Is that the LLM talking? while (GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
...How much more could you own it, really? Is that the LLM talking?https://learn.microsoft.com/en-us/cpp/build/reference/subsys...
Pretty sure it just changes out what the default function that is called before winmain. So you probably could just switch out the first function called (dont remember the cli option for that).
Most of the time you just picked the right type at project creation so it would feed correctly into the project solution which would set the right flags on build. But technically you could pick the most basic one and do it all yourself.
To see this, try press Windows+R and try running C:\Windows\System32\autochk.exe.
There are workarounds, but AFAIK there's no officially supported way to launch a native executable.
But that doesn't matter unless you want to avoid creating Win32 process structures, loading default Win32 DLLs, etc., as no windows are created and no messages are dispatched by code other than your own unless peculiar startup code is injected into your process at load time.
In particular, you have access to untranslated messages by default, and if you don't want translated messages to be posted, just don't call TranslateMessage in your message loop.
When you drag on a title bar it runs a modal message loop in kernel mode. Took me a while to figure that one out...
At best, what the article is trying to say is "This is a GUI application, so we need to handle user input and paint request events etc in the main loop. Here is how to set up such a main loop in Win32:"
Win32 messages are higher-level than what you get out of select() and such, but that only serves to make it easier to customize things at the appropriate level of abstraction and with sufficient high-level information.