Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  VBasic / vb.net / vbs / wsh
  OpenFileDialog- Position und Größe merken

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  OpenFileDialog- Position und Größe merken (4712 mal gelesen)
KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 05. Okt. 2011 13:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Experten,

ich bin mal wieder mit dem Standarddialog zum Öffnen und Speichern unzufrieden (OpenFileDialog, SaveFileDialog).

Da diese Dialoge ja nicht nur verschiebbar, sondern auch in der Größe änderbar sind, möchte ich mir diese Eigenschaften (Größe und Position) auch merken und beim nächsten Öffnen eines solchen Dialogs wieder verwenden.
Kann man diese Eigenschaften irgendwie auslesen und wieder verwenden?

Eventuell auch für andere Standarddialoge?

Ich hab leider dazu nix gefunden (genausowenig wie zu meiner alten Frage nach den Favoriten  )

Die Alternative wäre, diesen kompletten Dialog neu zu erfinden- aber dazu habe ich nur wirklich keine Lust.

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Ehrenmitglied V.I.P. h.c.
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

erstellt am: 05. Okt. 2011 18:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

[QUOTE]Original erstellt von KMassler:

Da diese Dialoge ja nicht nur verschiebbar, sondern auch in der Größe änderbar sind ---

Hallo Klaus,

meinst Du die .NET- Dialoge unter System.Windows.Forms ? Bei denen gibt's m.W. diese Eigenschaften nicht, oder ich steh' absolut auf dem Schlauch.
Bei einer ähnlichen Fragestellung (Ist der Dialog noch offen?) hat vor einiger Zeit die Windows API geholfen.

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 06. Okt. 2011 08:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Michael,

ja genau, die meine ich. Also die Standard-Dialoge aus der Werkzeugleise.

Wenn's dazu ne flexiblere Alternative per Windows-API gibt, bin ich auch nicht abgeneigt, allerdings bitte mit ausführlicher Anleitung 

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Ehrenmitglied V.I.P. h.c.
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

erstellt am: 06. Okt. 2011 08:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich


tipp0111.zip

 
Hallo Klaus,

eine Alternative ist das nach meinem Verständnis nicht, eher eine Erweiterung/Ergänzung des Funktionsumfangs von .NET. Es werden keine anderen Dialoge verwendet, stattdessen wird über die WIN API auf das Fenster zugegriffen.

Schau' Dir mal das Beispiel an, das sollte ausführlich genug sein.

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 06. Okt. 2011 14:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Witziges Beispiel.

Jetzt hab ich aber das Problem, dass es sich bei mir nicht um ein externes Fenster handelt, sondern um einen Dialog, der auf eine Eingabe wartet...solange steht mein Programm ja.
Ich(!) kann also nicht vor der Anzeige des Dialogs seine Größe festlegen und vor dem Schließen desselben die neue Größe auslesen.

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Patrick Weber
Mitglied
Konstruktionstechniker, Admin


Sehen Sie sich das Profil von Patrick Weber an!   Senden Sie eine Private Message an Patrick Weber  Schreiben Sie einen Gästebucheintrag für Patrick Weber

Beiträge: 657
Registriert: 20.11.2006

erstellt am: 06. Okt. 2011 14:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich


Form1.vb.txt

 
Eine gute Lösung gibt es nicht. An den Standarddialogen kannst du nicht einfach etwas ändern. Wenn eine Eigenschaft nicht abgerufen oder gesetzt werden kann, dann ist das so.

Da eigentlich die Fenstergröße und Position des Dialoges gespeichert wird (bei mir mit Win7-32 und .net4 ist das so!), ist mir nicht so recht klar, für was du die extra noch speichern willst.

Auch stellt sich eine Lösung mit selbst gebautem Dialog nicht einfach dar, will man nicht alles von Grund auf neu programmieren. Ein Beispiel gibt dir da z.B. http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx. Ist aber auch nichts für "Anfänger".

Die Lösung über die Windows API ist machbar. Da es sich aber um Dialoge handelt, wirst du diese API-Calls in einen Thread auslagern müssen. Im Folgenden habe ich die Sache an einem einfachen Beispiel dargelegt. Einfach ein neues Projekt machen mit Form1, darin dann eine Textbox1, zwei Buttons (Button1, Button2) und zwei OpenFileDialog (1 und 2).

Kannst ja etwas damit "rumspielen".

------------------
Grüße aus Sachsen
pw

Karl Marx ist tot, Einstein ist tot, und mir ist auch schon ganz schlecht!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 06. Okt. 2011 15:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Patrick Weber:
...Da eigentlich die Fenstergröße und Position des Dialoges gespeichert wird (bei mir mit Win7-32 und .net4 ist das so!), ist mir nicht so recht klar, für was du die extra noch speichern willst...
Naja, es wird ja nur zur Laufzeit gespeichert. Wenn das Programm beendet und neu gestartet wird, ist das wieder weg. Und da ich die Koordinaten eben nicht lesen und schreiben kann, kann ich sie auch nicht speichern und nach einem Neustart wieder verwenden.

Zitat:
Original erstellt von Patrick Weber:
...Auch stellt sich eine Lösung mit selbst gebautem Dialog nicht einfach dar, will man nicht alles von Grund auf neu programmieren. Ein Beispiel gibt dir da z.B. http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx. Ist aber auch nichts für "Anfänger".

Die Lösung über die Windows API ist machbar. Da es sich aber um Dialoge handelt, wirst du diese API-Calls in einen Thread auslagern müssen. Im Folgenden habe ich die Sache an einem einfachen Beispiel dargelegt. Einfach ein neues Projekt machen mit Form1, darin dann eine Textbox1, zwei Buttons (Button1, Button2) und zwei OpenFileDialog (1 und 2).

Kannst ja etwas damit "rumspielen".


Cooles Beispiel  ich glaube, damit kann ich etwas anfangen 

Ist zwar recht groß im Verhältnis zur Aufgabenstellung (mein ganzes aktuelles Programm ist bisher nicht viel größer  ), aber wenn's funktioniert, werd ich das so nach und nach auch anderswo verwenden.

Den Link kannte ich schon, aber ehrlich gesagt...da bin ich sehr früh wieder ausgestiegen.

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Patrick Weber
Mitglied
Konstruktionstechniker, Admin


Sehen Sie sich das Profil von Patrick Weber an!   Senden Sie eine Private Message an Patrick Weber  Schreiben Sie einen Gästebucheintrag für Patrick Weber

Beiträge: 657
Registriert: 20.11.2006

erstellt am: 07. Okt. 2011 13:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Du könntest die Variable StoreLoadDialogRect in geeigneter Form in die Registry schreiben, eine XML oder auch in eine schlichte Textdatei in einen temporären Ordner. Beim nächsten Programmstart holst du die dir dann wieder.

------------------
Grüße aus Sachsen
pw

Karl Marx ist tot, Einstein ist tot, und mir ist auch schon ganz schlecht!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Ehrenmitglied V.I.P. h.c.
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-2212
3D Printer Prusa MK2 S

erstellt am: 07. Okt. 2011 14:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Hallo zusammen,

zwei alternative, evtl. einfachere Ideen fallen mir noch ein:

Anstatt des Threads einen Timer verwenden (nicht getestet)
Die ausgelesenen Werte in den Settings ablegen.

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Patrick Weber
Mitglied
Konstruktionstechniker, Admin


Sehen Sie sich das Profil von Patrick Weber an!   Senden Sie eine Private Message an Patrick Weber  Schreiben Sie einen Gästebucheintrag für Patrick Weber

Beiträge: 657
Registriert: 20.11.2006

erstellt am: 07. Okt. 2011 18:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Die while-Schleifen zusammen mit den Threading.Thread.Sleep()-Anweisungen blockieren den Hauptthread, damit scheidet ein Timer aus mit dem bestehenden Code aus.

------------------
Grüße aus Sachsen
pw

Karl Marx ist tot, Einstein ist tot, und mir ist auch schon ganz schlecht!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 10. Okt. 2011 08:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

 
Zitat:
Original erstellt von Patrick Weber:
Du könntest die Variable StoreLoadDialogRect in geeigneter Form in die Registry schreiben, eine XML oder auch in eine schlichte Textdatei in einen temporären Ordner. Beim nächsten Programmstart holst du die dir dann wieder.


Hallo Patrick,

das habe ich inzwischen schon verstanden  

Ich habs schon eingebaut, umgebaut und für meinen Zweck gesundgeschrumpft :)

Das funktioniert prima und ich bin happy damit, herzlichen Dank!!  

 

 

Zitat:
Original erstellt von mseufert:
...Die ausgelesenen Werte in den Settings ablegen...

Hi Michael, das war genau der Sinn der Sache  

Also, meine Frage zum Thema Koordinaten von Dialogen auslesen bzw. wiederverwenden ist damit beantwortet. Auch wenn ich mir das als wiederverwendbare Eigenschaften der entsprechenden Dialoge gewünscht hätte. Genauso wie den Direktzugriff auf die Favoriten. Und und und ... Hätte ich die Dialoge entwickelt, dann wäre alles viel besser      ...

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim    

[Diese Nachricht wurde von KMassler am 10. Okt. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Ehrenmitglied V.I.P. h.c.
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

erstellt am: 10. Okt. 2011 10:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich


DialogSizeMs.zip

 
Hallo zusammen,

habt ihr es geschafft, daß der Dialog nach einem erneuten Start des Programms sofort mit der gewünschten Position/Größe erscheint ?
Da hab' ich noch ein kleines Schönheitsproblem: Der Dialog wird kurz mit Default- Position und Größe angezeigt und erst dann auf die gespeicherte Position/Größe gebracht.

Auf vbfun gibt's ein Beispiel zum Positionieren einer MessageBox, allerdings in VB5. Das Beispiel gibt die Position vor, anstatt den offenen Dialog zu ändern. Es verwendet SetWindowsHookEx, funktioniert nach der Konvertierung nach .NET leider nicht mehr.

Gruß, Michael

[Diese Nachricht wurde von mseufert am 10. Okt. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 10. Okt. 2011 11:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Michael,

der Dialog wird  tatsächlich erst in Original-Größe an den Original-Koordinaten geöffnet und anschließend verschoben und vergrößert/verkleinert.
Aber das passiert so schnell- und nur beim 1. Mal zur Programmlaufzeit, dass es niemand mitbekommt.
Für mich völlig ausreichend.

[Edit]Habe dein Beispiel kurz getestet:

  • Es funktioniert bei mir (vb.net 2010 Express)
  • Es läuft im Prinzip ab wie der Vorschlag von Patrick- nur eben mit Timer.
  • Auch hier wird der Dialog erst auf Standardposition und mit Standardgröße gesetzt und erst anschließend verschoben- aber sichtbar langsamer- das mag aber an den timer-Werten liegen.
[/Edit]
------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim    

[Diese Nachricht wurde von KMassler am 10. Okt. 2011 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Patrick Weber
Mitglied
Konstruktionstechniker, Admin


Sehen Sie sich das Profil von Patrick Weber an!   Senden Sie eine Private Message an Patrick Weber  Schreiben Sie einen Gästebucheintrag für Patrick Weber

Beiträge: 657
Registriert: 20.11.2006

erstellt am: 10. Okt. 2011 12:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Sofort geht nicht, da erst das Fenster gezeichnet werden muss, um die Position auszulesen. Im ersten Block kann man die Threading.Thread.Sleep(100) verkleinern und gleichzeitig die Anzahl der Iterationen vergrößern, um die Reaktionszeit zu verkürzen. Dabei sollte man aber bei schwachen Rechnern die CPU-Auslastung im Auge behalten.

100*100ms = ca. 10s Timeout:

Code:
While hWnd.Equals(IntPtr.Zero) And i < 100
                Try
                    Threading.Thread.Sleep(100)
                    ...

200*50ms = ca. 10s Timeout:
Code:
While hWnd.Equals(IntPtr.Zero) And i < 200
                Try
                    Threading.Thread.Sleep(50)
                    ...

usw. nach Bedarf.

------------------
Grüße aus Sachsen
pw

Karl Marx ist tot, Einstein ist tot, und mir ist auch schon ganz schlecht!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 10. Okt. 2011 12:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Nö nö, das passt schon so wie's ist 


Zitat:
Original erstellt von Patrick Weber:
...und mir ist auch schon ganz schlecht!


war mir gerade auch, hat aber nix mit dem Thema zu tun 

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat... | Nasenheim 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mseufert
Ehrenmitglied V.I.P. h.c.
Freiberuflicher CAD/CAM Ingenieur


Sehen Sie sich das Profil von mseufert an!   Senden Sie eine Private Message an mseufert  Schreiben Sie einen Gästebucheintrag für mseufert

Beiträge: 2624
Registriert: 18.10.2005

erstellt am: 10. Okt. 2011 13:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Patrick Weber:
Sofort geht nicht, da erst das Fenster gezeichnet werden muss, um die Position auszulesen.

Hallo Klaus, hallo Patrick,

ohne Kenntniss des o.g. Beispiels würde ich sofort zustimmen. Es muss ja erst das WindowHandle ermittelt werden, um das Fenster darüber anzusprechen. Soweit o.k.

In dem Beipiel wird nun, soweit ich das verstanden hab', eine Windows Message mit SetWindowsHookEx abgefangen und modifiziert. Ergebnis: Die Messagebox erscheint sofort mit gewünschter Größe und Position. Ist mir allerdings (noch) unklar, wie das im Detail funktioniert.

Das ist die letzte verbliebene Nuss, die noch geknackt werden will. Und wenn's mit VB5 und einer Messagebox geht, warum dann nicht mit .NET und einem FileDialog ? 

Gruß, Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

RSchulz
Ehrenmitglied V.I.P. h.c.
Head of CAD, Content & Collaboration / IT-Manager



Sehen Sie sich das Profil von RSchulz an!   Senden Sie eine Private Message an RSchulz  Schreiben Sie einen Gästebucheintrag für RSchulz

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 10. Okt. 2011 14:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für KMassler 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von mseufert:

Ist mir allerdings (noch) unklar, wie das im Detail funktioniert.

Das ist die letzte verbliebene Nuss, die noch geknackt werden will. Und wenn's mit VB5 und einer Messagebox geht, warum dann nicht mit .NET und einem FileDialog ?  


Hallo Michael,
fakt ist, dass es mit der Standard MSGBOX nicht geht bzw. diese die nötigen Einstellungen nicht mitbringt. Wie heist es so schön "Nicht alles was neu ist, ist auch besser. Aber alles was besser ist, ist neu." ...

Für dich als Erklärung....
Du musst auf das Fenster warten. Das kannst du nur mit einem sleep-Befehl. Dieser legt aber den gesamten Thread schlafen und damit eben auch die msgbox. Also musst du den sleep-Befehl in eine Schleife packen und am Besten mit einem DoEvents-Befehl den anderen Programmen die Möglichkeit zur Berechnung geben. Sobald dieses dann aufgebaut ist, kannst du es eben verändern. Richtig programmiert fällt dieser "Umweg" dem Anwender garnicht auf und es gibt auch keine erkennbare Verzögerung. Jedes Fenster hat einen Handler oder Kenner wie auch immer  Dieser Kenner ist allerdings immer ein anderer, da Windows eben irgend einen freien zur Verfügung stellt. Also musst du mit z.B. der Caption das Fenster fangen und kannst dann den Handler auslesen/übergeben.

Das was du vorhast, würde ich in einen Timer stecken, den man vor dem Aufruf der MSGBOX oder anderer Fenster aktiviert und der wartet, bis das Fenster offen ist. Sobald das oder ein gewünschtes Fenster offen ist, muss man mit dem HOOK und dem Handler das Fenster fangen und kann es positionieren und in seiner Größe ändern. Danach würde ich dann noch innerhalb des Timers den Timer beenden. Allerdings musst du hierfür eine If-Abfrage definieren, da es sich ansonsten direkt nach dem Ersten mal beendet.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz