|
Программирование >> Программирование на языке c++
Мыть Нажатие правой кнопки Вызов функции EvLBullonDown myedit -:\Рс1е1еЦпе(-1): Выюв функции E\RButlonDowTi my edU ->С1еаг(); Удаление текмдей линии, если левая кнопка нажата в этой области TEdil Class йцукенпнниц! 12345 олд ji4CMmb6ro-<- фывапролджэ Эта функция наследуется из класса TStatic Удаление всего текста при нажатии правой кнопки в этой области Выделение текущей линии (перемещение -курсора на Л1тию и нажаше левоГ! кнопки мыши ) Тсксг, введенный с клавиаг>ры nepcMenteime гексз а вверх-вни i и вправо-влево Рис. 9.32. Пример работы с объектом класса TEdit : TEdit(parent,ID,text,x,y,w,h,textLen,multiline,module) {} protected: void EvLButtonDown (UINT modKeys,TPoint& point); void EvRButtonDown (UINT modKeys,TPoint& point); void EvKeyDown(UiNT key, UINT repeatCount, UINT flags); DECLARE RESPONSE TABLE(my edit); }; DEFINE RESP0NSE TABLE1(my edit,TEdit) EV WM LBUTTONDOWN, EV WM RBUTTONDOWN, EV WM KEYDOWN, END RESPONSE TABLE; void my edit :: EvLButtonDown (UINT modKeys,TPoint& point) { TEdit::EvLButtonDown(modKeys, point); не следует забывать про эту строку I Parent->SendNotification(Attr.ld, UPDATE WINDOW, HWindow); } void my edit :: EvRButtonDown (UINT modKeys,TPoint& point) { TEdit::EvRButtonDown(modKeys, point); не следует забывать про эту строку ! Cut(); Parent->SendNotification(Attr.ld, UPDATE WINDOW, HWindow); } void my edit::EvKeyDown(UINT key, UINT repeatCount, UINT flags) { TEdit::EvKeyDown(key, repeatCount, flags); не следует забывать про эту строку ! Parent->SendNotification(Attr.ld, UPDATE WINDOW, HWindow); } class my frame : public TFrameWindow { public: my frame(const char* title); void UpdateO; private: my edit* edit; TStatic *Number o! Lines, *Current Line Number, *Characters in Line, *Fi rstVisi bleLi neText; DECLARE RESPONSE TABLE(my frame); }; DEFINE RESP0NSE TABLE1(my frame, TFrameWindow) EV CHILD NOTIFY(EDITJD, UPDATE WINDOW, Update), END RESPONSE TABLE; my frame::my frame{const char* title) : TFrameWindow(0, title), TWindow(0, title) edit = new my edit (this,EDIT ID, ,20,20,200,200,500,TRUE); Number of Lines = new Tstatic(this,-1, Number of lines: ,300,80,250,25,22); Current Line Number = new TStatic{this,-1, Current line number: , 300,120,250,25,30); Characters in Line = new TStatic(this,-1, Characters in line: ,300,160,250,25,30); }; void my frame::Update() { char str[3],str1[]= Number of lines: ,str2[]= Current line number: , str3[] = Characters in line: ; UINT start, end; Установка числа линий в поле - Number of lines (см. рис. 9.33) itoa(edit->GetNumLines(),str,10); strcat(str1,str); Number of Lines->SetText(str1); Установка номера текущей линии - Current line number (рис. 9.33) edit->GetSelection(start, end); itoa(edit->GetLineFromPos(end),str,10); strcat(str2,str); Current Line Number->SetText(str2); Установка числа символов в линии - Characters in line (рис. 9.33) itoa(edit->GetLineLength(edit->GetLineFromPos(end)),str,10); strcat(str3,str); Characters in Line->SetText(str3); } void my app::lnitMainWindow(void) { SetMainWindow(new my frame( TEdit Class )); } int OwlMain(int, char**) { return my app().Run(); } После запуска программы па выполпепие па экране появится окно, показанное на рис. 9.33. В рабочей области экрана будут выведены три дополнительные строки. В маленькие окна после этих строк выводится следующая информация: Number of lines - число линий с текстом в окне редактирования;
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |