FindText findet Text in CRichEditCtrl nicht

jokey2

Erfahrenes Mitglied
In meiner Applikation habe ich ein CRichEditCtrl, in dem ich Text ausgebe. Dafür habe ich eine Suchfunktion geschrieben, die die CRichEditCtrl-Funktion FindText nutzt.
Das Problem ist, es funktioniert nicht. In einer anderen Anwendung funktioniert genau dieser Code perfekt! Hier ist er mal:

Code:
    FINDTEXTEX structFindText;
    DWORD dwFindFlags = 0;
    static CHARRANGE crSearch = {-1, -1};

    memset(&structFindText, 0, sizeof(structFindText));

    if(!m_pParent->m_dlgFindText.m_cstrSearchText.IsEmpty())
    {
        if(m_pParent->m_dlgFindText.m_bMatchCase)
            dwFindFlags |= FR_MATCHCASE;
        if(m_pParent->m_dlgFindText.m_bWholeWord)
            dwFindFlags |= FR_WHOLEWORD;
        if(m_pParent->m_dlgFindText.m_bSearchSelection)
        {
            if(m_iSearchStartIndex == 0)
            {
                m_pEditWnd->GetSel(structFindText.chrg);
                crSearch = structFindText.chrg;
            }
            else
            {
                structFindText.chrg = crSearch;
                structFindText.chrg.cpMin = m_iSearchStartIndex;
            }
        }
        else
        {
            structFindText.chrg.cpMin = m_iSearchStartIndex;
            structFindText.chrg.cpMax = -1;
        }
        structFindText.lpstrText = (LPTSTR)(LPCTSTR)(m_pParent->m_dlgFindText.m_cstrSearchText);

        //Hier lese ich den Text zum Testen aus, alles ok
        CString cstrEdit;
        m_pEditWnd->GetWindowText(cstrEdit);

        m_pEditWnd->FindText(dwFindFlags, &structFindText);

        .......
    }
FindText liefert immer -1 zurück, findet also keinen Text. Dabei ist es egal, ob ich MatchCase oder WholeWord einstelle oder nicht oder ob ich in einer Auswahl suchen lasse oder im gesamten Text. m_iSearchStartIndex int anfänglich 0.

Das RichEdit wird so erzeugt:
Code:
    CRichEditCtrl * pNewEdit = new CRichEditCtrl();
    pNewEdit->Create(WS_BORDER | WS_VSCROLL | WS_HSCROLL | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_LEFT | ES_MULTILINE | ES_READONLY, crTab, this, iNewID);
    pNewEdit->SetWindowPos(NULL, crTab.left, crTab.top, crTab.Width(), crTab.Height() - 22, SWP_NOZORDER);
    pNewEdit->SetEventMask(ENM_MOUSEEVENTS); //(0x03FF001F);
    pNewEdit->EnableWindow();
Es sind mehrere RichEdit-Controls, die auf den Tabs eines TabControls liegen.

Kann mir einer sagen, was da nicht stimmt?
 

Neue Beiträge

Zurück