|
Программирование >> Программирование на языке c++
my edit 1 = new TEdit (this,-1, ,20,20,200,25); my edit 2 = new TEdit (this,-1, ,350,20,200,25); } void my win :: EvHScroll (UINT code.UINT pos.HWND wnd) { char str[20]; TWindow :: EvHScroll(code,pos,wnd); не забывайте об этой строке! wsprintf (str, %d , my scroli 1 -> GetPosition() ); my edit 1 -> Clear(); my edit 1-> Insert (str); } void my win :: EvVScroll (UINT code.UINT pos.HWND wnd) { char str[20]; TWindow ;: EvVScroll(code,pos,wnd); не забывайте об этой строке! my scroll 1 -> PageMagnitude = my scroll 2 -> GetPosition(); wsprintf (str, %d , my scroll 2 -> GetPosition() ); my edit 2 -> Clear(); my edit 2-> Insert (str); } void my app::lnitMainWindow(void) { SetMainWindow(new TFrameWindow(0, TScrollBar Class , new my win)); } int OwlMain(int, char**) { return my app().Run(); } Используемый в программе конструктор класса TScrollBar описывается в виде: TScrollBar(TWindow* parent, int id, int X, int y, int w, int h, BOOL isHScrollBar, TModule* module-0); Bee параметры этого конструктора, за исключением isHScroUBar, уже рассматривались ранее. Если isHScroUBar имеет значение TRUE, то окно будет горизонтальным, в противном случае (isHScroUBar = FALSE) - вертикальным. Если npoinmvuibie окна редактирования ( дети ) Вы можете исполь!-.ювап. Э10 окно скапиронания Я1я нчмснсгтя тлчсмиГ! в первом окне I рсдак1Иро ;н11я 1 Первое окно TScrollBar Class J [ Второе окно ▼ В горос окно Псрное окно Опреде-шет paiMq> страницы л,1я nqBoro \*\ окна сканирования Протводаые окна сканирования 1. Вы можете исполь-зовагь это окно скан1фования для 1[зменения значений во втором окне редактирования 2. Вы можете изменять размер страницы хтя первого окна сканирования Рис. 9.38. Работа с окнами сканирования (скроллинга) окно горизонтальное, то в его атрибут (в поле Attr.Style) добавляется значение SBS HORZ, а если вертикальное - SBS VERT. В программе использованы две новые функции. Первая из них TScrollBar::GetPosition имеет следующее описание; inline virtual int GetPosition() const; Эта функция возвращает текущее значение указателя в окне сканирования. Вторая функция TEdit: :Insert имеет описание: inline void lnsert(const char far* str); Она вставляет строку, на которую указывает str, в текущую позицию курсора окна редактирования и замещает любой текущий выделенный текст. В программе также использован компонент-данное класса TScrollBar с именем PageMagnitude, который задает размер страницы для сканирования. Рис. 9.38 демонстрирует результаты работы программы. В заключение укажем, что окна сканирования нельзя помещать в другие окна с атрибутами WS HSCROLL или WS VSCROLL. 9.5.7. Окна списков (list box control) Окна списков позволяют выбрать некоторые строки из множества поставляемых строк. Они могут включать или не включать вертикальное окно сканирования (скроллинга). При выборе строки в списке она подсвечивается. Окна списков поддерживаются объектами класса TListBox, который наследуется из класса TControl. Рассмотрим простой пример. #include <owl\applicat.h> в комментариях указаны #include <owl\framewin.h> номера соответствующих пунктов на рис. 9.39 class my app : public TApplication { public: my app() : TApplication() { } protected: virtual void lnitMainWindow{void); }; class my win : public TWindow { public: my win(); protected: char str[10]; TListBox *my box1, *my box2; void EvLButtonDown (UINT,TPoint&); void EvRButtonDown (UINT,TPoint&); void SetupWindowO; DECLARE RESPONSE TABLE(my win); }; DEFINE RESPONSE TABLE1(my win,TWindow) EV WM LBUTTONDOWN, 2 EV WM RBUTTONDOWN, 5 END RESPONSE TABLE; my win::my win {) : TWindow{0,0,0) { my box1 = new TListBox (this,-1,20,20,200,200); my box2 = new TListBox {this,-1,300,20,200,200); } void my win::SetupWindow() { TWindow::SetupWindow(); my box1 -> AddStringCMINSK ); my box1 -> AddStringCBREST ); my box1 -> AddStringCMOSCOW ); my box2 -> DirectoryList(0, c:\\*.* ); } void my win :: EvLButtonDown (UINT,TPoint&) 2 { my box1 -> GetSelString(str,10); } 3
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |