Building Win32 application via dub
Mike Parker
aldacron at gmail.com
Wed Apr 29 12:22:18 UTC 2020
On Wednesday, 29 April 2020 at 11:55:54 UTC, Sam E. wrote:
> On Wednesday, 29 April 2020 at 10:46:30 UTC, Mike Parker wrote:
>> On Wednesday, 29 April 2020 at 10:44:48 UTC, Mike Parker wrote:
>>
>>> Yeah, it says "WinMain is needed", which has never been true.
>>
>> THere's no need for the def file either.
>
> What's the way to get the hInstance without the use of WinMain?
>
> From Microsoft documentation:
>> hInstance is the handle to the application instance. Get this
>> value from the hInstance parameter of wWinMain.
>
> https://docs.microsoft.com/en-us/windows/win32/learnwin32/creating-a-window
>
> I cannot find a D example using Win32 and the normal main
> function, and while it is working for simple message boxes, as
> soon as I want to do something slightly more complex (using a
> window), an hInstance has to be provided (as far as I
> understand, I'm not that knowledgeable with Win32).
auto hInstance = GetModuleHandleA(null);
It's documented to return HMODULE, but HINSTANCE is the same
thing (all the HANDLE types are void*). Passing null causes it to
return the handle associated with the process, so for the
executable "module", that's what you want (e.g., the process
handle is the module handle). In a DLL, it wouldn't be, as the
DLL would have a different handle than the process.
https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulehandlea
More information about the Digitalmars-d-learn
mailing list