Windows Taskleiste Position,Grösse, ausblenden ?

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Windows Taskleiste Position,Grösse, ausblenden ?

Beitrag von AUGE_OHR »

moin,

Frage :

1.) Wie kann ich die Position der Taskleiste bestimmen ?
(oben, unten, rechts, links)

2.) Wie bekomme ich die "Grösse" der Taskleiste ?
3.) wie kann ich die Taskleiste "automatisch" ausblenden lassen.

Problem :

mit o:setFrameState(XBPDLG_FRAMESTAT_MAXIMIZED) nimmt Xbase++
ja immer die "volle Grösse" ( AppDesktop:CurrentSize() ). Wenn nun der
User seine Taskbar z.B. "unten" hat und das noch über 2 oder 3 Zeilen
dann "verdeckt" es ja die Xbase++ Application ...

gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Beitrag von Jan »

Jimmy,

ich bin mir nicht sicher, ob ich Dein Problem verstanden habe. Du möchtest Deinen Dialog immer so groß haben, daß der User seinen Bildschirm komplett gefüllt hat, aber auch nichts verdeckt wird, egal wie der User seine Taskleiste eingestellt hat?

Das wäre relativ einfach. Schau Dir mal mein Beispiel an, daß Du runtergeladen hast. Ich schreibe meine Programme grundsätzlich so, daß sie sich der Bildschirmgröße anpassen. Egal welche Bildschirmauflösung, egal wie die Taskleiste eingestellt ist.

Ich lese am Programmbeginn die zur Verfügung stehende Bildschirmgröße in eine Private-Variabe gaBildschirmgroesse := SetAppWindow():currentSize() (in dem Beispiel noch aBildschirmgroesse) ein, die ich immer wieder auslesen kann. Dadurch kann ich die Dialoggröße variieren. Was natürlich auch bedeutet, das der Dialoginhalt dynamisch verwaltet wird. Das ist bei Browses relativ einfach, da kann man einfach die Spaltenbreite und die Browsehöhe variieren. Bei reinen Eingabemasken ist das schon aufwändiger.

Jan
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Hallo Jimmy,
Wie bekomme ich die "Grösse" der Taskleiste ?
Das habe ich mich auch schon öfters gefragt. Bisher leider erfolglos.
mit o:setFrameState(XBPDLG_FRAMESTAT_MAXIMIZED) nimmt Xbase++
ja immer die "volle Grösse" ( AppDesktop:CurrentSize() ). Wenn nun der
User seine Taskbar z.B. "unten" hat und das noch über 2 oder 3 Zeilen
dann "verdeckt" es ja die Xbase++ Applikation ...
Dem kann ich so nicht zustimmen.
Ich starte manche Applikationen im Modus "XBPDLG_FRAMESTAT_MAXIMIZED". Dabei berechnet Xbase automatisch die Größe der Taskbar (egal ob sie 1, 2, ... Zeilig ist; links, rechts, oben, unten) und zieht diese entsprechend in der Applikation ab.
Dies auch wenn die Applikation im Maxi Modus ist und ich die Taskbar dann von rechts nach links, etc. verschiebe.

Woran das nun liegt dass es bei dir nicht so ist?
Evtl. der Parent? Bei mir ist es AppDesktop() - für das Hauptfenster.

Gruß,
Notloesung
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

hi,
notloesung hat geschrieben: Dem kann ich so nicht zustimmen.
das liegt daran das deine Taskbar nicht "ausgeblendet" wird.
geb mal :

Code: Alles auswählen

rundll32.exe shell32.dll,Options_RunDLL 1
in der CMD Box ein und "check" mal die 2st Checkbox
( Taskleiste automatisch ausblenden ). Danach Maus "weg"
von der Taskliste und schon hast du "volles Bild" Format.

genau diesen "Vorgang" möchte ich direkt aus Xbase++
"kontrollieren" können ("check" setzen/nicht setzten )

gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Beitrag von Jan »

Jimmy,

verstehe ich das richtig: Du möchtest dynamisch feststellen, ob gerade in diesem Moment die Taskleiste angezeigt wird und im nächsten nicht mehr? Weil die Maus die "rauslockt" bzw. wieder verschwinden lässt?

Ich muß gestehen daß mir persönlich das vollkommen egal ist. Denn auch ich habe meine Rechner alle so eingestellt, das die Taskleiste normalerweise weg ist, und nur beim Hingehen mit der Maus wieder erscheint. Aber dann ist die Taskleiste immer nur so kurz da, daß sie nicht wirklich im Dialog stört.

Oder habe ich da etwas falsch interpretiert?

Jan
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

hi,
Jan hat geschrieben: Du möchtest dynamisch feststellen, ob gerade in diesem Moment die Taskleiste angezeigt wird und im nächsten nicht mehr? Weil die Maus die "rauslockt" bzw. wieder verschwinden lässt?
yup, noch besser die "Kontrolle".

da ich mit dem RunDLL32.EXE Befehl ja schon die "Karte" aufrufen kann
frage ich mich wie ich "direkt" an die SHELL32.DLL rankomme ( API ?),
um damit "Kontrolle" über die 2st "Checkbox" (automatisch ausblenden)
zu bekommen ?

beim googlen hab ich was mit CreateObject("W..Shell..") gefunden
sowie den Hinweis auf "autoIt" ( Scriptsprache ) womit man direkt
an die 2st "Checkbox" rankommt. ( Activex ? )

was ich dann mit der "Kontrolle" mache hängt ganz von der Situation ab.
Jan hat geschrieben: Ich muß gestehen daß mir persönlich das vollkommen egal ist. Denn auch ich habe meine Rechner alle so eingestellt, das die Taskleiste normalerweise weg ist, und nur beim Hingehen mit der Maus wieder erscheint. Aber dann ist die Taskleiste immer nur so kurz da, daß sie nicht wirklich im Dialog stört.
mich auch nicht, den ich habe die "oben". Nun hab ich aber in meinem
XbpDialog "unten" eine Statusbar und da sind "Tasten" drin. Wenn man
nun "unten" die Taskliste hat und kein "Thema" (Classic) unter W2K und
die nicht automatisch ausblendet, dann liegt die Taskliste "über" der
Xbase++ Application bei XBPDLG_FRAMESTAT_MAXIMIZED.

also versuche ich jetzt über API oder ActiveX was zu machen um irgndwie
"Kontrolle" über die Taskliste zu bekommen.

gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Jimmy,

irgendwie begreife ich das nicht. Vielleicht bin ich noch nicht ganz wach :cry:

Aber wenn Du doch die zur Verfügung stehende Bildschirmgröße ermitteln kannst, dann kannst Du doch Deinen Dialog genau so groß oder klein machen, daß die Taskleiste Deine Statusleiste eben nicht überdeckt.

Denn Die Taskleiste komplett verschwinden lassen zu können kann ja nicht wirklich der Sinn der Sache sein. Ebenso eine Dir passende Position dafür festzulegen bei einem User, der das genau anders haben möchte.

Ich arbeite auch mit Win2000Pro bzw. XP, grundsätzlich immer auf 2000-Look ohne optische Mätzchen eingestellt. und wie oben schon mal erwähnt - durch die dynamische Größe der Dialoge habe ich da nie ein Problem mit. Auch nicht mit Statusleisten, die ich allerdings bislang nur in einem einzigen Projekt eingebaut habe.

Jan
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

hi,
Jan hat geschrieben: Aber wenn Du doch die zur Verfügung stehende Bildschirmgröße ermitteln kannst, dann kannst Du doch Deinen Dialog genau so groß oder klein machen, daß die Taskleiste Deine Statusleiste eben nicht überdeckt.
AppDeskTop:currentSize() gibt ja den ganzen Desktop zurück z.b.
1280x768. Wenn ich nun den XbpDialog maxmiere dann liegt die
Statusbar bei {0,22,1280,22). Hat nun jemand die Taskliste "unten" und
"automatisches Ausblenden" oder "immer im Vordergrund" dann kann ich
mit der Maus nicht in den Bereich {0,22,1280,22) weil ich dann immer
auf der Taskleiste lande.

Nur wenn die Taskliste "fixiert" ist reduziert sich die Grösse um die "Höhe"
oder "Breite" der Taskliste.
Jan hat geschrieben: Denn Die Taskleiste komplett verschwinden lassen zu können kann ja nicht wirklich der Sinn der Sache sein. Ebenso eine Dir passende Position dafür festzulegen bei einem User, der das genau anders haben möchte.
deshalb "Kontroll" um es save/restoren zu können.
Jan hat geschrieben: Ich arbeite auch mit Win2000Pro bzw. XP, grundsätzlich immer auf 2000-Look ohne optische Mätzchen eingestellt. und wie oben schon mal erwähnt - durch die dynamische Größe der Dialoge habe ich da nie ein Problem mit. Auch nicht mit Statusleisten, die ich allerdings bislang nur in einem einzigen Projekt eingebaut habe.
sicherlich ist es nicht die beste Lösung "Buttons" in die Statusbar
einzubauen, aber beim Mediaplayer wird immer nach maximalen
"Fenstern" gefragt und im "FullScreen" Modus sieht der User den
Desktop gar nicht mehr.

als Programmierer interessiert es mich nun wie ich per API oder
aktiveX an solche Sachen rankomme um möglichst alles aus meiner
Application herraus zu "steuern".

gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Beitrag von Jan »

Jimmy,

aahhhh, jetzt kommen wir der Sache schon näher.
AppDeskTop:currentSize()
Das muß sein

Code: Alles auswählen

SetAppWindow:currentSize()
Dann hast Du den wirklich "brauchbaren" Platz und nicht die gesamte Monitorgröße.

Jan
Günter Beyes
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 315
Registriert: Mo, 16. Okt 2006 13:04
Wohnort: Region Stuttgart

Beitrag von Günter Beyes »

Hallo Jimmy,
Jimmy hat geschrieben:1.) Wie kann ich die Position der Taskleiste bestimmen ?
(oben, unten, rechts, links)

2.) Wie bekomme ich die "Grösse" der Taskleiste ?
3.) wie kann ich die Taskleiste "automatisch" ausblenden lassen.

ich habe ein kleines Beipielprogramm dafür in die Wissensbasis gestellt.

Viele Grüße,
Günter
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

hi,
Günter Beyes hat geschrieben: ich habe ein kleines Beipielprogramm dafür in die Wissensbasis gestellt.
DANKE, DAS ist genau das was ich suchte !

gruss by OHR
Jimmy
Antworten