Portieren Scintilla DirectMessage von C/C++

    • Offizieller Beitrag

    In Anlehnung an dieses Thema wollte ich mal probieren die Scintilla-interne Messagefunktion zu nutzen.

    Aber C/C++ ist nicht meine Baustelle, da gerät Portieren zur reinen Raterei. Kann mir jemand sagen, wie man das in AutoIt umsetzt (falls es überhaupt geht)?

    Hier mein Versuch:

  • So wie ich das sehe, klappt das so:

    • Offizieller Beitrag

    Leider nicht, da der Verweis auf die Funktion fehlt.

    Ich verstehe es so:

    SciFnDirect pSciMsg = (SciFnDirect)SendMessage(hSciWnd, SCI_GETDIRECTFUNCTION, 0, 0);

    SCI_GETDIRECTFUNCTION gibt den Pointer auf die Scintilla-interne Sendmessage-Funktion zurück: pSciMsg

    sptr_t pSciWndData = (sptr_t)SendMessage(hSciWnd, SCI_GETDIRECTPOINTER, 0, 0);

    SCI_GETDIRECTPOINTER gibt den Pointer auf das ScintillaFensterHandle zurück: pSciWndData

    sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam);{

    return pSciMsg(pSciWndData, iMessage, wParam, lParam);

    }

    Die interne Funktion wird mittels Pointer aufgerufen und der Pointer für das Handle übergeben (plus Msg/Parameter).

    Eigentlich sollte AutoIt mit Funktionspointern klarkommen, wurde ja vor nicht allzu langer Zeit integriert - aber der Handle-Pointer scheint das Problem zu sein, wenn ich das richtig interpretiere.

  • sorry, hatte c&p-fehler... so gehts jetzt

    so bekomme ich jedenfalls die richtigen Werte aus dem Scite-Fenster

    Zeilenlänge der Zeile incl CRLF und Zeilenlänge der Zeile in der der Cursor steht