I was hoping to try ti get a first pass at a native Win32 form going this weekend, but I am at a wall of misunderstanding that makes the great wall of China look like a parking curb. Maybe someone can help me out here.
Sorry for the long message, but it's the only way I can keep all this straight. It won't fit into my head!
This is an attempt to figure out the heirarchy of forms.pp as it stands now:
Forms.pp
Interface
Uses
controls.pp
Interface
Uses
glib.pp - GUI Toolkit Specific (Why is this here?)
gdk.pp - GUI Toolkit Specific (Why is this here?)
gtk.pp - GUI Toolkit Specific (Why is this here?)
sysutils.pp - No GUI Toolkit specific dependencies
Classes.pp - No GUI Toolkit specific dependencies
vclglobals.pp
Interface
Uses
glib.pp - GUI Toolkit Specific (Why is this here?)
gdk.pp - GUI Toolkit Specific (Why is this here?)
gtk.pp - GUI Toolkit Specific (Why is this here?)
End vclglobals.pp
Graphics.pp
Interface
Uses
sysutils.pp - No GUI Toolkit specific dependencies
classes.pp - No GUI Toolkit specific dependencies
vclglobals.pp
Interface
Uses
glib.pp - GUI Toolkit Specific (Why is this here?)
gdk.pp - GUI Toolkit Specific (Why is this here?)
gtk.pp - GUI Toolkit Specific (Why is this here?)
End vclglobals.pp
Implementation
Uses
Interfaces.pp
Interface
Uses
GTK - gtk - GUI Toolkit Specific
GTK - gdk - GUI Toolkit Specific
GTK - glib - GUI Toolkit Specific
GTK - gtkint - GUI Toolkit Specific
GTK - Controls - Stop drilldown to prevent
recursion
QT - messages - ???
End interfaces.pp
lmessages.pp
Interface
Uses
Classes - No GUI Toolkit specific dependencies
vclglobals
Interface
Uses
glib.pp - GUI Toolkit Specific (Why is this
here?)
gdk.pp - GUI Toolkit Specific (Why is this
here?)
gtk.pp - GUI Toolkit Specific (Why is this
here?)
End vclglobals.pp
End lmessages.pp
controls.pp - Stop drilldown to prevent recursion
Includes
graphicsobject.inc
graphic.inc
bitmap.inc
pen.inc
brush.inc
font.inc
canvas.inc
End grphics.pp
LMessages.pp
utrace.pp
Implementation
Uses
Interfaces.pp
Interfaces.pp
Interface
Uses
GTK - gtk - GUI Toolkit Specific
GTK - gdk - GUI Toolkit Specific
GTK - glib - GUI Toolkit Specific
GTK - gtkint - GUI Toolkit Specific
GTK - Controls - Stop drilldown to prevent recursion
QT - messages - ???
End interfaces.pp
Includes
controlsproc.inc
contolcanvas.inc
scrolledwindow.inc
wincontrol.inc
control.inc
customcontrol.inc
End Controls.pp
vclglobals.pp
Interface
Uses
glib.pp - GUI Toolkit Specific (Why is this here?)
gdk.pp - GUI Toolkit Specific (Why is this here?)
gtk.pp - GUI Toolkit Specific (Why is this here?)
End vclglobals.pp
classes.pp - No GUI Toolkit specific dependencies
sysutils.pp - No GUI Toolkit specific dependencies
graphics.pp
Interface
Uses
sysutils.pp - No GUI Toolkit specific dependencies
classes.pp - No GUI Toolkit specific dependencies
vclglobals.pp
Interface
Uses
glib.pp - GUI Toolkit Specific (Why is this here?)
gdk.pp - GUI Toolkit Specific (Why is this here?)
gtk.pp - GUI Toolkit Specific (Why is this here?)
End vclglobals.pp
Implementation
Uses
Interfaces.pp
Interface
Uses
GTK - gtk - GUI Toolkit Specific
GTK - gdk - GUI Toolkit Specific
GTK - glib - GUI Toolkit Specific
GTK - gtkint - GUI Toolkit Specific
GTK - Controls - Stop drilldown to prevent recursion
QT - messages - ???
End interfaces.pp
lmessages.pp
Interface
Uses
Classes - No GUI Toolkit specific dependencies
vclglobals
Interface
Uses
glib.pp - GUI Toolkit Specific (Why is this here?)
gdk.pp - GUI Toolkit Specific (Why is this here?)
gtk.pp - GUI Toolkit Specific (Why is this here?)
End vclglobals.pp
End lmessages.pp
controls.pp - Stop drilldown to prevent recursion
Includes
graphicsobject.inc
graphic.inc
bitmap.inc
pen.inc
brush.inc
font.inc
canvas.inc
End grphics.pp
lMessages.pp
Interface
Uses
Classes - No GUI Toolkit specific dependencies
vclglobals
Interface
Uses
glib.pp - GUI Toolkit Specific (Why is this here?)
gdk.pp - GUI Toolkit Specific (Why is this here?)
gtk.pp - GUI Toolkit Specific (Why is this here?)
End vclglobals.pp
End lmessages.pp
Implementation
Uses
interfaces.pp
Interface
Uses
GTK - gtk - GUI Toolkit Specific
GTK - gdk - GUI Toolkit Specific
GTK - glib - GUI Toolkit Specific
GTK - gtkint - GUI Toolkit Specific
GTK - Controls - Stop drilldown to prevent recursion
QT - messages - ???
End interfaces.pp
Includes
form.inc
CustomForm.inc
application.inc
End Forms.pp
My first point of confusion comes with controls.pp. Why are the glib.pp, gdk.pp and gtk.pp units in the Interface Uses section of this unit? Doesn't this break the toolkit independence? The same holds true for vclglobals.pp. Are they even used anywhere, or could they be leftovers?
The second area is also in vclglobals. The csxxxxx (Class Style ???) constants defined there are, I assume, lazarus specific. The interface for each toolkit will have to map these constants to corresponding toolkit contants, where there is a match. Is this correct?
Next in the list is the graphics.pp file. Are all of the colors defined there meant to be Delphi compatible, and therefore native win32 color definitions? Since the gtk color conversion routines in gtkint.pp are private, a win32 version (WinInt.pp??) will not need an equivalent color conversion method, correct?
Lastly, in Forms.pp. I take it that none of the windows concepts of Window Style (the WS_xxxxxx constants such as WS_POPUP, WS_DLGFRAME, etc.) have been implemented yet? I noticed that to get to CreateWindow through the Win32 tree, you had to go all the way to funcs.inc in the fcl.
In closing, it seems I have answered some of my own questions just by writing all of this out. With the exception of the questions about controls.pp and vclglobals.pp using the gtk lib files without going through Interfaces.pp, it would seem I can truly let Interfaces.pp handle this, as long as I can manage without using anything not implemented already in gtk (such as the WS_xxxx window styles). It's only a matter of defining the correct InterfaceObject (no small task, it seems the GTK DLL's are doing a _lot_ of the work I'll need to do by hand).
I'll get the hang of this someday ;^)
Jeff.