Maximieren durch Doppelklick



  • Die Frage versteh ich leider nicht...
    Könntest du Sie anders formulieren?



  • Du bist im falschen Forum, dass gehört in die MFC



  • Also es geht darum das ich das ganze wie minimieren, maximieren und schließen ausgemacht habe und habe es selbst gemacht durch buttons... Nun kommt das Problem wenn man durch doppel klick auf das Fenster drückt, verschiebt es sich nach links oben, und ich würde gerne dieses verhindern...



  • Falsch schrieb:

    Du bist im falschen Forum, dass gehört in die MFC

    Muss nicht sein. Ich tippe eher darauf, dass der Fragesteller eine WinForms Applikation hat und jetzt mit dem falschen Mittel (Windows Messages abfangen) irgendwas zu erreichen versucht.
    Ich rate davon ab Anwendungen mit C++/CLI zu entwickeln. Besonders für Anfänger.
    (C++/CLI eignet sich um die Brücke zwischen managed und unmanaged Code zu schlagen, nicht für "mehr".)
    Simon



  • itap schrieb:

    Die Frage versteh ich leider nicht...
    Könntest du Sie anders formulieren?

    Wenn du mich meinst: Wieso fängst du nicht WM_NC*BUTTONDBLCLK ab?

    protected override void WndProc(ref Message m)
    {
      /* ... */
    
      // Achtung Psydocode!
      switch(m.Msg)
      {
        // Doppelclicks im Nichtclientbereich ignorieren:
        case WM_NCLBUTTONDBLCLK:
        case WM_NCMBUTTONDBLCLK:
        case WM_NCRBUTTONDBLCLK:
          m.Result = (IntPtr) HTNOWHERE;
          break;
    
        case WM_NCHITTEST:
          if(m.Result == (IntPtr)HTCLIENT)
          {
            m.Result = (IntPtr)HTCAPTION;
          }
          else
            base.WndProc(ref m);
          break;
        default:
          base.WndProc(ref m);
      }
    }
    


  • Habe es nun so versucht, aber er zeigt mir 4 Fehler an:

    Fehler CS0103: Der Name "WM_NCLBUTTONDBLCLK" ist im aktuellen Kontext nicht vorhanden.
    Fehler CS0103: Der Name "WM_NCMBUTTONDBLCLK" ist im aktuellen Kontext nicht vorhanden.
    Fehler CS0103: Der Name "WM_NCRBUTTONDBLCLK" ist im aktuellen Kontext nicht vorhanden.
    Fehler CS0103: Der Name "HTNOWHERE" ist im aktuellen Kontext nicht vorhanden.

    protected override void WndProc(ref Message m)
            {
                const int WM_NCHITTEST = 0x84;
                const int HTCLIENT = 0x01;
                const int HTCAPTION = 0x02;
    
                base.WndProc(ref m);
    
                if (m.Msg == WM_NCHITTEST && m.Result == (IntPtr)HTCLIENT)
    
                {
                    m.Result = (IntPtr)HTCAPTION;
                }
    
                // Achtung Psydocode!
                switch (m.Msg)
                {
                    // Doppelclicks im Nichtclientbereich ignorieren:
                    case WM_NCLBUTTONDBLCLK:
                    case WM_NCMBUTTONDBLCLK:
                    case WM_NCRBUTTONDBLCLK:
                        m.Result = (IntPtr)HTNOWHERE;
                        break;
    
                    case WM_NCHITTEST:
                        if (m.Result == (IntPtr)HTCLIENT)
                        {
                            m.Result = (IntPtr)HTCAPTION;
                        }
                        else
                            base.WndProc(ref m);
                        break;
                    default:
                        base.WndProc(ref m);
                } 
            }
    

    Danke trotzdem bisher 🙂



  • Sag mal bitte womit Du arbeitest...
    C++/CLI oder MFC.
    Du mischt hier Code, dass ist nicht gut.



  • Ich denke ich arbeite mit Visual C# und Visual C++.
    Ich habe es nicht im MFC bereich gepostet, da ich mit Windows Forms arbeite.

    Gruß



  • theta schrieb:

    Falsch schrieb:

    Du bist im falschen Forum, dass gehört in die MFC

    Muss nicht sein. Ich tippe eher darauf, dass der Fragesteller eine WinForms Applikation hat und jetzt mit dem falschen Mittel (Windows Messages abfangen) irgendwas zu erreichen versucht.
    Ich rate davon ab Anwendungen mit C++/CLI zu entwickeln. Besonders für Anfänger.
    (C++/CLI eignet sich um die Brücke zwischen managed und unmanaged Code zu schlagen, nicht für "mehr".)
    Simon

    ...



  • Hey,

    ist zwar shcon lange her, abe rich hatet gerade das selbe Problem, lässt sich lösen indem man die MaximizeBox des Fensters auf false stellt.

    Dannach löst auch ein Doppelklick auch keine Maximierung mehr aus ;)#

    MfG der gast


Anmelden zum Antworten