[lazarus] GTK team: please specify!

Micha Nelissen M.Nelissen at student.tue.nl
Sun Nov 2 13:20:40 EST 2003


Mattias Gaertner wrote:

> On Sun, 2 Nov 2003 15:03:10 +0100
> Mattias Gaertner <nc-gaertnma at netcologne.de> wrote:
> 
> 
>>>The WinAPI specifies that GetDC(GetDesktopWindow()) should return a 
>>>device context of the screen. We can use this DC to draw on.
>>
>>Very funny. ;)
>>What has the winapi to do with the gtk?
>>We need the window DC without clipping and we need an event to know, when
>>the gtk has finished painting everything. And during moving we have to
>>paint as well.
>>When we got this, we can omit the paint on every message and we can omit
>>the designer widgets, because the rest is already implemented. This
>>solution would be very near to my initial wish in a former mail.
>>I will do some experiments... 
> 
> 
> Ok. Maybe I found the solution.
> Now to the LCL.
> 
> GetDC will just return the "normal" device context for a window. Under gtk
> this is without the child windows (they are clipped away). 
> The designer needs a DC with childs. Something like GetRawDC or GetWholeDC
> or GetDCForWholeWindow or GetDesignerDC or ... . I guess under win32api this
> is already the default, so you have little to do. If not, how does win32api
> calls it?

This is determined at control creation time, there isn't a seperate 
function for that. CreateWindow help:

----
WS_CLIPCHILDREN: Excludes the area occupied by child windows when 
drawing occurs within the parent window. This style is used when 
creating the parent window.
WS_CLIPSIBLINGS: Clips child windows relative to each other; that is, 
when a particular child window receives a WM_PAINT message, the 
WS_CLIPSIBLINGS style clips all other overlapping child windows out of 
the region of the child window to be updated. If WS_CLIPSIBLINGS is not 
specified and child windows overlap, it is possible, when drawing within 
the client area of a child window, to draw within the client area of a 
neighboring child window.
----

Where does that leave us?

OTOH, it is possible to create transparent window in the win32 
interface. Is it too in gtk?

Micha.







More information about the Lazarus mailing list