Größe der Steuerelemente verändern



  • hi,

    ich habe in meinem Programm ein TreeCtrl und ein MSFlexGrid direkt nebeneinander.
    Jetzt möchte ich dem Benutzer die Möglichkeit geben, die Breiten der beiden Steuerelemente zu verändern. Also das er sozusagen die Grenze verschiebt (siehe WindowsExplorer).
    Ich habe mir jetzt überlegt, dass mit LButtonDown und LButtonUp zu machen, allerdings werden diese Nachrichten ja nicht immer an das Hauptfenster geschickt, sondern an das jeweilige Fenster, auf dem sich die Maus zur Zeit befindet.
    Bei dem FlexGrid ist das noch kein Problem, da ich da die MouseUp-Nachricht abfangen und an das Hauptfenster weiterleiten kann. Beim TreeCtrl funzt das allerdings nicht; da gibt es nur die Click-Nachricht.

    Was kann ich jetzt tun, damit die Nachricht auch an das Hauptfenster geschickt wird??
    Oder gibt es noch eine ganz andere Möglichkeit, mein Problem zu lösen??

    Danke
    Dommel



  • Erzeuge einfach eine neue Klasse die auf CTreeCtrl basiert, z.B. kannst du die ➡Klasse CMyTreeCtrl erzeugen. Da kannst du die OnLButtonDown-Methode überschreiben. Für den Fall das du nicht weißt, wie das geht habe ich dir den Code angegeben:

    // H E A D E R   D E R   D A T E I
    class CMyTreeCtrl : public CTreeCtrl
    {
    // Konstruktion
    public:
    	CMyTreeCtrl();
    
    // Attribute
    public:
    
    // Operationen
    public:
    
    // Überschreibungen
    	// Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen
    	//{{AFX_VIRTUAL(CMyTreeCtrl)
    	virtual void OnLButtonDown(UINT nFlags, CPoint point);	// !!!
    	//}}AFX_VIRTUAL
    
    // Implementierung
    public:
    	virtual ~CMyTreeCtrl();
    
    	// Generierte Nachrichtenzuordnungsfunktionen
    protected:
    	//{{AFX_MSG(CMyTreeCtrl)
    	//}}AFX_MSG
    
    	DECLARE_MESSAGE_MAP()
    };
    
    //  C P P - T E X T
    .
    .
    // Konstruktor, Destruktor...
    .
    .
    BEGIN_MESSAGE_MAP(CMyTreeCtrl, CTreeCtrl)
    	//{{AFX_MSG_MAP(CMyTreeCtrl)
    	ON_WM_LBUTTONDOWN()  // !!!
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    // Überschreibe OnLButtonDown-Methode
    void CMyTreeCtrl::OnLButtonDown(UINT nFlags, CPoint point)
    {
    	// Mein Code...
    }
    


  • Es soll nicht ➡Klasse sondern Klasse heißen (Sollte keine Verwirrung werden)

    ...
    Hat's denn geklappt?



  • Danke für die Antwort. Werds gleich mal ausprobieren.

    Ich hab es jetzt erstmal so gemacht, dass ich über der Grenze eine kleine Bitmap platziert habe und man dann mit der Bitmap die Größen verändern kann.
    Das geht ganz gut, weil die Bitmap vom Typ CStatic ist, und hier das Hauptfenster die Nachrichten bekommt.

    Ich werd deine Methode aber gleich mal ausprobieren.



  • so, dass mit dem LButtonUp hat gefunzt. danke nochmals.

    allerdings klappt das mit dem Größe verändern noch nicht. Deshalb belasse ich es wohl erstmal bei der Methode mit dem Bitmap


Anmelden zum Antworten