Jan hat geschrieben:Was will mir "(EVM Ereignis-Dispatcher)" sagen?
Fehlermeldung EVM Ereignis-Dispatcher kenne ich vor allem mit ActiveX, meistens im Zusammenhang mit Threads
Errorsys : EVM Ereignis-Dispatcher
preview.xbase++.servicelevel1
5. Januar 2009
Calling XBase++ DLL from C# application, possible ?
public.xbase++.generic
25. April 2009
es läuft dabei auf ein Timeing Problem zwischen Windows und Xbase++ Queue hinaus
da du Ownerdraw verwendest wird das (Timeing) Problem noch grösser ... es läuft unter Xbase++ ja nur auf 1 x CPU
Re: Multicore cpu and smp
public.xbase++.generic
18. Dezember 2008
Steffen F. Pirsig
...
- With the EVM we have no experiments made as of yet, but with
owner-drawing an average Xbase++ application may gain performance
we need to investigate into that before 2.0
wenn der Fehler beim Aufbau einer "neuen" Maske, mit mehrer XbpImageButtons, passiert dann solltest du jedem Ownerdraw Part beim Aufbau "mehr Zeit" geben.
Code: Alles auswählen
FOR i := 1 TO 12
oPb := Xbp...():new( ...)
oPB:Caption := ...
oPB:Create()
SLEEP(1)
NEXT
obwohl die angegebene Zeile mit GraCaptionStr() auf die Method o:DRAWTEXT verweist scheint mir das Problem
schon vorher zu liegen wobei ich auf ::TextRect tippe was wohl NIL ist -> ComputeLayout() entspricht dabei der Windows Method Measureitem.
danach folgt Code zur Berechnung für ::CaptionLayout. der Code der dort steht "kostet" Zeit und ist im Prinzip "unsinnig" ...
ein Windows
WC_BUTTON kann, wenn die entsprechenden Styles gesetzt werden, OHNE Ownerdraw Bitmap/Icon und Text zusammen auf dem Button haben.
den Text kann man mit Konstanten ausrichten und auch zur Laufzeit ändern ( wenn man will )
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
aber zurück zum Problem ...
ich würde ::TextRect abfangen/prüfen und der Method ComputeLayout() einen Rückgabewert .T./.F. verpassen
Code: Alles auswählen
METHOD XbpImageButton:ComputeLayout( oPS, aInfo )
...
RETURN lRet
METHOD XbpImageButton:Draw( oPS, aInfo )
// Align image and caption
IF ::ComputeLayout( oPS, aInfo )
// Draw button elements