FormStyle = StayInBack ?
-
wenn das fenster immer im hintergrund ist, wie soll der benutzer es dann nutzen?
und wenn ein anderes programm geöffnet wird, ist dein prog so und so im hintergrund, und nimmt auch kein platz weg.und wenn das in den desktop integriert werden soll, schreibe ein prog, das einfach eine html seite erzeugt, die dann in Active Desktop eingebettet werden kann.
oder so wie windows/office und co das machen: fenster wird immer eingeblenndet, wenn z.b. maus in oberen rechten ecke sich befindet.
-
Also im Tray hab ich das Programm ja schon, aber mal ganz davon abgesehen ob es sinnvoll ist oder nicht, wüsste ich gerne mal ob sich so etwas überhaupt realisieren lässt.
-
eine Möglichkeit wäre:
beim jedem Versuch ein Fenster zu aktivieren/deaktivieren, wird an das Fenster eine WM_ACTIVATE Message geschickt. Du kannst die Message abfangen und Das Fenster mit z.b. SetWindowPos wieder in den Hintergrund drucken.
oder eine VCL Lösung OnActivate/OnDeactivate und BrigToFront/SendToBack
-
MORL is nich angemeldet schrieb:
aber mal ganz davon abgesehen ob es sinnvoll ist oder nicht, wüsste ich gerne mal ob sich so etwas überhaupt realisieren lässt.
Ja. Für sowas gibt es sogar ne API. Die Dinger nennen sich Application Desktop Toolbars (kurz AppBars). Schau mal in deiner Win32 SDK-Hilfe danach.
-
Probier mal das, vielleicht reicht das ja für Deinen Zweck:
void __fastcall TForm1::FormPaint(TObject *Sender) { SendToBack(); }
-
@Peter: Funktioniert leider nicht
@WebFritzi: Hab mich grad mal über die AppBar schlau gemacht. Wenn ich das richtig verstanden habe, ist das so ne Art Taskleiste die ich irgendwo auf dem Desktop plazieren kann. Das ist leider nicht ganz das was ich suche, da so eine AppBar ja anscheinend immer im Vordergrund liegt und zudem noch Platz auf dem Desktop reserviert, oder hab ich mich da verschätzt? Wäre aber cool wenn du mir ein Tutorial nennen könntest, damit ich einen Einblick in die Sache gewinnen kann. Scheint eine ganz interessante Angelegenheit zu sein und lässt sich sicher irgedwo anders unterbringen, nur für mein jetziges Projekt ist sie glaub ich ungeeignet.
Das muss doch irgendwie gehen.
-
Okay, ich habs mit WM_ACTIVATE und SetWindowPos versucht, doch gebracht hats nischt. MSDN hat mir auch nicht wirklich weiter geholfen. Ich weiss einfach nicht nach was ich suchen soll. Habs jetzt erst mal mit einem Timer und SetWindowPos realisiert, ist aber keine schöne Lösung.
-
Irgendwie hört sich das alles so nach "ActiveDesktop" an.
Mit anderen Worten: das ist in Windows doch schon eingebaut!?
-
Sicher liesse sich das auch irgendwie über den Aktiv Desktop realisieren, aber ich hab mich nun grad mal an der Sache festgebissen und würde gerne eine Lösung finden, denn nur Übung macht den Meister, oder so
!
-
MORL schrieb:
Okay, ich habs mit WM_ACTIVATE und SetWindowPos versucht, doch gebracht hats nischt.
in Unit1.cpp
void TForm1::OnActivate(TMessage Msg) { if (Msg.WParamLo != WA_INACTIVE) SetWindowPos(Handle, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE); }
in Unit1.h
private: // Anwender-Deklarationen void OnActivate(TMessage Msg); public: // Anwender-Deklarationen BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_ACTIVATE, TMessage, OnActivate); END_MESSAGE_MAP(TForm);
und schon funtzt alles.
übrigens es geht auch mit SendToBack() anstatt von SetWindowPos
-
MORL schrieb:
Ich hab vor mir ein Progrämmchen zu schreiben, welches, ähnlich der Quicklaunch-Leiste, einen Schnellzugriff auf Programme ermöglichen soll.
Die Quicklaunch ist übrigens nichts anderes als ne AppBar! Und außerdem: wenn dein Programm immer im Hintergrund ist, dann ist das ja ein super Schnellzugriff. Erstmal alle Fenster minimieren und dann erst loslegen? Das nenne ich nicht sehr benutzerfreundlich. Und ein "Schnellzugriff" ist das nicht! Da geht's mit ner AppBar oder nem TrayIcon um einiges schneller. Du kannst ja auch ein Menu machen, in dem du alle Programme drinne hast, welches immer dann aufgemacht wird, wenn du auf dein TrayIcon klickst. Eine AppBar kann man übrigens auch so einstellen, dass sie immer im Hintergrund ist (siehe Taskleistenmenu!). Es gibt sooo viele Möglichkeiten für Schnellzugriffe - du hast dir die schlechteste ausgesucht!
P.S.: Wenn du wirklich was auf's Desktop pinnen willst, dann pack doch einfach ne ListBox direkt auf das Desktop-ListView (wo die Icons drauf sind). Aber wie gesagt, das ist eine schlechte Lösung.
-
@Xqgene: Vielen Dank, das funktioniert Einwand frei!
@WebFritzi: Das was ich vor hab, soll keine Kopie der Windows-Taskleiste werden. Es soll vielmehr ein frei konfigurierbares Tool sein, mit dem man Termine verwalten kann, sich die Uhrzeit ausgeben lässt, oder aber auch Programme starten kann. Desweiteren ist die Funktion des "Pinnens" nur eine Optionale Funktion, die man nicht aktivieren muss. Ich persönlich finde es besser, das es, wie schon gesagt, sich besser im Desktop integriert. Mein erster Ansatzpunkt zu dem Programm war, das ich einen komfortablen Zugriff auf meine Programme, auch von meinem 2. Bildschirm aus haben wollte.
Nun ja, ist und bleibt wohl alles Geschmackssache.Nochmal vielen DAnk an alle die mir geholfen haben!
Mfg
MORL