Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Nicht modales Fenster reagiert nicht mehr

  Alt 27. Mai 2006, 14:54
Der letzte Satz war der entscheidende, denke ich.

Delphi-Quellcode:
        EnableWindow(hDlg, False);
        New(Info);
        Info.hParent := hDlg;
        Info.InfoText := rsWaitPrivileges;
        hWaitDlg := CreateDialogParam(hInstance, MAKEINTRESOURCE(500), hDlg, @waitdlgproc, Integer(Info));
        //Dispose(Info);

        New(ThreadParams);
        ThreadParams.hParent := hDlg;
        ThreadParams.hWaitDlg := hWaitDlg;
        CloseHandle(BeginThread(nil, 0, @Thread, ThreadParams, 0, ThreadID));
Jetzt erstelle ich das Fenster außerhalb des Threads. Allerdings klappt das Zerstören innerhalb des Threads nicht mehr:

Delphi-Quellcode:
function Thread(p: PThreadParams): Integer;
begin
  try
    FillLVGroups(p.hParent, ID_LV_GROUPS);
    FillLVPrivileges(p.hParent, ID_LV_PRIVILEGES);
  except
    on E: Exception do
      DisplayExceptionMsg(p.hParent, E.Errorcode, E.Message, rsErrorGetPrivilegesCap);
  end;

  sleep(5000);
  DestroyWindow(p.hWaitDlg);
  EnableWindow(p.hParent, True);

  Dispose(p);
  result := 0;
end;
GetLastError liefert mir "Zugriff verweigert". Darf ich DestroyWindow nicht in einem anderen Thread aufrufen?

Da hebn wirs:
Zitat:
A thread cannot use DestroyWindow to destroy a window created by a different thread.
Und nu?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat