Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції_ІЗВП_укр.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
6.39 Mб
Скачать

2. Завдання реакції на вибір в ComboBox

Для початку давайте передамо деяке значення з нашого ComboBox'а в головне вікно програми. Передане значення з'явиться в заголовку головного вікна. Для цього внесіть в обробник меню (того самого, при виклику якого з'являється наш діалог) такі зміни:

void CMyMainWnd :: OnMyMenuDialog ()

{

CDlg dlg;

dlg.m_sName = m_sName;

if (dlg.DoModal () == IDCANCEL) / / якщо натиснули на cancel,

return; / / то виходимо

m_sName = dlg.m_sName;

SetWindowText (m_sName);

}

Тепер залишилося тільки додати в клас CMyMainWnd змінну m_sName типу CString:

public: CString m_sName; ...

Тепер при запуску програми обраний нами значення з ComboBox'а буде з'являтися у заголовку нашого вікна:

3. Операції з елементами

Розглянемо тепер операції з елементами ComboBox'а. Основні з них - це додавання в кінець списку (AddString, розглянута на минулому уроці), вставки (InsertString), видалення (DeleteString) і знаходження потрібної рядки (FindString). Їх використання ясно з наступного прикладу:

BOOL CDlg::OnInitDialog()

{ ...

m_cbComboBox.AddString("Ушку");

//вставка строки на первое место (нумерация с нуля!)

m_cbComboBox.InsertString(1,"Новая строка");

//удаление строки номер ноль (нумерация с нуля!)

m_cbComboBox.DeleteString(0); //ищем строку

Victor //Если она есть, то ее номер запишется в k

int k=m_cbComboBox.FindString(0, "Victor");

if(k==CB_ERR) //Если такой строки нет, то k будет равно CB_ERR

AfxMessageBox("Сторока не найдена!");

Else

{

CString s;

s.Format("Строка найдена на %d-м месте.",k);

AfxMessageBox(s);

}

... }

З важливих функцій варто ще згадати ResetContent, яка служить для видалення з ComboBox'а всіх його елементів. Приклад її використання:

... m_cbComboBox.ResetContent (); ...

4. Діалог в якості головного вікна

  У цьому питанні ми з вами подивимося, як можна створити програму на базі діалогового вікна.

Для початку зробимо кілька стандартних кроків, а саме зробимо додаток типу Win32 Application з ім'ям Dialog_based:

Додамо в нього файл Dialog_based.cpp. Не забудемо змінити настоянки проекту на використання MFC (Project-> Settings, далі вкладка General):

Тепер додаємо ресурс діалогового вікна (Insert-> Resource-> Dialog, далі кнопка New). У діалоговому вікні нічого змінювати не будемо - нехай поки там будуть тільки дві кнопки - OK і Cancel (Додавати будемо в наступних уроках).

Натисніть далі на кнопку Save All й для ресурсу нашого діалогу введіть ім'я Resource.rc:

Тепер ми повинні додати файли нашого діалогу в проект (Project-> Add to Project-> Files, далі вибираємо resource.h і resource.rc, натискаємо на OK). У нашому проекті повинна з'явиться вкладка Resource, а на вкладці FileView з'являться два приєднаних файлу:

Далі додаємо наступний код:

# include "afxwin.h"

# include "resource.h" / / для використання CDialog

class CMyDlg: public CDialog

{/ / Наш клас - нащадок CDialog

public: CMyDlg (CWnd * pParent = NULL);

};

/ / створюємо діалог на нашу шаблоном

CMyDlg :: CMyDlg (CWnd * pParent): CDialog (IDD_DIALOG1, pParent)

{}

class CMyApp: public CWinApp

{

public: virtual BOOL InitInstance ();

};

BOOL CMyApp :: InitInstance ()

{

CMyDlg dlg; m_pMainWnd = &dlg; dlg.DoModal ();

/ / показуємо діалог

return TRUE;

}

CMyApp theApp;

Тепер запускаємо нашу програму. З'явиться діалогове вікно: