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:
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:
Es sind mehrere RichEdit-Controls, die auf den Tabs eines TabControls liegen.
Kann mir einer sagen, was da nicht stimmt?
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);
.......
}
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();
Kann mir einer sagen, was da nicht stimmt?