|
Программирование >> Программирование на языке c++
static control Default static { return my app().Run{); } После запуска программы на выполнение на экране появится окно, показанное на рис. 9.31. Если нажать левую кнопку манипулятора мышь , то рабочая область окна очистится. При нажатии правой кнопки мани- Это окно появится пулятора на экране появляется ° 7ь,Г ГиГ слово Default. В программе использованы три новые функции, которые являются компонентами класса TStatic. Они имеют следующие описания: inline void ClearQ; inline int GetText(char far* str, int maxChars);-inline void SetText(const char far* str); где str - указатель на строку, maxChars - максимальная длина строки. Первая функция удаляет статический текст с экрана. Вторая функция запоминает статический текст в строке str (максимальная длина текста равна maxChars) и возвращает число действительно сохраненных символов. Третья функция выводит статический текст, на который указывает str. 9.5.5. Редактирование текста (edit text control) Редактируемый текст, в противоположность статическому тексту, может быть легко и быстро изменен. Это, в частности, позволяет создавать текстовые редакторы. Редактирование поддерживается объектами класса TEdit, который наследуется из класса TStatic. Рассмотрим простую программу. #include <owl\applicat.h> #include <owl\framewin.h> class my app : public TApplication { public: my app() : TApplication() { } protected: virtual void InitMainWindow(void); }; class my win : public TWindow { public: my win(); protected: TEdit* my edit; void EvLButtonDown (UiNTJPoint&); void EvRButtonDown (UINT,TPoint&); DECLARE RESPONSE TABLE{my win); }; DEFINE RESP0NSE TABLE1(my win,TWindow) EV WM LBUTTONDOWN, EV WM RBUTTONDOWN, END RESPONSE TABLE; my win::my win () : TWindow(0,0,0) { my edit = new TEdit (this,-1, ,20,20,200,200,500,TRUE); } void my win :: EvLButtonDown (UINT,TPoint&) { my edit->DeleteLine(-1); } void my wrn :: EvRButtonDown (UINT,TPoint&) { my edit->Clear{); } void my app::lnitMainWindow(void) {SetMainWindow(new TFrameWindow(0, TEdit Class ,new my win)); } int OwlMain(int, char**) { return my app().Run{); } В программе используется следующий конструктор класса TEdit: TEdit(TWindow* parent, int id, const char far *text, int X, int y, int w, int h, UINT textLen, BOOL multiline = FALSE, TModule* module = 0); Bee параметры этого конструктора, за исключением multiline, уже рассматривались ранее. Параметр multiline задает один из двух возможных стилей текста: однострочный текст (значение FALSE) и многострочный текст (значение TRUE). Многострочный текст задается в окне с фреймами горизонтального и вертикального сканирования или скроллинга (scroll bar). Если размер текстового буфера (textLen) задан равным О или 1, то это означает неограниченный размер . В противном случае размер буфера равен значению textLen-1. В программе использована новая функция, имеющая следующее описание: BOOL DeleteLine{int LineNumber); Здесь LineNumber - номер строки (линии). Функция удаляет текст при многострочном редактировании в строке, заданной значением LineNumber. Если LineNumber = -1, то функция удаляет текущую строку, выбранную, например, с помощью манипулятора мышь . При успешном завершении она возвращает значение TRUE. Рис. 9.32 иллюстрирует основные действия приведенной программы. Рассмотрим еще один пример. #include <owl\applicat.h> #include <owl\framewin.h> #include <owl\edit.h> const int UPDATE W1ND0W = 100; #define EDITJD 101 class my app : public TApplication { public: my app() : TApplication() { } protected: virtual void InitMainWindow(void); }; class my edit : public TEdit { public: my edit(TWindow* parent, int ID, const char far* text, int x, int y, int w, int h, UINT textLen = 500, BOOL multiline = TRUE, TModule* module = 0 )
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |