ich baue eine Komponente die alle ChildWindows eines Fensters anzeigt.
Dazu hab ich eine Function aus der Schweiz (etwas abgeändert,aber nur bei LinesAdd...) :
Delphi-Quellcode:
function EnumProc(wnd: HWND; Lines: TStrings): BOOL; stdcall;
var
buf, Caption: array[0..255] of char;
classname : PChar;
begin
Result := True;
GetClassName(wnd, buf, SizeOf(buf) - 1);
SendMessage(wnd, WM_GETTEXT, 256, Integer(@Caption));
GetClassName(wnd,classname,10);
Lines.Add(Format(' %s : %d , Caption: %s ',
[buf, wnd, Caption]));
end;
Die funktioniert auch prima aber meine Komponente hat einen eingebauten Timer in dem etwa das steht :
Delphi-Quellcode:
procedure TMeinControl.Timen(Sender : TObject);
begin
// FControl : TComboBox;
FControl.Clear;
EnumChildWindows(Parent.Handle, @EnumProc, Integer(FControl.Items)); //Parent.Handle nur zur Probe
// Unwichtiges ausgelassen
end;
aber wenn ich diese Komponente auf mein Formular mache bekomme ich nach kurzer ZEit einen OverflowError
Weis jemand woher der kommen kann ?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."