Thread overview
Window created with Windows API is not visible
Jun 18, 2022
solidstate1991
Jun 18, 2022
Vinod K Chandran
Jun 18, 2022
solidstate1991
Jun 18, 2022
rikki cattermole
Jun 18, 2022
solidstate1991
Jun 18, 2022
rikki cattermole
Jun 19, 2022
Adam Ruppe
Jun 20, 2022
solidstate1991
June 18, 2022

Code:

https://github.com/ZILtoid1991/iota/blob/main/inputtest/app.d

https://github.com/ZILtoid1991/iota/blob/main/source/iota/window/base.d#L104

Second one contains the constructor that should make the window without any issues.

When I try to create a window for testing purposes, I get nothing besides of an icon on the taskbar. Once I was able to get a quite broken window to show up, then it doesn't showed up anymore. Calling the API function IsWindowVisible returns true.

June 18, 2022

On Saturday, 18 June 2022 at 21:03:23 UTC, solidstate1991 wrote:

>

It seems that you are created a layered window. So chances are there to it become translucent.

June 18, 2022

On Saturday, 18 June 2022 at 21:33:31 UTC, Vinod K Chandran wrote:

>

It seems that you are created a layered window. So chances are there to it become translucent.

Did not set the flags for the layered window style, so I don't know. Might be an event processing error, since in Windows it's a mess.

June 19, 2022
registeredClass.style = 32_769;

Don't use an integer like that, stick with bit wise ors.



LPCWSTR classname = toUTF16z(name);

GC owned memory, that could result in surprises.



const LPWSTR windowname = toUTF16z(title);

Ditto



I'm not sure your window callback procedure is right.

For instance you are not calling DefWindowProc, and you are not handling WM_PAINT in any form.



But one other thing, your approach to the event loop is going to come back to bite you at some point. Windows is based around a push event loop model, not a pull like other system Windowing libraries (such as X11). It can get recursive. I learned this one the hard way.
June 18, 2022
On Saturday, 18 June 2022 at 22:46:45 UTC, rikki cattermole wrote:
> registeredClass.style = 32_769;
>
> Don't use an integer like that, stick with bit wise ors.
>
>
>
> LPCWSTR classname = toUTF16z(name);
>
> GC owned memory, that could result in surprises.
>
>
>
> const LPWSTR windowname = toUTF16z(title);
>
> Ditto
>
>
>
> I'm not sure your window callback procedure is right.
>
> For instance you are not calling DefWindowProc, and you are not handling WM_PAINT in any form.
>
>
>
> But one other thing, your approach to the event loop is going to come back to bite you at some point. Windows is based around a push event loop model, not a pull like other system Windowing libraries (such as X11). It can get recursive. I learned this one the hard way.

Well, it seems like my window callback wasn't right. Now at least I get whiteness instead of nothing. This is going to be a long match.
June 19, 2022
A white content area, means that you didn't draw something.

As long as the border ext. is showing up, you're ok.
June 19, 2022
On Saturday, 18 June 2022 at 23:00:36 UTC, solidstate1991 wrote:
> This is going to be a long match.

you might consider using another exisitng lib. my simpledisplay.d does all this and much more for example
June 20, 2022

It seems I solved most of the problems by modifying event handling.
I'll continue solving further ones and adding more functionality.