Thema: Delphi createDesktop & Forms

Einzelnen Beitrag anzeigen

delphis spassbremse

Registriert seit: 7. Jun 2007
Ort: Enger
104 Beiträge
 
Delphi 7 Enterprise
 
#1

createDesktop & Forms

  Alt 13. Jan 2009, 17:14
Hallo,

ich habe mal wieder eine Frage, die
mich heute schon etliche Stunden beschäftigt hat.

Und zwar ich möchte einen neuen Desktop mit createDesktop erstellen.
Soweit kein Problem. Ich habe mir mal
Luckies Code angeschaut [hier].

Wenn ich aber die Procedure in eine VCL - Anwendung einbaue, dann funktioniert sie nur soweit,
dass der Neue Desktop erstellt wird und dann auch gar nix mehr macht.

Ich habe raugefunden, dass nach setThreadDesktop(), getLastError <> 0 zurückgibt.
Den ErrorCode 1447 (ERROR_NO_SCROLLBARS) (laut msdn) finde ich relativ komisch.
(Normalerweise müsste ich eventuell 170 für Thread in use)

Hat von euch jemand eine Idee was da schief laufen könnte?

Delphi-Quellcode:
procedure BaitAndSwitchDesktop;
var
  OldDesk : HDESK;
  NewDesk : HDESK;
begin
  OldDesk := GetThreadDesktop(GetCurrentThreadID);
  NewDesk := CreateDesktop(PChar('Foobar'), nil, nil, 0, DESKTOP_CREATEWINDOW or
    DESKTOP_SWITCHDESKTOP or DESKTOP_CREATEMENU or DESKTOP_WRITEOBJECTS, nil);
  if NewDesk <> 0 then
  begin
    showmessage(inttostr(windows.GetLastError)); // Gibt 0 zurück
    showmessage(booltostr(Windows.SetThreadDesktop(NewDesk)));
    showmessage(inttostr(windows.GetLastError)); // Gibt 1447 zurück
    Windows.SwitchDesktop(NewDesk);

      // Form erstellen

    Windows.SwitchDesktop(OldDesk);
    Windows.SetThreadDesktop(OldDesk);
    CloseDesktop(NewDesk);
  end;
  CloseDesktop(OldDesk);
end;
Grüße

Björn
  Mit Zitat antworten Zitat