![]() |
Anzeige:
|
|
|||||||
| Helfer & Tools Programme für und in XProfan und Fragen dazu. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
MoRoGeP-Träger 2011
![]() Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.877
|
Hallo
Hat jemand einen kleinen Code irgendwo "rumliegen", mit dem man die letzte Plazierung eines Dialog-Fensters wieder aufrufen kann. Beispiel: Das Fenster startet beim Aufruf immer in der Mitte (so von mir geschrieben) der Anwender schiebt jetzt das Fenster dahin, wo er es am liebsten hat. Beim erneuten Start sollte dieser Platz wieder aufgerufen werden. Habe keinen Anfang und wäre froh, wenn mir jemand hilft... Danke !
__________________
Gruss, horst Computer werden kleiner und kleiner, bald verschwinden sie völlig. (Ephraim Kishon 1924-2005) http://www.web-treffpunkt.de |
|
|
|
|
|
|
#2 (Direktlink) |
|
Stammuser
![]() Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
|
Hallo Horst,
ist zwar kein Dialogfenster, aber die Vorgehensweise sollte sich erkennen lassen. Code:
'###########################################
'Fenster-Position sichern und beim Neustart
'wiederherstellen
'Andreas Miethe 2011
'###########################################
$H Windows.ph
Struct RECT = left&,Top&,Right&,Bottom&
Var Rect# = New(RECT)
Var Style& = 0
Var Title$ = ""
Var TLen& = 0
'Die Datei sollte sich idealerweise
'in $AppDataDir befinden
Var File$ = "WinPos.Position"
Var Ende& = 0
WindowStyle 543
If FileExists(File$)
'wenn ein Psitionsfile existiert dann
Assign #1, File$
OpenRW #1
'Position in Rechteckstruktur einlesen
BlockRead(#1, Rect#, 0, Sizeof(Rect#))
Close #1
'Fenster mit der ausgelesenen Position erstellen
Window Rect#.Left&,Rect#.Top& - (Rect#.Right&-Rect#.Left&),(Rect#.Bottom&-Rect#.Top&)
Else
'sonst
CLS
Endif
Whilenot Ende&
Waitinput
If %Key = 2
'bei ENDE neue Position speichern
SavePosition()
Ende& = 1
Endif
EndWhile
Proc SavePosition
~GetWindowRect(%hWnd,Rect#)
Style& = GetStyle(%hWnd,0)
Title$ = GetText$(%hWnd)
Assign #1, File$
OpenRW #1
BlockWrite #1, Rect#, 0, SizeOf(Rect#)
Close #1
EndProc
__________________
Gruss Andreas ______________________ http://www.ampsoft.eu Profan 3.3 - XProfanX2 Windows 95,98,ME,2000,XP Vista - Windows 7 32 / 64 Bit ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher |
|
|
|
|
|
#3 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
Ich würde die Position beim Programmende einfach in eine Inidatei in Appdata speichern
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de |
|
|
|
|
|
#4 (Direktlink) | |
|
MoRoGeP-Träger 2011
![]() Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.877
|
Zitat:
das hatte ich auch im Kopf. Aber es sind drei Dialoge, die während des aktiven Programmes ständig gebraucht werden (Neueintrag, Editor, Kopieren von Daten in eine CSV-Datei) Wie bekomm ich das Handle für die einzelnen Fenster ? Den WinLeft, Winright und WinTop sind doch für das Hauptfenster zuständig oder gibst da einen Trick ?
__________________
Gruss, horst Computer werden kleiner und kleiner, bald verschwinden sie völlig. (Ephraim Kishon 1924-2005) http://www.web-treffpunkt.de |
|
|
|
|
|
|
#5 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Andreas seinen Code kannste schon mal als Ausgangsbasis nehmen, der
enthält aber einen Schönheitsfehler: Es sind die x, y, dx und dy notwendig, wo das Fenster zuletzt im Normalstatus war, also weder minimiert noch maximiert. Deshalb musst Du diese Werte in der Subclass Proc beim wm_size und wm_move ereignis immer aktualisieren. Bei den Dialogen reicht ja das wm_move ereignis, da diese ja nicht grössenveränderbar sind. Ansonsten haste am Ende nicht die passenden Werte, weil Dialog nicht sichtbar oder Fenster maximiert. Den Zustand (max, min, normal) brauchste erst am Schluss ermitteln. Es gibt aber IMHO auch eine API, wo man unabhängig vom Status die Normalgrösse ermitteln kann. Ich hoffe, ich hab nicht all zu viel Verwirrung gestiftet
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
|
|
|
#6 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Ja, als Ini-Datei oder in der Registry speichern.
Kannst auch mal in den XProfEd-Code schauen, dort wird die Position des Hauptfensters auch gespeichert.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#7 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
@Horst,
für das Handle kannst du FindWindow(S) verwenden, falls das nicht klappt eben die gleichnamige API
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de |
|
|
|
|
|
#8 (Direktlink) | |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Zitat:
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
|
|
|
#9 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Min/max wird eigentlich auch beachtet.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#10 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Aber wenn ich die Normalgrösse verändere, dann maximiere und schliesse, erhalte ich zwar ein maximiertes Fenster, aber nach dem Umschalten auf
Normal ist das eben nicht meine letzte Normalgrösse, da er die ja auch nicht festgehalten hat.
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
|
|
|
#11 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Gerade mit meinem alternativen XProfEd getestet und es funktioniert so, wie du es gesagt hast. Ich hatte da ein paar Änderungen an Rolands Code vorgenommen.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#12 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Ich hab nur mit dem offiziellem beta Editor getestet, der hat es noch nicht
ganz korrekt gelöst (wobei ich denke, wenn Deine IDE das korrekt händelt, ist es die erste XProfan-Anwendung die dies berücksichtigt Ich aktualisiere den Status immer im wm_size oder wm_move Ereignis, wenn der WindowsState Normal entspricht. Es gibt aber auch ne API, die die Normalstate Koordinaten zurückgibts, auch wenn das Fenster einen anderen WindowsState hat. Aber keine Ahnung welche das jetzt ist. Wichtig ist dann noch, das Fenster versteckt / normal zu öffnen und erst unmittelbar vorm Anzeigen den letzten State zu setzen, fallls dies ein anderer war.
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
|
|
#13 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
|
Ja, genau.
Die API heisst übrigens GetWindowPlacement().
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#14 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Genau die API meinte ich, in Member rcNormalPosition (RECT) von der
WindowPlacement Structure steht es dann. Wenn man den Wert sichert, reicht es beim Programmende, ausser bei Horst seinen Dialogen, die muss er spätestens bei jedem Dialogschliessen sichern.
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Dialogfenster | plutoniumkur | Allgemein | 2 | 06.03.2009 07:51 |
| Dialogfenster vergrößern | mixolydian | Windows XP | 2 | 20.03.2007 19:12 |
| CHtmlView im Dialogfenster | Don_Pazo | C/C++, Visual C++, Visual C++.NET | 4 | 16.12.2005 17:39 |
| Dialogfenster | hektor | C/C++, Visual C++, Visual C++.NET | 2 | 28.02.2005 14:36 |
| desktop icons - plazierung wieder herstellen | ein neuer | Windows XP | 1 | 28.06.2004 21:35 |