Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб.DOC
Скачиваний:
7
Добавлен:
16.05.2015
Размер:
662.02 Кб
Скачать

4.7.3 Організація обміну даними зі списком ListBox

і комбінованим списком ComboBox

Розглянемо введення однорозрядного числа з використанням змінних-властивостей m_sizeдля списку таm_comboдля комбінованого списку категоріїControl. Після першого відображення діалогового вікна на екрані обидва списки мають бути ініціалізовані числами від 2 до 6, причому спочатку має бути показаним другий елемент списку. Далі користувач вибирає один елемент списку, натискає кнопкуOkта закриває діалогове вікно. Результатом обробки вибраного числа повинно бути його виведення через вікно повідомленняMessageBox.

1.Створення власного класу діалогу, похідного від бібліотечного класу CDialog.

class CMyDialog : public CDialog

{

public:

CMyDialog(CWnd* pParent = NULL);

enum { IDD = IDD_MATRIXDIALOG };

CListBox m_size;

CComboBox m_combo;

protected:

virtual void DoDataExchange(CDataExchange* pDX);

protected:

virtual void OnOK();

virtual void OnCancel();

virtual BOOL OnInitDialog();

DECLARE_MESSAGE_MAP()

}; .

2. Ініціалізація ЕК діалогового вікна.

BOOL CMyDialog::OnInitDialog()

{

CDialog::OnInitDialog();

int i;

char str[10];

m_combo.AddString("2");

m_combo.AddString("3");

m_combo.AddString("4");

m_combo.AddString("5");

m_combo.AddString("6");

m_combo.SetCurSel(1);

for(i=2; i<7; i++)

{

wsprintf(str,"%d",i);

m_size.AddString(str);

}

m_size.SetCurSel(1);

UpdateData(FALSE);

return TRUE;

} .

3. Організація обміну даними з ЕК діалогового вікна.

void CMyDialog::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_LISTBOX1, m_size);

DDX_Control(pDX, IDC_COMBO1, m_combo);

} .

4. Створення об’єкта власного класу діалогу та його активація.

CMyDialog dialog;

dialog.DoModal(); .

5. Обробка введених користувачем даних в діалоговому вікні.

void CMyDialog::OnOK()

{

m_combo.GetWindowText(s,80);

Number=m_size.GetCurSel();

m_size.GetText(Number,str);

UpdateData(TRUE);

CDialog::OnOK();

} .

6. Використання результатів введених даних.

MessageBox(str,"ListBox");

MessageBox(s,"ComboBox"); .

4.8 Використання dll-бібліотек в mfc-програмах

4.8.1 Призначення бібліотек dll

На відміну від виконувальних файлів формату EXE, динамічно підключувані бібліотеки (DLL), як правило, безпосередньо не виконуються і повідомлень не обробляють. Призначення бібліотекDLL– бути викликаними процесами (тобто програмами в стадії виконання) або іншими бібліотеками в потрібний момент. БібліотекаDLLбере участь в роботі лише тоді, коли викликається одна з її функцій.

Саме тому більшість системних файлів Windows, які мають бути доступними для всіх прикладних та системних процесів, реалізовані у форматіDLL:KERNEL32.DLL,GDI32.DLL,USER32.DLLта інші файли. Необхідно також відмітити, що динамічні бібліотеки не обов’язково містять програмний код. Наприклад, файли шрифтів (типу *.FON) також є динамічними бібліотеками, які містять лише один ресурс – опис шрифтів.

Отже, бібліотеки DLL– це програмний код або дані, які динамічно доступні всім процесам операційної системи.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]