m=1 ;. pszText=_T ( Не виконано ) ;. cchTextMax=lstrlen (_T ( Не виконано )); gt; SetItem ( amp; lvitem);
Прапор LVIF_TEXT дозволяє вивід тексту. Мінлива str строкового типу CString, який є класом входить до MFC і надає широкі можливості роботи з рядком.
Змінна даного типу є динамічною, тобто пам'ять під неї виділяється в міру необхідності. Так як змінна pszText, структури lvitem, повинна привласнити покажчик, що адресує статичний блок пам'яті, необхідно зробити його таким. Для цього застосовується метод класу CString іменований GetBuffer () [6]. Щоб прочитати дані з елемента типу List Control raquo ;, потрібно замінити в розглянутому коді виклик функції InsertItem () на GetItem (). Після її виконання у змінній str виявиться текст необхідної комірки.
Щоб видалити необхідний рядок, використовують функцію DeleteItem (), як показано нижче.
* pList=(CListCtrl *) GetDlgItem (IDC_LIST1); gt; DeleteItem (m_nSelectItem);
Де m_nSelectItem - порядковий номер удаляемой рядка. Весь елемент List Control очищають за допомогою методу DeleteAllItems ().
Для введення повного шляху до Перетворювані xml-файлу, скористаємося стандартним діалоговим класом CFileDialog, наданим MFC. Оголосимо змінну типу цього класу.
Визначимо значення зо три, які передаватимуться його конструктору. Нас цікавлять перший і третій атрибут. Перший, визначає, чи буде діолог відкривати файл або навпроти його зберігати.
Другий встановимо в 0. Третій, вказує, якого типу файли будуть видні в діалозі. Для запуску побудови модального діалогового вікна відкриття файлу скористаємося функцією DoModal ().
Даний метод поверне управління основного вікна програми лише після закриття їм викликаного.
Тобто, користувач не зможе звернеться до головного вікна, поки не закриє дочірнє. Код реаалізующій описані події представлений нижче.
fdialog (TRUE, 0, _T ( *. xml )) ;. DoModal ();
Для вибору директорії в яку будуть зберігатися pdf-файли, скористаємося стандартним діалогом Windows. Для цього оголосимо структуру BROWSEINFO, привласнимо змінним, приналежному їй, значення, як показано нижче.
_ t sDir [512]; brinfo ;. hwndOwner=0 ;. pidlRoot=0 ;. pszDisplayName=sDir ;. lpszTitle=_T ( Виберіть папку для виведення pdf-файлів ) ;. ulFlags=BIF_RETURNONLYFSDIRS ;. lpfn=0 ;. lParam=0;
Для виведення діалогового вікна скористаємося функцією SHBrowseForFolder ( amp; brinfo).
Яка повертає значення типу LPITEMIDLIST. Використовуючи змінну розглянутого типу і функцію SHGetPathFromIDList () одержимо шлях до вибраної користувачем папці. Приклад представлений нижче.
pDirList=SHBrowseForFolder ( amp; brinfo); (pDirList, sDir);
У результаті буде виводиться діалог представлений на малюнку 4.9.
Малюнок 4.9 - Виведення діалогу
Для того, щоб зробити неактивними кнопки програми необхідно скористатися функціями: GetDlgItem () і EnableWindow (). Перша возврвщает покажчик на об'єкт. Друга робить його пасивним, або активним, залежно від значень FALSE або TRUE, відповідно. Застосування цих функцій продемонструвати нижче. (IDC_BUTTON1) - gt; EnableWindow (FALSE);
Для передбачення можливості введення кількості відступів перед і після розділу в генерується специфікації, створимо за допомогою редактора форм діалогове вікно. Для цього в меню Resource View (Малюнок 4.4) потрібно клацнути правою кнопкою миші по елементу Dialog і вибрати Add Resource raquo ;. У вікні (Малюнок 4.10) вибрати Dialog і клацнути New raquo ;. У результаті до проекту буде додано новий шаблон діалогу. Після виконання ряду дій, принципи проведення яких були описані раніше, получется діалогове вікно представлене на малюнку 4.11.
Малюнок 4.10 - Вибір категорії Dialog і кнопки New
Малюнок 4.11 - Отримання діалогового вікна
Після створення форми діалогу, необхідно додати для неї клас в проект. Для цього необхідно клацнути правою кнопкою миші по формі і в контекстному меню вибрати Add Class raquo ;. У виведеному на екран вікні вказати ім'я створюваного класу CSetting в поле Class name raquo ;. В якості базового класу, методи якого будуть успадковуватися, залишити запропонований за умовчанням CDialog. Клацнути Finish raquo ;. При додаванні подій для елементів форми, їх обрабочікі будуть поміщатися в певний для них клас Setting. Тобто, у щойно створений. Далі неообходімо вказати заголовний фай...