Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Вывод окна

Читайте также:
  1. Lt;question> Итоговое изложение основного концептуального содержания работы, а также краткая формулировка главных выводов.
  2. Lt;question> Итоговое изложение основного концептуального содержания работы, а также краткая формулировка главных выводов.
  3. Аллах — Покровитель тех, Которые уверовали. Он выводит их из мрака к свету.
  4. Б -бусинковый (1-чувствительный элемент; 2-электроды; 3 -выводы; 4 - стеклянная оболочка)
  5. Валидность выводов
  6. Вероятность выводов по аналогии
  7. ВНУТРИВЕННАЯ (ЭКСКРЕТОРНАЯ) ПИЕЛОГРАФИЯ (РЕНТГЕНОЛОГИЧЕСКОЕ ИССЛЕДОВАНИЕ ПОЧЕК И МОЧЕВЫВОДЯЩИХ ПУТЕЙ)

Изначально у нас представлен лишь шаблон диалогового окна, который находится в окне «Имя проекта.rc – Dialog»

Для вывода диалогового окна необходимо:

1. Модифицируем функцию InitInstance() класса CMyApp(который является стандартным) − BOOL CMyApp::InitInstance().

В коде функции изменим параметр SetRegistryKey и вызов функции DoModal().

BOOL CMyApp::InitInstance()

{ ………….

// Измените раздел реестра, в котором хранятся параметры

// TODO: следует изменить эту строку на что-нибудь подходящее,

// например на название организации

SetRegistryKey(_T("UIR")); // имя пректа используется реестром

CMainDlg dlg; //создается объект диалога dlg (конструктор), но

// на экране наш диалог не отображается

m_pMainWnd = &dlg; // создатся указатель m_pMainWnd на главное

// окно экрана

dlg.DoModal(); // вызов функции DoMoеdal для отображения

// окна диалога на экране

// Возвращает код нажатой клавиши

return FALSE;

}

Примечание: Когда вызывается функция DoModal(), то

a. из ресурсов загружается шаблон диалога (диалог создан, но на экране еще не отображается),

b. затем вызывается функция OnInitDialog() класса CMainDlg (рисунок 15), которая используется для начальной настройки диалога (вызывается функция OnInitDialog() базового класса, заполняются поля ввода, перемещаются элементы управления и т.п.),

c. далее отображается диалог на экране.

После компиляции выводится на экран созданное нами диалоговое окно.

 

В главном меню диалога есть шесть пунктов, используемых при работе с новым окном диалога; Главная задача — научиться пользоваться различными инструментами, представленными на панели инструментов. Ниже разъясняется назначение наиболее важных из них.

Инструмент "переключатель" создает небольшой кружок, называемый переключателем, справа от которого расположен пояснительный текст. Как и флажки, переключатели обычно собраны в группы. В то же время, в отличие от флажков, лишь один переключатель в группе может быть включен в данный момент.

Инструмент "флажок" создает небольшой квадратный элемент, называемый флажком, справа от которого расположен пояснительный текст. Флажки обычно выставляют (или отмечают) нажатием мыши, но их можно также выбирать при помощи клавиатуры. Обычно в окне диалога присутствуют несколько флажков, которые дают возможность выбрать один или несколько параметров одновременно.

Эти кнопки(флажки) создаются со стилем BS_CHECKBOX, BS_AUTOCHECKBOX, BS_3STATE или BS_AUTO3STATE. Кнопки стилей BS_CHECKBOX и BS_AUTOCHECKBOX имеют два состояния: флажок установлен или нет. Состояния кнопки изменяется функцией CButton::SetCheck:

m_wndCheckBox.SetCheck(BST_CHECKED); // Установить флажок

m_wndCheckBox.SetCheck(BST_UNCHECKED); // Снять флажок

Для проверки текущего состояния кнопки служит функция

CButton::GetCheck. Возвращаемое значение равно BST_CHECKED или BST_UNCHECKED.

Как и нажимаемые кнопки, флажки при нажатии посылают родительским окнами уведомления BN_CLICKED. Кнопки со стилем BS_AUTOCHECKBOX изменяют состояния при щелчке мышью автоматически, а со стилем BS_CHECKBOX– нет. Поэтому для кнопок со стилем BS_CHECKBOX требуется обработчик BN_CLICKED, который будет управлять состоянием кнопки, например:

void CMainWindow::OnCheckBoxClicked()

{

m_wndCheckBox.SetCheck(m_wndCheckBox.GetCheck() ==

BST_CHECKED? BST_UNCHECKED: BST_CHECKED);

}

Кнопки со стилем BS_3STATE или BS_AUTO3STATE имеют не два, а три состояние. Добавочное состояние– "неопределенное", обозначается константой

BST_INDETERMINATE:

m_wndCheckBox.SetCheck(BST_INDETERMINATE);

Кнопка в неопределенном состоянии выглядит как флажок на сером фоне. Это может обозначать в программе, что что-то"включено не полностью" или"выключено не полностью". Например, в текстовом редакторе неопределенное состояние флажка "полужирный шрифт" может означать, что в выделенном фрагменте текста есть как обычный, так и полужирный шрифт.

Списки

Списки: класс CListBox

Элемент"список" предназначен для отображения списка текстовых строк, называемых элементами списка. У списка есть возможности сортировки элементов и прокрутки, если они не помещаются в области списка на экране.

Списки полезны для представления пользователю информации и для выбора одного или нескольких элементов из них. При щелчке или двойном щелчке на элементе список(если у него установлен стиль LBS_NOTIFY) посылает родительскому окну уведомление в виде сообщения WM_COMMAND.

Обычно список выводит элементы в виде вертикального столбца и позволяет выбрать только один из них. Выбранный (выделенный) элемент подсвечивается системным цветом COLOR_HIGHLIGHT. ВWindows есть разновидности списка: список с выбором нескольких элементов, многоколоночных список, список с собственным отображением.

Создание списка

Обычный список с одиночным выбором можно создать следующим образом:

CListBox m_wndListBox;

m_wndListBox.Create(WS_CHILD ¦ WS_VISIBLE ¦ LBS_STANDARD, rect, this, IDC_LISTBOX);

Стиль LBS_STANDARD является объединением стилей WS_BORDER, WS_VSCROLL, LBS_NOTIFY и LBS_SORT. Т.е. у списка будет рамка, вертикальная полоса прокрутки, он будет посылать уведомления родительскому окну при смене выделения или при двойном щелчке на элементе, и он будет сортировать элементы по алфавиту. По умолчанию полоса прокрутки включается, только если элементы не умещаются в области списка.

Перед добавлением большого количества элементов можно запретить рисование списка, а затем снова разрешить:

m_wndListBox.SendMessage(WM_SETREDRAW,FALSE,0); // Запрещение рисования

...

m_wndListBox.SendMessage(WM_SETREDRAW,TRUE,0); // Разрешение рисования

Добавление и удаление элементов

Добавление элементов в список выполняется функциями

CListBox::AddString и CListBox::InsertString (при вставке строки указывается индекс элемента, начиная с0):

m_wndListBox.AddString(string);

m_wndListBox.InsertString(3, string); // Вставка4-го элемента

Текущее количество элементов в списке возвращает функция CListBox::GetCount.

CListBox::DeleteString удаляет из списка элемент с заданным индексом.

Она возвращает количество элементов, оставшихся в списке. Очистить список полно-стью может функция CListBox::ResetContent.

Бывают полезными функции CListBox::SetItemDataPtr и CListBox::SetItemData, позволяющие сопоставить каждому элементу списка указатель на значение типа DWORD. Этот указатель, связанный с заданным элементомсписка, можно получить функцией CList Box::GetItemDataPtr или

CListBox::GetItemData. Эта возможность полезна для связи элемента списка с некоторыми дополнительными данными. Например, вы можете поместить в список имена людей, и хранить в элементах списка указатели на структуры, содержащие адреса и телефоны этих людей. Т.к. GetItemDataPtr возвращает указатель типа void*, то потребуется явное преобразование указателя к нужному типу.

Поиск и извлечение элементов списка

В CListBox есть функции-члены для получения и изменения текущей позиции выделения, для поиска и извлечения элементов списка. Перечень этих наиболее часто используемых функций(применительно к списку с одиночным выделением) приведены ниже

Некоторые функции-члены CListBox для работы с элементами списка:

Функция CListBox Назначение

GetCurSel Возвращает индекс(начиная с0) текущего выделенного элемента или

LB_ERR, если ни один элемент не выделен.

SetCurSel Выделение элемента по индексу(или -1 для снятия выделения)

GetSel Проверка, выделен ли элемент с заданным индексом

SelectString Поиск и выделение элемента, начинающегося с заданной строки

FindString Определение индекса элемента, начинающегося с заданной строки

FindStringExact Определение индекса элемента, совпадающего с заданной строкой

GetText Получение строки элемента с заданным индексом

GetTextLen Определение длины строки элемента с заданным индексом

Например, чтобы найти с начала списка и выделить элемент, начинающийся со

слова Times(вроде"Times New Roman" или"Times Roman"), можно выполнить сле-дующие вызовы:

m_wndListBox.SelectString(-1, "Times");

Получить строку текущего выделенного элемента можно так:

CString string;

int nIndex = m_wndListBox.GetCurSel();

if (nIndex!= LB_ERR)

m_wndListBox.GetText(nIndex, string)


Дата добавления: 2015-09-03; просмотров: 76 | Нарушение авторских прав


Читайте в этой же книге: Новое поколение Windows. Передача информации с помощью сообщений. Независимость от драйверов аппаратуры. Plug-and-play. Библиотеки динамической компоновки. 16 бит против 32 бит. | Новое поколение Windows. Различные аппаратные платформы. Различные программные платформы. Многопроцессорные системы. Гибкость. | Требования к программному и аппаратному обеспечению Windows приложений. Требования к программному обеспечению. Требования к аппаратуре. | Логическая система координат | Доступ к оболочке Windows. Поля вывода. Изменение пределов поля вывода и окна. Координаты, определяемые пользователем. Выбор начальных атрибутов окна. | Некоторые функции, имеющие отношение к сообщению WM_PAINT. | Вывод окна. Изменение вида окна. Часто используемые элементы управления и диалоговые окна. Статические элементы управления. Элементы управления - кнопки. | Модальная диалоговая панель | Обмен данными диалога | Немодальная диалоговая панель |
<== предыдущая страница | следующая страница ==>
Схема последовательного технологического процесса| Подготовительные работы

mybiblioteka.su - 2015-2024 год. (0.01 сек.)