RichEdit - EN_LINK

Jacal

Mitglied
Guten Abend,
Ich möchte in mein RichEdit-Feld mehrere "Links" eibauen.
Das ganze soll ungefär so aussehen:

---------------------------------
[Text]
(Bearbeiten)
---------------------------------
[Text]
(Bearbeiten)
---------------------------------
usw.

Bei einem Klick auf Bearbeiten soll der jeweils obere Text in ein anderes Fenster kopiert werden.

Momentan bin ich soweit, dass man Bearbeiten bereits anklicken kann (über CFE_LINK und WM_NOTIFY -> EN_LINK). Jetzt habe ich nur das Problem, dass ich nicht weiß, welches "Bearbeiten" angeklickt würde. Ideal wäre es, wenn ich jedem "Bearbeiten" intern eine Zahl zuweisen könnte...

Momentan sieht mein "Settext" so aus:
Code:
int tl;
    CHARFORMAT2 cf;

    tl = GetWindowTextLength(hWnd);

    // add new text
    SendMessage(hWnd, EM_SETSEL, tl, tl);
    SendMessage(hWnd, EM_REPLACESEL, FALSE, (LPARAM)szText);

    // fill struct
    memset( &cf, 0, sizeof(CHARFORMAT) );

    cf.cbSize = sizeof(CHARFORMAT);
    cf.dwMask = CFM_COLOR | CFM_LINK | CFM_UNDERLINE ;
    cf.dwEffects = CFE_UNDERLINE | CFE_LINK ;
    cf.crTextColor = crTextColor;

    // select last text inserted
    tl = GetWindowTextLength(hWnd);
    SendMessage(hWnd, EM_SETSEL, (WPARAM)(tl-strlen(szText)), (LPARAM)tl);

    // set color
    SendMessage(hWnd, EM_SETCHARFORMAT ,SCF_SELECTION, (LPARAM)&cf);

    // remove bracket
    tl = GetWindowTextLength(hWnd);
    SendMessage(hWnd, EM_SETSEL, tl, tl);

Ist es möglich, mithilfe von CHARFORMAT2 (also beim setzen des Textes), eigene, "versteckte" Informationen hinzuzufügen, welche ich nacher bei EN_LINK wieder abrufen kann?

Mfg, Jacal
 
Dir hat vermutlich bisher keiner geantwortet, weil keiner genug Informationen hatte.
Also, wie sieht das denn aus wo du das einbindest mit Text und Bearbeiten?
Ich meine eigentlich kannst du jedem Text ne ID geben, und jedem Bearbeiten Button/Lable auch, und wenn auf das lable geclickt wird, dann nimmste die ID und holst den Text mit der selben ID
 
Dir hat vermutlich bisher keiner geantwortet, weil keiner genug Informationen hatte.
Also, wie sieht das denn aus wo du das einbindest mit Text und Bearbeiten?
Ich meine eigentlich kannst du jedem Text ne ID geben, und jedem Bearbeiten Button/Lable auch, und wenn auf das lable geclickt wird, dann nimmste die ID und holst den Text mit der selben ID

Ok, ich versuche mein Problem nochmal zu erklären:

Ich habe ein Textfeld (Richedit). Darin steht an mehreren Stellen "Bearbeiten". Bei einem Klick auf "Bearbeiten" soll eine bestimmte, individuelle Aktion ausgeführt werden (zB beim ersten Bearbeiten eine 1 ausgegeben, beim 2ten eine 2).
Bearbeiten (<- bei Klick 1 übergeben)

Bearbeiten (<- bei Klick 2 übergeben)

Nun möchte ich aber wissen, welches "Bearbeiten" angeklickt wurde. Dazu hätte ich eben vor, beim setzen des Links vll. irgendwelche Informationen (1 oder 2) an eben diese Textstelle zu übergeben, welche ich später wieder abrufen kann.


Ich hoffe, das war verständlicher :)
 
Kannst du nicht die Zeile überprüfen, in der der angeklickte Text stand?
Das würde doch dein Problem lösen, solange du nur ein Bearbeiten pro zeile hast.
 
Zurück