Tooltip Problem



  • Also wie gesagt ich beschäftige mich mit c++/cli erst seit 3 wochen oder so und hab grad mal so ein einsteiger buch gelsen damit ich mit der syntax halbwegs klar komme.

    Wie man UserControls programmiert da hab ich kein plan, mich würde es auch interessieren wie man eigene Buttons machen kann und eigene Formen zBsp. runde formen wo das programm drinen läuft.

    Oder wie ICQ das hat einfach ein eigenes design 😕

    lg silviu



  • Nun man kann ein Form von .Net totall auseinander nehmen und sehr klein machen. Gucke mal in das Eigenschaftsfenster wenn du auf ein Form klickst. Du kannst da Titeleiste weg machen, Backcolor ändern. Sowohl das selbe gilt für die Controls. Auch wenn das je nach dem etwas unterschiedlich ist weil das Control möglicherweise spezifisch ist.

    Wenn du richtig die WinApi von Windows Manuell ansteuern wilst musst du dich mit opengl oder directx auseinander setzten. Habe ich mal versucht braucht viell einübungs- und brobier- und verstehzeit.



  • Das mit Opengl hab ich auch gelesen nur wie gesagt man muss ned gleich das Rad neu erfinden :).

    Ich wollte halt bei der Form das X oben ausblenden weil ich ein eigenes button zum Programmschliesen habe. X kann man nur ausblenden wenn die ControlBox auf False ist.

    Ich möchte aber das Icon benutzen und das geht nicht wenn ich die COntrolbox ausschalte 😃

    Aber da habe ich auch die lösung über die Winapi gefunden leider nix .Net internes. Aber vorerst will ich mal alles machen das geht und ancher beschäftige ich mich mit WinApi.

    Muss auch Hooks bentzen weil man mit einer taste das fenster ein und ausblenden kann wird leider auch ned von .net unterstützt naja das tool wird mich noch so amche nerven kosten *g*

    lg seek



  • seek1338 schrieb:

    Das mit Opengl hab ich auch gelesen nur wie gesagt man muss ned gleich das Rad neu erfinden :).

    Ich wollte halt bei der Form das X oben ausblenden weil ich ein eigenes button zum Programmschliesen habe. X kann man nur ausblenden wenn die ControlBox auf False ist.

    Ich möchte aber das Icon benutzen und das geht nicht wenn ich die COntrolbox ausschalte 😃

    Aber da habe ich auch die lösung über die Winapi gefunden leider nix .Net internes. Aber vorerst will ich mal alles machen das geht und ancher beschäftige ich mich mit WinApi.

    Muss auch Hooks bentzen weil man mit einer taste das fenster ein und ausblenden kann wird leider auch ned von .net unterstützt naja das tool wird mich noch so amche nerven kosten *g*

    lg seek

    Du kannst aber einen Thread Process erstellen der im Hintergrund auf einen Tastendruck wartet...



  • LiGERWooD schrieb:

    Du kannst aber einen Thread Process erstellen der im Hintergrund auf einen Tastendruck wartet...

    Danke für die Info ich werd mal dannach suchen kann mir noch nix drunter vorstellen hab noch keine Vorstellugn zwischen Thread, Process und dem ganzen 🙂

    lg seek





  • Danke 🙂

    Wird noch etwas dauern bis ich das angehen kann.

    lg silviu



  • Ich hab mir mal deine Links angeschaut und hab folgende Klasse erstellt:

    #pragma once
    
    using namespace System::Threading;
    
    ref class keyEventThread  
    {
    public:
    
    	static void waitOnKey() {
    
    		while(1) {
    			MessageBox::Show("Test Thread");
    		}
    	}
    
    };
    

    Aufgerufen und gestartet wirds mit:

    Thread^ keyThread = gcnew Thread( gcnew ThreadStart( &keyEventThread::waitOnKey ) );
    keyThread->Start();
    

    Verstehe ich auch, aber ich weis nicht wie ich ohne Hooks systemweit ein Event(delegate) für die Taste F4 anlegen kann. Ich möchte immer wenn die Taste F4 gedrückt wird meine Form->Visible auf true oder false setzten.

    Also ne art ein/ausblende mechanismus.



  • Sag mal aber ich würde doch nicht für ein Form(Fenster) Minimieren/Schliessen/Wiederherstellen Visible verwenden sondern Hide() und ShowDialog()

    Wegen dem anderen muss auch erstmal suchen welche Schnistelle das in .Net ist die Allgemeine Tasenschläge Informationen immer abrufen kann.





  • Hab mich daweil noch nciht so mit Hide() und ShowDialog() beschäftigt dachet ist das gleiche ob Hide() oder Visible = false

    Danke das du wegen der Tastaturabfrage suchst ich hab daweil auch gegoogelt aber noch nix gefunden.

    lg seek



  • seek1338 schrieb:

    Hab mich daweil noch nciht so mit Hide() und ShowDialog() beschäftigt dachet ist das gleiche ob Hide() oder Visible = false

    Danke das du wegen der Tastaturabfrage suchst ich hab daweil auch gegoogelt aber noch nix gefunden.

    lg seek

    http://msdn.microsoft.com/de-de/library/system.windows.input.keyboard.aspx

    Na Visible ist, nur nicht dem Benutzer sichtbar machen oder doch, aber es ist nicht dann als Minimiert registriert. Dass kan dann Logische nachfolgende fehler haben, so wird dann ein Event was eintritt wenn das Fenster minimiert wird nicht eintreten, weil es ja, nur nicht dem Benutzer anzeigen ist. Ich denke Hide() behinhaltet aber genauso Visible = false aber eben noch mehr.



  • Danke hab auch das mitm Keybord gefunden, aber...

    http://msdn.microsoft.com/de-de/library/system.windows.input.aspx

    Ich hab kein sollchen Namespace wie gibts das? Ich find es auch nicht unter Verweise hinzufügen? *g*

    Vll weist du wo man das hinzufügen kann. Mein Projekt ist auf .net 3.5 ausgelegt, braucht ma nda vielleicht ein Update?

    Danke für deine flotten antworten & hilfe 🙂

    lg seek



  • Das ist WPF und da wirst Du es schwierig haben mit C++/CLI, da der Designer nur Forms unterstützt.
    Also das ist ganz einfach der falsche Anhaltspunkt...
    Simon



  • LiGERWooD schrieb:

    Ich denke Hide() behinhaltet aber genauso Visible = false aber eben noch mehr.

    Die aktuelle Implementation von Show() und Hide() sieht so aus:

    public void Show()
    {
        this.Visible = true;
    }
    public void Hide()
    {
        this.Visible = false;
    }
    

    Simon



  • Also dann weiß ich auch nicht, sorry seek1338. Vielleicht gibt es ja noch eine stelle in der Registrierungsdatenbank von Windows wo immer der letzte Tastenschlag hinterlegt wird. Dann bräuchte man diesen Schlüssel oder Wert immer nur regelmäsig prüfen auf "F4". Aber da könnten jetzt hier eigentlich auch mal die Professionalen in Visual C++ helfen.



  • Also leider hat noch kein c++ Guru geantwortet 🙂

    Ich hab mal folgendes gemacht ich weis nicht ob das gut is abre ich bekomm keine fehler:

    also diese Keyboard Class hat mich interessiert also hab ich die dazugehörige Dll "PresentationCore.dll" als Verweis eingerichtet und die "WindowsBase" um die Key Enumaration zu haben.

    Folgenden code habe ich in einem Timer:

    private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
    
    			 if(Keyboard::IsKeyDown(Key::F4)) 
    				MessageBox::Show("F4 down");
    
    		 }
    

    Mein Problem ist das reagiert nicht egal ob ich in der Form bin und das drücke oder Fokus außerhalb habe.

    Kann mir bitte wer sagen wieso das nicht funktioniert wenn ich die Dll die das zur aufgabe hat und keine Fehler sind?

    lg seek



  • Baue dass doch bitte mal in den Thread Process ein, mit einer endlos schleife (while) und dadrinn die prüfung. Also Keyboard::IsKeyDown wiedergibt ein bool (boolean)?



  • Ich denke ich weiß warum es nicht funktioniert: Weil genau die Miliesekunde zu erwischen in der, der User F4 gedrückt hat ist so unwarscheinlich wie groß das Intervall des Timers ist. Also jede 100ms bedeutet min. 99 mal die chanche das es verpasst wird.



  • Gute Idee hab ich schon versucht aber dann bekom mich die Fehlermldung Thread muss STA sei damit es den aufruf machen kann.

    Hab leider nix gefunden wie ich das zum STAThread machen kann.

    Wegen dem verfehlen hab ich mir auch schon gedacht also hab ich den timer sogar auf 1 runtergestellt und ziemlcih schnell gedrückt außerdem hab ich noch folgendes probiert:

    private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
    
    			 if(Keyboard::IsKeyDown(Key::X) > 0) 
    				MessageBox::Show("F4 down");
    			 if(Keyboard::IsKeyToggled(Key::X) > 0) 
    				MessageBox::Show("F4 toogle");
    			 if(Keyboard::IsKeyUp(Key::X) > 0) 
    				MessageBox::Show("F4 UP");
    
    		 }
    

    Leider reagiert er auf überhaupt keinem Status, anderen Key hab ich auch ausprobiert auch kein erfolg 😞

    lg silviu


Anmelden zum Antworten