Richtextbox Messageproblem



  • Hallo zusammen,

    ich habe ein Komponente gebastelt, die von der RichTextBox erbt. Innerhalb dieser neuen Komponente wird WndProc überschrieben:

    protected override void WndProc(ref Message m)
    {
        switch(m.Msg)
        {
            case 0xF:   //WM_PAINT
                if (draw)
    			    base.WndProc(ref m);
    		    else
    			    m.Result = IntPtr.Zero;
                break;
            default:
                base.WndProc(ref m);
                break;
        }
    }
    

    WM_PAINT wird abgefangen und eventuell das Neuzeichnen verhindert. Wenn ich nun auf das Lines Objekt zugreifen möchte (zB Lines.Length), dann wird eine EM_STREAMOUT Message durch die WndProc Funktion geschickt. Dabei scheint es irgendeinen Fehler zu geben, da Lines.Length in diesem Fall immer 0 zurückgibt. Auch Lines in ein neues string[] Array kopieren, funktioniert nicht, das Array ist danach leer. Wenn ich die WndProc Funktion auskommentiere, sind die Fehler weg. Kann mir dabei jemand helfen?

    greetz KN4CK3R



  • Hi,

    an welcher Stelle willst du denn auf dein Objekt zugreifen?

    Vielleicht hilt es schon, wenn du nicht versuchst die ganze WndProc umzubasteln, sondern nur die entsprechenden Methoden z.Bsp OnPaint. Dann musst Du Dich auch nicht mit jeder Nachricht herumschlagen, sondern hast Deinen Aufruf nur dann, wenn es Dich interessiert.

    Grüße,



  • die Stelle ist egal, der Fehler tritt immer auf. Ich habe das ganze jetzt anders gelöst, da ich nicht wusste, wie ich bei OnPaint das Zeichnen verhindern kann. Ich schicke momentan einfach die Message WM_SETREDRAW mit dem Parameter 0, dadurch wird das Neuzeichnen verhindert.

    greetz KN4CK3R


Anmelden zum Antworten