Rich Edit

4 отговора 120 прегледа
#1

Rich Edit

Измежду всичките стандартни Windows9х прозоречни класове има един, наречен Rich Edit Text Control, който е много полезен в някои случаи.
Проблемът ми с него е следния: как при добавяне на нов ред съдържанието на Rich Edit-та да се скролира по такъв начин, че последния ред да е най-отдолу на клиентската област? Естествено, първото нещо, за което се сеща човек е да се скролира с разликата между общото количество редове и видимите такива относително началото. Проблемът е, че няма начин да разбереш броя на видимите редове - все пак размерът им може да бъде различен. Другото нещо, което опитах, е да взема обхвата на вертикалния скрол и да го позиционирам на максималната позиция от обхвата. Това добре, скрола си се премества, ама съдържанието на прозореца не мърда :(

И така, общо взето, приемам предложения всякакви :)

Si Vis Pacem, Para Bellum
Отговор
в отговор на MиГ-31 #2

Re: Rich Edit

ON_EN_MAXTEXT The current insertion has exceeded the specified number of characters for the edit control and has been truncated. Also sent when an edit control does not have the ES_AUTOHSCROLL style and the number of characters to be inserted would exceed the width of the edit control. Also sent when an edit control does not have the ES_AUTOVSCROLL style and the total number of lines resulting from a text insertion would exceed the height of the edit control.


void LineScroll( int nLines, int nChars = 0 );

Parameters

nLines

Specifies the number of lines to scroll vertically.

nChars

Specifies the number of character positions to scroll horizontally. This value is ignored if the rich edit control has either the ES_RIGHT or ES_CENTER style. Edit styles are specified in Create.

Remarks

Call this function to scroll the text of a multiple-line edit control.



Отговор
в отговор на MиГ-31 #3

Re: Rich Edit

Опитай да изчислиш големината на шрифта на всеки ред (ше е по-лесно ако всички редове са с еднаква големина), да ги събереш и разделиш и да получиш приблизителен брой видими редове. После действай по първия предложен от теб начин. Доста е дървено, но може и да сработи ...

Mixy
Отговор
в отговор на MиГ-31 #4

Re: Rich Edit

Благодаря ви за съветите, но решението се оказа твърде просто:)

SendMessage(hRichEditWnd, WM_VSCROLL, SB_BOTTOM, 0);


Si Vis Pacem, Para Bellum
Отговор
в отговор на MиГ-31 #5

Re: Rich Edit

Towa syshto moze da se izpolzwa no wse pak ti trqbwa da izwikash SendMessage na tochno opredeleno mqsto, a to e funkciqta za obrabotka na EN_MAXTEXT. Reshenieto da izpolzwash izprashtane na syobshtenie obache e po bawno otkolkoto da izpolzwash direktno funkciqta za skrolirane.....

Отговор