www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Window created with Windows API is not visible

reply solidstate1991 <laszloszeremi outlook.com> writes:
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.
Jun 18 2022
next sibling parent reply Vinod K Chandran <kcvinu82 gmail.com> writes:
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.
Jun 18 2022
parent solidstate1991 <laszloszeremi outlook.com> writes:
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.
Jun 18 2022
prev sibling next sibling parent reply rikki cattermole <rikki cattermole.co.nz> writes:
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.
Jun 18 2022
parent reply solidstate1991 <laszloszeremi outlook.com> writes:
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.
Jun 18 2022
next sibling parent rikki cattermole <rikki cattermole.co.nz> writes:
A white content area, means that you didn't draw something.

As long as the border ext. is showing up, you're ok.
Jun 18 2022
prev sibling parent Adam Ruppe <destructionator gmail.com> writes:
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
Jun 18 2022
prev sibling parent solidstate1991 <laszloszeremi outlook.com> writes:
It seems I solved most of the problems by modifying event 
handling.
I'll continue solving further ones and adding more functionality.
Jun 20 2022