|
Программирование >> Программирование на языке c++
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
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |