HI,
I started to implement some WINAPI functions, becouse mwEdit dumps on some unimplemented results.
Since the implementation is platform dependent, this should go to the interface object. The only way to communicate was through sendmesseges. For a few functions I think this is OK, but for loads of API, whrapping parameters in structs an pass them.... nah
This reminded me of a discussion a while ago about an (abstract) baseclass. This could be a way to implenment all these functions. I started on this and committed the basic idea. If peaple have other thoughts I can change it back.
TInterfaceBase has an abstract declaration of
AppTerminate,
DoEvents,
HandleEvents,
Init,
IntSendMessage3,
SetCallback,
RemoveCallbacks
and WINAPI parts are defined in winapih.inc as virtual. Interfacebase.inc
implements all winapih.inc methods like:
procedure TInterfaceBase.MyApiFunc;
begin
end;It has NO code. This way not all functions have to be implemented in the specific platform InterfaceObject. (Thats the reason why they arent abstract)
The platform specific code (in this case GTK) goes in gtkwinapih.inc and gtkwinapi.inc
since these are still object.member functions, they are mapped through
normal calls' in LCLLinux (for now, I still have no idea where this should
go)
by winapih.inc and winapi.inc. The latter one just contains calls like:
procedure MyApiFunc;
begin
TInterfaceBase.MyApiFunc;
end;This way I can now create my own say gtk GetDC and can mwEdit happily draw on it.
Marc
