Position Form1-Fensters,beim start festlegen?maximieren(best.größe) und wieder festlegen-oh mannn!(Teil3.1)+"Beisp



  • theta schrieb:

    Aber warum STL? Es gibt ja soviele nützliche .NET Klassen.

    Zum anderen: Location im CTOR erst nach InitializeComponent() gesetzt?

    Simon

    [cpp]#pragma once
    
    namespace Test {
    
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    
    	/// <summary>
    	/// Zusammenfassung für Form1
    	///
    	/// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch
    	///          die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern,
    	///          das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt.
    	///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
    	///          arbeiten, die diesem Formular zugewiesen sind.
    	/// </summary>
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Konstruktorcode hier hinzufügen.
    			//
    		}
    
    	protected:
    		/// <summary>
    		/// Verwendete Ressourcen bereinigen.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    
    	private:
    		/// <summary>
    		/// Erforderliche Designervariable.
    		/// </summary>
    		System::ComponentModel::Container ^components;
    
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Erforderliche Methode für die Designerunterstützung.
    		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->SuspendLayout();
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(292, 270);
    			this->Location = System::Drawing::Point(0, 100);
    			this->Name = L"Form1";
    			this->Text = L"Test";
    			this->ResumeLayout(false);
    
    		}
    #pragma endregion
    	};
    }[/cpp]
    

    hmmm? verstehs net.. eher im..



  • ja, was denn??



  • theta schrieb:

    ja, was denn??

    ach jetzt weiss ich was du meinst
    oh mann hehe mein titel passt... ich hab vergessen die
    this->StartPosition = System::Windows::Forms::FormStartPosition::Manual;
    zusetzen...

    ach nochwas.. finds blöd das man net per hand in der InitializeComponent(void)-methode fuhrwerken darf.. wenn man das macht gibs irgendwann böses meckern vom "designer"-compiler... oder wie man den nennt... ;).

    danke ...

    wie sagte einst Yoda :" Viel zu lernen du hast, noch lange kein Jedi du bist"



  • sodele ich hab mal was gemacht:

    [cpp]#pragma once
    
    namespace Test {
    
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    
    	using namespace System::Runtime::InteropServices;
    
    value class Win32 {
    public:
       [DllImport("User32.dll")]
       static int GetSystemMetrics(int);
    
       enum class SystemMetricIndex {
          // Same values as those defined in winuser.h.
          SM_CXSCREEN = 0,
          SM_CYSCREEN = 1
       };
    };
    
    	/// <summary>
    	/// Zusammenfassung für Form1
    	///
    	/// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch
    	///          die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern,
    	///          das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt.
    	///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
    	///          arbeiten, die diesem Formular zugewiesen sind.
    	/// </summary>
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			int hRes = Win32::GetSystemMetrics( safe_cast<int>(Win32::SystemMetricIndex::SM_CXSCREEN) );
    			int vRes = Win32::GetSystemMetrics( safe_cast<int>(Win32::SystemMetricIndex::SM_CYSCREEN) );
    
    			InitializeComponent();
    			Form1_Position(vRes,hRes); //neue Position in abhängigkeit der Userauflösung.
    			//
    			//TODO: Konstruktorcode hier hinzufügen.
    			//
    		}
    
    	protected:
    		/// <summary>
    		/// Verwendete Ressourcen bereinigen.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::RichTextBox^  richTextBox1;
    			 System::Void Form1_Position(int vR , int hR)
    			 {
    
    				 this->Location = System::Drawing::Point(0+vR-200,50);
    				 this->richTextBox1->Text = "testbetrieb" ;
    			 }
    	protected: 
    
    	private:
    		/// <summary>
    		/// Erforderliche Designervariable.
    		/// </summary>
    		System::ComponentModel::Container ^components;
    
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Erforderliche Methode für die Designerunterstützung.
    		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->richTextBox1 = (gcnew System::Windows::Forms::RichTextBox());
    			this->SuspendLayout();
    			// 
    			// richTextBox1
    			// 
    			this->richTextBox1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom) 
    				| System::Windows::Forms::AnchorStyles::Left) 
    				| System::Windows::Forms::AnchorStyles::Right));
    			this->richTextBox1->Location = System::Drawing::Point(12, 45);
    			this->richTextBox1->Name = L"richTextBox1";
    			this->richTextBox1->Size = System::Drawing::Size(317, 234);
    			this->richTextBox1->TabIndex = 0;
    			this->richTextBox1->Text = L"";
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(7, 14);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(89)), static_cast<System::Int32>(static_cast<System::Byte>(129)), 
    				static_cast<System::Int32>(static_cast<System::Byte>(191)));
    			this->ClientSize = System::Drawing::Size(341, 291);
    			this->Controls->Add(this->richTextBox1);
    			this->Font = (gcnew System::Drawing::Font(L"Courier New", 8.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 
    				static_cast<System::Byte>(0)));
    			this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedDialog;
    			this->Location = System::Drawing::Point(1000, 50);
    			this->Name = L"Form1";
    			this->Opacity = 0.85;
    			this->StartPosition = System::Windows::Forms::FormStartPosition::Manual;
    			this->Text = L"monitor";
    			this->ResumeLayout(false);
    
    		}
    #pragma endregion
    	};
    }[/cpp]
    

    kann man das so machen? ich hab ne eigene Funktion geschrieben (da man ja in InitializeComponent(void) nichts verändern soll) um die Werte zu
    überschreiben,und das Fenster an meine Stelle zu zeichnen. Hintergrund ist .. soll eine Minianwendung werden, die beim Start von windows dorthin projeziert wird.



  • ja, klar, so ist's gut.



  • theta schrieb:

    ja, klar, so ist's gut.

    ... very danke..



  • [cpp]...
    			this->SizeChanged += gcnew System::EventHandler(this, &Form1::Form1_SizeChanged);
    			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox2))->EndInit();
    			this->ResumeLayout(false);
    
    		}
    #pragma endregion
    
    private: System::Void Form1_SizeChanged(System::Object^  sender, System::EventArgs^  e) {
    
    			 this->richTextBox1->Text = "testbetriebbbbb" ;
    			 int hRes = Win32::GetSystemMetrics( safe_cast<int>(Win32::SystemMetricIndex::SM_CXSCREEN) );
    			 int vRes = Win32::GetSystemMetrics( safe_cast<int>(Win32::SystemMetricIndex::SM_CYSCREEN) );
    			 this->Text= "MannoMann";
    			 this->Location = System::Drawing::Point(vRes-200,50);
    		 }
    };[/cpp]
    

    hab ne kuriosität bzw.. ichs raffs net.. ich hab ein Eventhandler gebaut der bei Maxmieren des Fensters verschiedene änderungen an meinem Fenster und darin enthaltenen Komponenten ausführt. Jetzt möchte ich natürlich das durch das Maximieren er nicht die Position des Fensters ändert.. Macht er aber.. da dacht ich ach dann setz ich ihn einfach wieder zurück.. aber
    this->Location macht er einfach net .. er setzt mein fenster links oben hin. Warum? will einfach nur das er das fenster vergrößert aber eben nicht die (meine angegebene) Position ändert. hmmmm
    komischerweise ändert er den namen des Form1..Fensters....und den text im textfeld auch..



  • Ist doch logisch, Du setzt das Fenster doch auf Max...
    D.h. das Fenster füllt den ganzen Bildschirm aus, links oben nach rechts unten...



  • LogoHL schrieb:

    Ist doch logisch, Du setzt das Fenster doch auf Max...
    D.h. das Fenster füllt den ganzen Bildschirm aus, links oben nach rechts unten...

    achso- ne, ich habe die Maxisize-variable (InitializeComponent) gesetzt auf höchstens 300.. (hab ich vergessen zu sagen)



  • noch was.. zu der Maximieren und wieder Positionierenfrage ..
    ich habe , bzw. nehmen wir an.. ,

    [cpp]this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::None;[/cpp]
    

    gewählt.. das schöne dabei ist, jetzt hab ich keine Rahmen mehr (gewollt), aber jetzt kann ich das Fenster nicht mehr verschieben ! geht das, das ich trotzdem wieder verschieben kann- ohne das ich FomrBorderStyle ändere ?


Anmelden zum Antworten