Context Menü in RichEdit

  • Abend zusammen,

    hätte mal wieder eine Frage. Und zwar wie kann ich ein ContextMenü auf ein RichEdit schreiben? Weil irgendwie klappt das ganze nicht (mit der Standart Funktionen GUICtrlCreateConextMenu()).
    Ich hoffe es kann mir einer dabei helfen.

    MfG

    MehmeX

  • Ich hab mal gewühlt und habe etwas im US Forum gefunden, etwas umgeschrieben damit es mir besser gefällt :)

    Spoiler anzeigen
    [autoit]

    ; Includes
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Gui erzeugen
    $Gui = GUICreate("EditBox",300,300)

    [/autoit] [autoit][/autoit] [autoit]

    ; Eine Editbox reinpacken
    $Edit = GUICtrlCreateEdit("", 20, 20,260,260)

    [/autoit] [autoit][/autoit] [autoit]

    ; Ein Dummy-Menü erzeugen
    $dummyM = GUICtrlCreateDummy()
    $cm = GUICtrlCreateContextMenu($dummyM)
    $cm1 = GUICtrlCreateMenuItem("Eintrag 1", $cm)
    $cm2 = GUICtrlCreateMenuItem("Eintrag 2", $cm)
    GUICtrlCreateMenuItem("", $cm)
    $cm3 = GUICtrlCreateMenuItem("Programm beenden (belegt)", $cm)

    [/autoit] [autoit][/autoit] [autoit]

    ; Gui anzeigen lassen
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ; Die nette Endlosschleife
    While 1
    ; Cursor Informationen abfragen
    $CurInfo = GUIGetCursorInfo($Gui)
    if $CurInfo[3] = 1 And $CurInfo[4] = $Edit then ShowMenu($Gui, $cm)

    $Msg = GUIGetMsg()
    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cm3
    Exit
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ; Diese Funktion überschreibt das Standart Kontextmenü mit unserm Dummy Menü (Quelle US Autoit Forum)
    Func ShowMenu($hWnd, $nContextID)
    Local $hMenu = GUICtrlGetHandle($nContextID)

    $arPos = MouseGetPos()

    Local $x = $arPos[0]
    Local $y = $arPos[1]

    DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
    EndFunc

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Hi,

    ich wollte auch gerne eine ContextMenu im einem RichEdit nutzen aber leider bekomm ich das nicht so hin.

    Hab mir den Link schon angeschaut aber werde nicht ganz schlau draus.

    Ich hab diesen Ansatz mal versucht allerdings erfolgslos.

    [autoit]


    $RichMENU[0] = GUICtrlCreateContextMenu(GUICtrlCreateDummy())
    $RichMENU[1] = GUICtrlCreateMenuItem("Undo Ctrl-Z", $RichMENU[0])
    $RichMENU[2] = GUICtrlCreateMenuItem("Redo Ctrl-Y", $RichMENU[0])
    GUICtrlCreateMenuItem("", $RichMENU[0])
    $RichMENU[3] = GUICtrlCreateMenuItem("Cut Ctrl-X", $RichMENU[0])
    $RichMENU[4] = GUICtrlCreateMenuItem("Copy Ctrl-C", $RichMENU[0])
    $RichMENU[5] = GUICtrlCreateMenuItem("Paste Ctrl-V", $RichMENU[0])

    [/autoit]

    Volgendes soll möglich sein, mit einme click der rechten Maustaste auf ein wort soll diesen markiert werden und danach ein ContextMenu sich öffnen an welches ich die rüggabe von einer Funktion übergeben.

    Lange reden kurzer sinn, es geht um eine Rechtschreibeprüfung in Echtzeit.
    Das klappt auch schon so weit, jetzt fehlt nur noch das ContextMenu welches die Wortvorschläge enthällt.

    wenn gewünscht kann ich ja den Source noch posten.

    mfg

    nefas