Einzelnen Beitrag anzeigen

NicoDE
(Gast)

n/a Beiträge
 
#3

Re: Erfolgsmeldung bei EnumChildWindows

  Alt 19. Mär 2004, 19:27
Du solltest/darfst nicht auf Stack-Variablen ausserhalb der Funktion zugreifen.

Wie Christian schon vorgeschlagen hat:
Delphi-Quellcode:
type
  PMyEnumCildParam = ^TMyEnumCildParam;
  TMyEnumCildParam = record
    Done: Boolean;
  end;

function MyEnumChildProc(Wnd: HWND; Param: PMyEnumCildParam): LongBool; stdcall;
begin
  If Wnd = Form1.Edit1.Handle then
  begin
    Form1.Edit1.Text := 'Done';
    Param.Done := True;
    Result := False;
  end
  else
  begin
    EnumChildWindows(Wnd, @MyEnumChildProc, LPARAM(Param));
    Result := True;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Param: TMyEnumCildParam;
begin
  Param.Done := False;
  EnumChildWindows(Handle, @MyEnumChildProc, LPARAM(@Param));
  if Param.Done then
    ShowMessage('Done')
  else
    ShowMessage('Nope');
end;
  Mit Zitat antworten Zitat