Und wo wird hier TSkinListBox.Create aufgerufen? Welche Variable hält die erzeugte Instanz? Was für einen Typ hat diese Variable?
Was da im Create passiert, ist wahrscheinlich völlig irrelevant. Die Tatsache, daß du das Window-
Handle abspeicherst, hat mit der Lebensdauer der Instanz nichts zu tun.
Ich hätte jetzt hier so etwas erwartet:
Delphi-Quellcode:
var
SkinListBox: ISkinListBox; // Wichtig! Hier muss eine Interface-Variable stehen. IInterface ginge auch, nicht aber TSkinListBox oder TObject.
...
SkinListBox := TSkinListBox.Create(...);
Wird es auch
InstrumentList: ISkinListBox;
Aber in meiner Anwendung nicht in der TSkinList Classe.
Wird doch von außerhalb aufgerufen...
Delphi-Quellcode:
InstrumentList := CTRL_ListBoxCreate(hMain, PAnsiChar(SKAERO_FOLDER + 'Sound.png'),
145, 62, 610, 268, ID_INSTRUMENTLIST, True, 18, SKAERO_INACTIVECAPTION);
SKAERO_SetAnchorMode(InstrumentList.Handle, ANCHOR_RIGHT);
SKAERO_SetZorder(InstrumentList.Handle, ANCHOR_RIGHT);
InstrumentList.SetFont(SKAERO_CAPTIONFONTHEIGHT, PAnsiChar(SKAERO_TEXTFONT),
SKAERO_ACTIVECAPTION, SKAERO_INACTIVECAPTION, TRUE, 2, 0);
In der
DLL..
Delphi-Quellcode:
function CTRL_ListBoxCreate(hOwner: HWND; FullpathImageName: string; x, y, xW, yH,
ListID: integer; Visible: Boolean; ItemHeight: Integer; BackColor: COLORREF): ISkinListBox; stdcall;
begin
result := TSkinListBox.Create(hOwner, FullpathImageName, x, y, xW, yH,
ListID, Visible, ItemHeight, BackColor);
end;
Zurückgegeben wird ein
handle mit dem ich in der Anwendung
in verbindung mit der übergebenen ID der ListBox arbeite.
Zitat:
Was da im Create passiert, ist wahrscheinlich völlig irrelevant.
In wie fern ?
Du kennst doch die Zusammenhänge nicht wie ich mit den Daten im weiteren verlauf arbeite.
Alles was deklariert wurde wird auch im späteren verlauf verwendet.
Und funktioniert in meiner anderen Anwendung "OHNE"
Dll.
gruss