EM_FINDTEXT funktioniert nicht wie es soll



  • CurrentLine = SendMessage(hWnd, EM_LINEFROMCHAR, -1, 0);
    Start       = SendMessage(hWnd, EM_LINEINDEX, CurrentLine, 0);
    
    printf("\n---------\n%d", Start);
    
    if(CurrentLine == (SendMessage(hWnd, EM_GETLINECOUNT, 0, 0) - 1))
    {
        End = SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0);
    }
    else{
        End = SendMessage(hWnd, EM_LINEINDEX, CurrentLine + 1, 0);        
        End =- SendMessage(hWnd, EM_GETLINECOUNT, 0, 0);
        //End =- 2;
    }
    
    printf("\n%d\n---------\n", End);
    
    FindText.lpstrText  = Keywords[0];
    FindText.chrg.cpMin = Start;FindText.chrg.cpMax = End + 1;
    
    Pos = SendMessage(hWnd, EM_FINDTEXT, FR_MATCHCASE, (LPARAM)&FindText);
    if(Pos > -1)
    {   
        Range.cpMin = Pos;
        Range.cpMax = Pos + 4;
        SendMessage(hWnd, EM_EXSETSEL, 0, (LPARAM)&Range);
    
        memset(&Format, 0, sizeof(Format));    Format.cbSize    = sizeof(Format);
        Format.dwMask    = CFM_BOLD;
        Format.dwEffects = CFE_BOLD;
        SendMessage(hWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&Format);         
        printf("First Char: %d\nLast Char: %d\nPos: %d\n\n", Start, End, Pos);
    }
    

    "test" wird gesucht, ich gebe "test " ein aber nix passiert, drücke ich enter (also neue zeile), wirds gefunden, das sollte aber nicht so sein da Start und End auf der nächsten zeile liegen.

    Eigentlich sollte test nach dem ersten leerzeichen selekteirt werden.

    MfG gosha16



  • keiner eine idee?

    das ganze wird in WM_CHAR des RichEdits abgehandelt.

    //Edit gelöst...
    Start mit End tauschen...

    FindText.chrg.cpMin = End + 1;
    FindText.chrg.cpMax = Start;


Anmelden zum Antworten