Solved

using  CRichEditCtrl::FindText  ..

Posted on 2002-03-20
7
1,142 Views
Last Modified: 2013-11-20
hi all!

I have build my own Find/Replace dialog ( derived from CDialog class) to search into a CRichEditCtrl .
now, everything is working just fine except 1 thing: how can implement "direction up" option ?? I mean to search from the current position to the beginning of the document ?? .. FindText method can't do it ..

10x
0
Comment
Question by:dragosh
  • 4
  • 3
7 Comments
 
LVL 3

Expert Comment

by:GGRUNDY
ID: 6884241
The documentation on CRichEditCtrl::FindText says

Call this function to find text within the rich edit control. You can search either up or down by setting the proper range parameters in theCHARRANGE structure within the FINDTEXTEX structure.

I assume this means you just reverse the values of
cpMin & cpMax to search up.

Cheers

0
 
LVL 3

Author Comment

by:dragosh
ID: 6884922
hi ggrundy

i've try that and it doesn't help ... in this way I set the range of text where to search , but NOT the "direction up" .. if I set cpMin = 0 and cMax let's say 1000 (current position) and click Find next I get the first match from the beginning of the document, not first match from current position ..

any ideas ??

10x
0
 
LVL 3

Expert Comment

by:GGRUNDY
ID: 6884943
Are you saying that you have tried

cpMin = nCurrentPosition;
cpMax = 0;

and it doesn't work???
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 3

Author Comment

by:dragosh
ID: 6884952
hi ggrundy

yes: it returns -1 ..
0
 
LVL 3

Accepted Solution

by:
GGRUNDY earned 50 total points
ID: 6885387
Here's an answer (AND IT's NOT PRETTY). :-(

The following code...
================================================
int n;
m_edit.SetWindowText("When your mom is mad with your dad, don't let her brush your hair.");
FINDTEXT range = {{0,0},"your"};
m_edit.SetSel(-1,-1);
m_edit.GetSel(range.chrg);
range.chrg.cpMax=0;
while((n = m_edit.SendMessage(EM_FINDTEXT, 0, (LPARAM)&range))!=-1){
  TRACE("text found at %d\n",n);
  range.chrg.cpMin = n;
  }
===================================================
Produces the following output...
text found at 56
text found at 26
text found at 5
===================================================
Indicating that indeed you can search backwards by swapping the cpMin & cpMax values around, BUT....

a) you can't use -1 to indicate the end of the file; and
b) you can't use version 1.0 of the rich edit control.
Because I created my Rich Edit control using the dialog resource editor I had to subsequently manually edit my .rc file as text and change
this line
CONTROL  "",IDC_RICHEDIT,"RichEdit" ,ES_MULTILINE | WS_BORDER | WS_TABSTOP,39,26,116,83

to this
CONTROL "",IDC_RICHEDIT1,"RichEdit20A" ,ES_MULTILINE | WS_BORDER |WS_TABSTOP,39,26,116,83

in order to be using version 2 of the rich text control.
(Hint use Spy++ to check the class of your rich text window).

Cheers Greg




"RichEdit20A"
0
 
LVL 3

Author Comment

by:dragosh
ID: 6885534
sorry about rejecting your answer ..

it works only with version 2 of rich text control ?
0
 
LVL 3

Author Comment

by:dragosh
ID: 6885574
hi again

in MSDN says about this .. in Rich Edit 2.0 or later - FR_DOWN etc.

i'am using CRichEditCtrl 1.0 , so that's way it doesn't work... i'll cosider to use 2.0

10x for your tips
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
sum28 challenge 31 117
zeroMAx challenge 20 125
Dell Alienware Graphics Amplifier Driver for non-Alienware systems 18 454
Problem to App 4 116
Introduction: Finishing the grid – keyboard support for arrow keys to manoeuvre, entering the numbers.  The PreTranslateMessage function is to be used to intercept and respond to keyboard events. Continuing from the fourth article about sudoku. …
Introduction: Dialogs (2) modeless dialog and a worker thread.  Handling data shared between threads.  Recursive functions. Continuing from the tenth article about sudoku.   Last article we worked with a modal dialog to help maintain informat…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.

685 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question