Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

If you add a manifest you’ll get post-Windows-2000 GUI styling.


You can do it without a manifest too, it involves calling "CreateActCtxA" and "ActivateActCtx" with the appropriate Activation Context object. Manifest file is much easier.


But why would you possibly want that? ;)


I’d be interested in seeing a PR for that. I’ve always found the manifests a bit confusing.


can you elaborate?


As well as information about side by side assemblies (ie: library versions), a Windows manifest file has various settings and a declaration of compatible versions of Windows that affect Windows' handling of the app, such as whether it can handle paths over MAX_PATH, if it is hi-dpi aware, or if it knows about themed controls.

https://learn.microsoft.com/en-us/windows/win32/sbscs/applic...

If an EXE doesn't have a manifest file, Windows assumes that it's ancient, so it falls back to conservative defaults like ye olde USER controls to try and avoid breaking it.


In my experience, the wxWidgets documentation and forums are pretty good resources for Windows manifest files. YMMV.

An example from one of my projects: https://pastebin.com/Jvjn5C6S

You need to reference it from your resource source like so: https://pastebin.com/8FUi4tMz

And then compile that into an object file with windres: x86_64-w64-mingw32-windres rsrc/metadata/windows.rc -o winbuild/windowsrc.o

And link it with your project like you would any other object file.


The entire structure is also documented on MSDN with all possible values - https://learn.microsoft.com/en-us/windows/win32/sbscs/applic....

While MSDN is a bit impractical to browse (there's simply so much stuff in there) it's usually the best place to go to for documentation when doing Windows dev.


Strongly disagree. There's way too much mystery and magic number usage in the official documentation.


The magic numbers (hashes and UUIDs) sort of make sense because there's a slightly adversarial interaction between developers and Microsoft. If you just had a compatibleWindowsMin and compatibleWindowsMax field with version numbers, people would just go ahead and put "9999" in the max field, and then OS upgrades break applications again. By using UUIDs instead, an application developer can't intentionally or unintentionally declare compatibility with unreleased Windows versions.


Can you recommend any good alternatives for someone looking to learn programming using windows APIs?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: