Программирование >>  Программирование на языке c++ 

1 ... 135 136 137 [ 138 ] 139 140 141 ... 159


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

MINSK

BREST

<корневой

iMOSCOWl

каталог

диска C:>

Мышь


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; }



1 ... 135 136 137 [ 138 ] 139 140 141 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика