Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Способи створення елементів керування




Елементи керування

У бібліотеці MFC створено ряд елементів керування. Вони призначенні для створення графічного інтерфейсу з користувачем, а саме безпосереднього введення інформації, що керує програмою. Для кожного з них створено відповідний клас. До класів, що реалізовують прості елементи керування відносяться;

CStatic – статичний текст або зображення (мітки);

CButton – командні кнопки, що спрацьовують при натисканні, перемикачі, прапорці;

CListBox – список;

CEdit – текстове поле;

CComboBox – комбінований блок списку та текстового поля;

CScrollBar – смуга прокрутки.

Окрім того в бібліотеці реалізовано ряд елементів керування з розширеними можливостями. Вони, в деякій мірі дублюють прості елементи, але мають деякі додаткові функції. До них відносяться:

CBitmapButton (CButton) – кнопки із заданими картинками для всіх станів;

CComboBoxEx (CComboBox) – комбінований список з можливістю роботи із зображеннями;

CCheckListBox (CListBox) – список елементів, що реалізовані як прапорці;

CDragListBox (CListBox) – список з можливістю переносу його елементів за допомогою миші.

При виборі між простим та розширеним елементом керування необхідно вирішувати наскільки повно будуть використовуватися розширені можливості. При неповному їх використанні краще обмежитися простими елементами. Вони простіші в застосуванні та працюють швидше.

Типові елементи керування можна створити двома способами:

- в редакторі ресурсів;

- безпосередньо в коді програми.

Створення елементів керування в редакторі ресурсів. Елементи керування створюються візуально безпосередньо в редакторі ресурсів при проектуванні діалогового вікна. В цьому випадку можна задати розміри, зовнішній вигляд, початковий стан та деяку поведінку цих елементів. Але деякі типи елементів керування (наприклад CListBox, CComboBox) не можна створити повністю повноцінними за допомогою редактора ресурсів. Вони будуть вимагати написання додаткового коду, щоб активізувати усі їх можливості.

Створення елементів керування в коді програми. Як і інші візуальні об’єкти класів MFC, елементи керування в коді програми створюються в два етапи:

- створення об’єкту (екземпляру) певного класу (змінної типу);

- створення об’єкту вікна для цього екземпляру (виклик функції Create()).

Зазвичай створення вікон елементів керування відбувається у функції, що ініціалізує батьківське вікно. Для блоків діалогу (на яких найчастіше розміщуються елементи керування), такою функцією є OnInitDialog(), для інших вікон OnCreate().

Розглянемо типовий приклад створення елементу керування текстову поле в блоці діалогу.

Спочатку, агрегація включення об’єкту m_Edit в клас CPrimeDialog.

 

class CPrimeDialog: public CDialog

{

protected:

CEdit m_Edit;

public:

virtual BOOL OnInitDialog();

};

 

У методі OnInitDialog() для елементу керування текстове поле (m_Edit) задається прямокутник, що задає його розміри та положення в межах вікна діалогу, потім викликається його метод Create(), для створення об’єкту вікна та зв’язування його з базовим об’єктом. На завершення викликається його метод SetFocus(), що захоплює для нього фокус вводу в межах діалогу.

 

BOOL CPrimeDialog::OnInitDialog()

{

CDialog::OnInitDialog();

CRect winRect(20, 20, 100, 50);

m_Edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER |

ES_CENTER | ES_LOWERCASE | ES_MULTILINE,

winRect,

this,

IDC_EDIT);

m_Edit.SetFocus();

return FALSE;

}

 

Метод Create() має ряд параметрів загальних для всіх елементам керування. Розглянемо ці параметри на прикладі відповідного методу для елементу керування класу CEdit – текстове поле.

 

BOOL CEdit::Create(DWORD dwStyle, const RECT & rect, CWnd * pParentWnd, UINT nID);

 

Параметри:

dwStyle – задає стилі елемента керування, серед них можуть бути як загальні стилі вікон (WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER), так і особливі стилі притаманні тільки певному класу елементів керування (ES_CENTER | ES_LOWERCASE | ES_MULTILINE). Стилі сумуються за допомогою побітового оператора „або”.

rect – задає габарити та положення, в межах вікна діалогу, прямокутника вікна елементу керування, параметри прямокутника сформовані у вигляді структури RECT. Для розглянутого прикладу лівий верхній кут прямокутника матиме координати (20, 20), а правий нижній (100, 50).

pParentWnd – вказівник на батьківське вікно до якого належить елемент керування. Через нього елемент керування буде обмінюватися повідомлення з іншими елементами інтерфейсу користувача.

nID – ідентифікатор елементу керування, оригінальний в межах батьківського вікна. Він використовується деякими методами класу CWnd для доступу до елементу керування.

Кожен з класів елементів керування може мати свої, додаткові параметри для методу Create(), але перелічені має кожен клас.

Елементи керування ведуть себе як звичайні вікна, вони можуть посилати, приймати повідомлення та обробляти повідомлення. Більшість загальних функціональних можливостей вони наслідують від батьківських класів (наприклад, від батька всіх віконних об’єктів - CWnd). Безпосередньо в них реалізується тільки особлива, притаманна тільки їм функціональність.

 




Поделиться с друзьями:


Дата добавления: 2013-12-14; Просмотров: 373; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.