Rich Edit
4 отговора
120 прегледа
Rich Edit
Измежду всичките стандартни Windows9х прозоречни класове има един, наречен Rich Edit Text Control, който е много полезен в някои случаи.
Проблемът ми с него е следния: как при добавяне на нов ред съдържанието на Rich Edit-та да се скролира по такъв начин, че последния ред да е най-отдолу на клиентската област? Естествено, първото нещо, за което се сеща човек е да се скролира с разликата между общото количество редове и видимите такива относително началото. Проблемът е, че няма начин да разбереш броя на видимите редове - все пак размерът им може да бъде различен. Другото нещо, което опитах, е да взема обхвата на вертикалния скрол и да го позиционирам на максималната позиция от обхвата. Това добре, скрола си се премества, ама съдържанието на прозореца не мърда :(
И така, общо взето, приемам предложения всякакви :)
Si Vis Pacem, Para Bellum
Проблемът ми с него е следния: как при добавяне на нов ред съдържанието на Rich Edit-та да се скролира по такъв начин, че последния ред да е най-отдолу на клиентската област? Естествено, първото нещо, за което се сеща човек е да се скролира с разликата между общото количество редове и видимите такива относително началото. Проблемът е, че няма начин да разбереш броя на видимите редове - все пак размерът им може да бъде различен. Другото нещо, което опитах, е да взема обхвата на вертикалния скрол и да го позиционирам на максималната позиция от обхвата. Това добре, скрола си се премества, ама съдържанието на прозореца не мърда :(
И така, общо взето, приемам предложения всякакви :)
Si Vis Pacem, Para Bellum
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.
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.
Re: Rich Edit
Опитай да изчислиш големината на шрифта на всеки ред (ше е по-лесно ако всички редове са с еднаква големина), да ги събереш и разделиш и да получиш приблизителен брой видими редове. После действай по първия предложен от теб начин. Доста е дървено, но може и да сработи ...
Mixy
Mixy
Re: Rich Edit
Благодаря ви за съветите, но решението се оказа твърде просто:)
SendMessage(hRichEditWnd, WM_VSCROLL, SB_BOTTOM, 0);
Si Vis Pacem, Para Bellum
SendMessage(hRichEditWnd, WM_VSCROLL, SB_BOTTOM, 0);
Si Vis Pacem, Para Bellum
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.....