|
Программирование >> Программирование на языке c++
void my win :: EvRButtonDown (UINT,TPoint&) 5 { my box2 -> lnsertString(str,0); } 6 void my app initMainWindow(void) { SetMainWindow(new TFrameWindow(0, List box ,new my win)); } int OwlMain(int, char**) { return my app().Run{); } В программе использован следующий конструктор класса TListBox: TListBox{TWindow* parent, int Id, int X, int y, int w, int h, TModule* module = 0); Bee параметры этого конструктора уже рассматривались выще. Он создает объект со стилем LBS STANDARD, который задает атрибуты: WS BORDER WS VSCROLL LBS SORT I LBS NOTIFY. Атрибут LBS SORT задает автоматическую сортировку поставляемых строк. Атрибут LBS NOTIFY требует уведомления окна-родителя при выборе строк в окне списков. В программе использованы четыре новые функции, которые являются компонентами класса TListBox. Первая функция имеет следующее описание: virtual int AddString(const char far* str); Она добавляет, в список строку, на которую указывает str, и возвращает ее позицию в списке (начальная строка в списке имеет позицию 0). Вторая функция описывается в виде virtual int inline DirectoryList(UINT attrs, const char far* fileSpec); где fileSpec - указатель на строку (с заключительным нулем), которая содержит путь и имя файла (здесь можно задавать группу файлов с помощью символов * и ?), attrs - атрибуты файла. Функция добавляет имя (имена) файла (файлов) в список. Третья функция описывается в виде: int GetSelString(char far* str, int maxChars) const; Она запоминает текущую строку, содержащую не более чем maxChars символов, в памяти, на которую указывает str. Если необходимо осуществлять выбор многих строк в списке, то к значению Attr.Style необходимо добавить LBS MULTIPLESEL (перед созданием интерфейсного элемента). Последняя функция имеет следующее описание: virtual int lnsertString(const char far* str, int index); Она вставляет строку, на которую указывает str, в позицию списка, которая задается значением index, и возвращает действительную позицию этой строки в списке. Список не сортируется повторно. Если index = -1, то строка добавляется в конец списка. Рис. 9.39 демонстрирует основные действия описанной программы. Рассмотрим еще одну программу: #include <owl\applicat.h> в комментариях указаны #include <owl\framewin.h> номера соответствующих пунктов на рис. 9.40 #include <owl\listbox.h> #define ID L1 200 эти две строки следует включить в #define ID L2 201 *.h файл, определенный пользователем class my app : public TApplication { public: my app() : TApplication() { } protected: virtual void InitMainWindow(void); }; class my win : public TWindow { public: my win(); protected: TListBox *my box1, *my box2; void EvSelChangeO; 14 B. A. Скляров 417 Lisl box
Мышь FTqieonpefleneHHaa функция SetupWindow laiiocirr Н три строки в левый список и корневой каталог диска С: в П1)авый список [- !. Нажатие левой кнопки 2. Вызов функции отклика jEvLButtonDovi.-n, 3. Сохранение вьиелеиной сзрокн в str ту Ьох1 > GetSclSlring(slr, 10); 4. Нажатие правой кнопки 5. Вызов функции откликаЕуКВи11опРо\у1> 6. Добавление строки из str в начало правого списка -my box2 -> InsertSiring(str,0); Рис. 9.39. Работа со списками void EvDblCikO; void SetupWindowO; DECLARE RESPONSE TABLE(my win); DEFINE RESP0NSE TABLE1(my win,TWindow) EV LBN SELCHANGE(ID L1,EvSeiChange), 2 EV LBN DBLCLK(ID L2,EvDblClk), 5 END RESPONSE TABLE; my win::my win () : TWindow(0,0,0) { my box1 = new TListBox (this,iD L1,20,20,200,200); my box2 = new TListBox (this,lD L2,300,20,200,200); my box2 -> Attr.Style = LBS EXTENDEDSEL; }
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |