Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249364 (10800)
  Suchen
 Zurück zur Übersicht
 AutorThema: Fenstermanipulation !
Joerg Bauer
Datum:03.11.01 16:11 Antwortenals Email verschicken (JoergSeineOma@gmx.de) 


Wie man weiß, ist es möglich mit Fenstern in Window eine Menge Blödsinn anzustellen. Zum Bersipiel per API ein Loch rausschneiden. Aber zum Thema fallen mir spontan 2 Fragen ein !
1. Kann man den 'Windowstyle' (Hat es eine Titelzeile oder nicht, hat das Fnester einen Rahmen oder nicht, etc.) eines beliebigen Fensters dessen Handle man hat nachträglich verändern ?
2. Lassen sich zwei Fenster verschmelzen, sodass sie aussehen und sich auch verhalten, als ob es nur eines wäre ?

Vielen Dank im vorraus,

Joerg Bauer


Philipp Sternberg
Datum:04.11.01 19:35 Antwortenals Email verschicken (ps@burghardt-ib.de) 


Hi, auf deine zweite Frage kann ich dir so nichts sagen, aber zu deiner ersten Frage: Das geht mit der SetWindowLong Funktion aus der API Hier ein kleines Beispielprogramm (am besten siehst du mal bei SetWindowLong in der APi Doc nach,
Hier noch ein klienes Beispielprogramm, dass das kleine Schließen-Kreuz nachträglich entfernt:
Wenn du das fenster nach dem tastendruck verschiebst, verschwindet das Kreuz sofort !
def @SetWindowLong(3) !"user32.dll","SetWindowLongA"
windowtitle "Testfenster"
windowstyle 24
window 0,0-300,300
Print "ok.... Taste zum verändern drücken !"
waitkey
@SetWindowLong(%hwnd,-16,$50C00000
whilenot %key = 2
wend
end
'GWL_EXSTYLE	(-20)
'GWL_STYLE	(-16)
'GWL_WNDPROC	(-4)
'GWL_HINSTANCE	(-6)
'GWL_HWNDPARENT	(-8)
'GWL_ID	(-12)

Funktioniert aber nur wenn der funktionsaufruf aus dem selben Programm stammt wie das zu verändernde Window.

Philipp


Horst Horn
Datum: 09.11.01 14:52 Antwortenals Email verschicken (privat@web-treffpunkt.de) 


Hallo
Zu Frage 1:
'----------------------------------------------
DEF GetSystemMenu(2) !"USER32","GetSystemMenu" 'Beide DEF's sind von ROKO
DEF EnableMenuItem(3) !"USER32","EnableMenuItem"
'----------------------------------------------
'HAUPTPROGRAMM:
'WindowStyle 24 'ohne Menuleiste
'WindowStyle 26 'ohne Maximieren-Knopf
WindowStyle 28 'ohne Minimieren-Knopf
WINDOW SUB(DIV(%MaxX,2),225),SUB(DIV(%MaxY,2),125)-450,250
'erste ein normales Fenster erstellen -
EnableMenuitem(GetSystemMenu(GetActiveWindow(),0),$F060,1)
'dann die Definationen aufrufen
UseIcon "A"
WindowTitle "Deaktivieren von System-Ende-Button"
DrawText 20,50,"Hier ist der Ende-Knopf von Anfang an dektiviert"
DrawText 20,70,"Mit Kombinieren der einzelnen 'WindowStyle'-Parameter"
DrawText 20,90,"können auch der Mini- und Maxi-Knopf stillgelegt werden"
DrawText 20,120,"Die Sache stammt von Rolf Koch (besser bekannt als ROKO)"
Waitinput
'------------------------------------
Zu Frage 2:
Ich helfe mir immer so: Windowstyle 84 (keine Titelzeile) dann das 2. Fenster pixelgenau über das erste legen. Sieht aus, als wenn nur 1. Fenster da ist und da keine Titelzeile vorhanden ist, kann das zweite Fenster auch nicht verschoben werden. Ist nicht das Gelbe vom Ei, aber es hilft ;o)
Gruss


 Zurück zur Übersicht