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

1 ... 137 138 139 [ 140 ] 141 142 143 ... 159


protected:

TComboBox* my combo; TEdit* my edit;

void EvLButtonDown (UINT,TPoint&); 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) { niy combo = new TComboBox(this,

-1,20,20,200,200,CBS DROPDOWN,500); my edit = new TEdit(this,-1, ,350,20,200,25);} void my win :: EvLButtonDown (UINT,TPoint&) 2 { char str[80];

my edit->GetLine{str,70,0); 3

my combo -> DirectoryList{0,str); } 4

void my win :: EvRButtonDown (UINT,TPoint&) 6 { my combo->ClearList(); } 7

void my app::lnitMainWindow(void) {SetMainWindow(new TFrameWindow(0, Combo box ,new

my win));}

int OwlMain(int, char**) { return my app{).Run(); }

В программе использован следующий конструктор класса TComboBox:

TComboBox(TWindow *parent,

int Id,

int x,

int y,

int w,

int h,

DWORD style, WORD textLen, TModule* module = 0);



Combo box

1 Ht [ c:\sklyarov\.cpp

Если выбрать эту сфслку, то появляется список

3. Сохранение имени


6. Вьпов фуюсции EvRButlonDown

my coinbo->XIearIjslOy 7. Очнсп(а соле1)жимого списка

Рис. 9.42. Демонстрация основных действий программы

Все параметры этого конструктора за исключением style уже рассматривались ранее. Параметр style может принимать одно из следующих значений: CBS SIMPLE (простое комбинированное окно, содержащее окно редактирования и окно со списком, которые сразу же отображаются), CBS DROP-DOWN (то же, что и предыдущее, но окно со списком будет отображаться только при выборе стрелки, показанной в правом верхнем углу на рис. 9.41), CBS DROPDOWNLIST (то же, что и предыдущее, но без окна редактирования), CBS OWNERDRAWFIXED или CBS OWNERDRAWVA-RIABLE. Конструктор устанавливает следующие значения



атрибутов: WS CHILD WS VISIBLE WS GROUP ] WS TABSTOP I CBS SORT 1 CBS AUTOHSCROLL WS VSCROLL I style.

В программе использованы три новые функции. Первая функция TEdit::GetLine имеет следующее описание:

BOOL GetLine(char far* str, int strSize, int lineNumber);

Она сохраняет строку с заданным номером lineNumber в памяти, на которую указывает str. Значение strSize определяет число символов в строке.

Вторая функция TComboBox: :DirectoryList имеет следующее описание:

inline virtual int DirectoryList(UINT attrs,

const char far* fileSpec);

Она заносит в комбинированное окно имена файлов из заданного каталога (см. функцию TListBox::DirectoryList, § 9.5.7).

Последняя функция TComboBox: :С1еагList описывается следующим образом:

inline virtual void ClearList();

Она очищает связанный с комбинированным окном список.

На рис. 9.42 показаны основные действия приведенной программы.

Комбинированные окна посылают примерно те же сообщения родительскому окну, что и окна списков. В этом случае сообщения LBN XXXX, рассмотренные в § 9.5.7, следует заменить на сообщения CBN XXXX. Для получения дополнительных сведений по этим вопросам следует обратиться к руководству по библиотечным классам [14].

9.6. Примеры решения задач

Выше уже говорилось о правилах использования классов. Рассмотрим эти вопросы более подробно. Пусть задана библиотека классов. Тогда можно выполнить следующие действия:

1) построить производный класс от библиотечного класса. При этом можно изменить поведение библиотечного класса. Рассмотрим пример [12]:

Это место для фрагментов 1 и 3 (см. § 9.4) class my frame win : public TFrameWindow



1 ... 137 138 139 [ 140 ] 141 142 143 ... 159

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