[OpenSource] ExplorerNavigationButton

    • Release

    Es gibt 39 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

      Trade schrieb:

      Jo, das wurde mir auch geraten, aber dazu braucht man halt erst nen Resource Hacker (hat nicht jeder zur Hand) und außerdem nutzt du dann Bilder, was nicht immer sehr schön ist, besonders solche Controls sollte man mit GDI+ machen

      Nein, ich meinte, dass man die Icon-Resource direkt aus der DLL laden soll (dafür gibt es tolle WinAPI Befehle)

      Solange man sie nicht skalieren muss, sind Bitmaps viel geeigneter als es selbst zu zeichnen. Wieso sind die Windows Icons (und auch der original Nav-button) denn alle als Bild abgespeichert (oft in verschiedenen Größen von 16x16 bis 256x256) ? Weil es sinnlos ist sie zur Laufzeit aus einem Algorithmus zu generieren... Und wieso sollte man einen Nav-Button überhaupt skalieren?
      Wie komm ich den da ran? Ich hab gesucht, es gibt diesen Button nicht als fertiges Element in System.Windows.Forms.VisualStyles, und den ClassName kenn ich doch nicht und ich hab auch keinen VisualStyleEdito, mit dem ich das nachschauen könnte.
      Das istn normaler OwnerDrawButton. Du müsstest mal raussuchen in welcher Dll die Bilder sitzen und den ID hohlen. Dann einfach LoadLibrary(), LoadBitmap (falls es ne Bitmap ist) und FreeLibrary()
      /Edit
      Die sitzen in ExplorerFrame.dll. 577 - 579 Bitmap Resource sind normal, hover und disabled. Musste mal durchsuchen
      Die Bilder sollten in der ExplorerFrame.dll liegen, soweit ich weiß.
      Aber wie komme ich an die IDs? Das läuft dann wohl doch auf Resourcehacking hinaus, oder?

      Edit: ups, Edit nicht gesehen, danke dir (wie auch immer dus so schnell rausgefunden hast :P). Ich probier mal ein bisschen rum.
      Nabend,

      da das Control leider keine transparenten Hintergründe unterstützt, suche nach einer Möglichkeit das Ganze irgendwie anders hinzubringen, denn das soll auf Aero-Glas gezeichnet werden. Gibt es da denn einen Weg?


      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Fragen per PN, denn dafür ist das Forum da :!:
      Jo, wird selbst compiled. Alles klar, dankeschön, wieder auch was gelernt ^^
      Wenn Du willst, kannste das ja auch standardmäßig mal reinhauen ;)
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Fragen per PN, denn dafür ist das Forum da :!:
      Hallo @Artentus,

      mir ist unter Windows 10 etwas aufgefallen, da ich gerade einen Dialog in der nUpdate Administration bearbeite.
      Die offizielle Unterstützung lief ja bis Windows 8, soweit ich das richtig in Erinnerung habe (und im Startpost lese).

      Schau Dir das mal an:

      Screenshots


      Unter Windows 10 sieht der Button enabled so aus:


      Sieht man beim Hover (beide Buttons sind enabled):


      Und so sieht er aus, wenn er disabled ist:




      Du siehst, es ist leicht irreführend. Eigentlich würde man meinen, dass die graue Farbe für Disabled steht und die weiße Farbe für Enabled. Aber es ist eben genau andersrum. Ich nehme an, dass kommt durch den Standard-Renderer, weil Windows 10 nicht explizit unterstützt ist?
      Ich weiß ja nicht, ob Du das Projekt schon ganz abgeschlossen hast, aber ich wollte das nur mal melden. ;) Vielleicht hast Du ja mal Zeit und Lust mit GDI+ was für Windows 10 zu basteln. Das Problem ist allerdings, dass ich selber nicht weiß, wie der unter Windows 10 aussieht. So wie ich das sehe sind das ja mittlerweile nur noch die Pfeile ohne was außenrum. Im Explorer sehen die zumindest so aus.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Fragen per PN, denn dafür ist das Forum da :!:
      Ja, unter Window 10 sind es einfach nur noch die Pfeile. Dementsprechend kannst du einfach das Windows 8-Theme kopieren, die Umrandung entfernen und die Farben anpassen, sollte nicht allzu schwer sein.
      Persönlich werd ich hier allerdings nichts mehr dran machen.

      Unter Windows 8 und 10 solltest du übrigens nicht mehr den Fensterrahmen erweitern.
      Okay, alles klar.

      Artentus schrieb:

      Unter Windows 8 und 10 solltest du übrigens nicht mehr den Fensterrahmen erweitern.
      Das ist halt seit Aero-Zeiten mit Windows 7 damals so geblieben. :P Aber Du ahst recht. Vielleicht sollte ich das Feature auch ganz entfernen, da eh die Frage ist, ob das überhaupt jemand verwendet. Und dann würde ich mir gleich noch den erweiterten Rahmen und die extra Klasse(n) sparen.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Fragen per PN, denn dafür ist das Forum da :!:
      Ja, das schon. Aber wenn ich das Feature raushaue, dann bräuchte ich den ja gar nicht mehr. :P

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Fragen per PN, denn dafür ist das Forum da :!: