Einzelnen Beitrag anzeigen

tobster

Registriert seit: 19. Sep 2003
Ort: Schmalkalden
92 Beiträge
 
Delphi XE Starter
 
#3

Re: Bildschirmschoner programmieren: Previewfenster?

  Alt 17. Mai 2004, 17:55
Also an dieser Stelle kann ich doch spontan weiterhelfen, bin nämlich gerade an derselben Stelle, bzw. ein Schritt weiter, weil ich zwar das Preview angezeigt, aber nicht wieder automatisch WEG bekomme...

Hier erst mal, wie ich im DPR auf die Parameter reagiere (Nix wildes soweit):

Delphi-Quellcode:
begin
 if ParamCount > 0 then begin
  showmessage(paramstr(1));
  if (ParamStr(1) = '/s') or (ParamStr(1) = '/S') then begin
   Application.Initialize;
   Application.Title := 'Spectrum Clock';
   Application.CreateForm(Tfrm_ScrSave, frm_ScrSave);
   Application.Run;
  end else if (copy(ParamStr(1),1,2) = '/c') or (copy(ParamStr(1),1,2) = '/C') then begin
   Application.Initialize;
   Application.Title := 'Spectrum Clock';
   Application.CreateForm(Tfrm_Config, frm_Config);
   Application.Run;
  end else if (copy(ParamStr(1),1,2) = '/p') or (copy(ParamStr(1),1,2) = '/P') then begin
   Application.Initialize;
   Application.Title := 'Spectrum Clock';
   Application.CreateForm(Tfrm_preview, frm_preview);
   Application.Run;
  end;
 end;
end.
Wie gesagt, alles recht einfach! Im OnCreate-Ereignis vom Preview-Fenster kommt nun folgendes:

Delphi-Quellcode:
procedure Tfrm_preview.FormCreate(Sender: TObject);
var dispHWND: HWND;
    lngStyle: LongInt;
    DispRec: TRECT;
begin
 dispHWND := strtoint(paramstr(2));
 windows.GetClientRect(dispHWND, DispRec);
 lngStyle := GetWindowLong(frm_Preview.handle, GWL_STYLE);
 lngStyle := lngStyle or WS_CHILD;
 SetWindowLong(frm_Preview.handle, GWL_STYLE, lngStyle);
 windows.SetParent(frm_Preview.handle, dispHWND);
 SetWindowLong(frm_Preview.handle, GWL_HWNDPARENT, dispHWND);
 windows.SetWindowPos(frm_Preview.handle, HWND_TOP, 0, 0, DispRec.Right, DispRec.Bottom,
              SWP_NOZORDER Or SWP_NOACTIVATE Or SWP_SHOWWINDOW);
end;
Der Rest bleibt dir und deinem Bildschirmschoner überlassen. Wenn mir jetzt jemand im Gegenzug helfen könnte, wie man automatisch das Fenster wieder schliessen kann, wenn der Nutzer zum Bleistift, einen anderen Schoner auswählt, wäre ich auch um ein Vielfaches glücklicher!
Ciao
  Mit Zitat antworten Zitat