3.4 Панель инструментов
Панель инструментов предназначена для реализации дополнительных функций, предоставляемых программой.
Панель инструментов представляет собой немодальное окно диалога, содержащее набор битовых картинок и стандартные (зарегистрированные) дочерние окна управления. Выводится панель инструментов в верхнюю часть главного (родительского) окна, размер и местоположение панели устанавливаются с помощью функции SetWindowPos.
Вид панели инструментов представлен на рис. 3.2.
Рис. 3.2. Вид панели инструментов
В рассматриваемой программе на панель инструментов вынесены следующие наиболее часто употребимые функции:
à вставить копию текущей строки;
à вставить новую строку после текущей;
à удалить текущую строку;
à восстановить ранее удаленные строки;
à ввести шаблон поиска (эта функция реализована с помощью стандартного дочернего окна управления класса «окно редактирования»);
à поиск по шаблону вниз;
à поиск по шаблону вверх;
à сортировать в порядке возрастания;
à сортировать в порядке убывания;
à буфер обмена;
à калькулятор;
à печать;
à выбор титров;
à локальная помощь;
à помощь.
Кроме того, на панели инструментов имеются радиокнопки, предназначенные для реализации дополнительных функций подготовки и обработки данных: трансляции, протокола, редактирования названий узлов и др.
Каждый раз при открытии дочернего окна панель инструментов активизирует доступные ему функции.
Входные параметры панели инструментов.
В рассматриваемой программе панель инструментов создается путем вызова функции CreateDialog:
hPnUpr = CreateDialog (hInstance, LOC («PnUpr» C), hWnd, LOC(PnUpr)).
Параметры этой функции содержат следующую информацию:
hInstance – дескриптор экземпляра программы;
LOC(‘’PnUpr’’C) – идентифицирует шаблон блока диалога. Этот параметр является адресом символьной строки, в которой содержится имя шаблона диалогового окна;
hWnd – дескриптор родительского окна. Для панели инструментов родительским является главное окно программы;
LOC(PnUpr) – адрес процедуры диалога.
Функция возвращает дескриптор панели инструментов, который хранится в глобальной переменной hPnUpr.
Процедура диалогового окна панели инструментов определяется следующим образом:
integer function PnUpr (hDlg, message, wParam, lParam)
Параметры процедуры диалога аналогичны параметрам оконной процедуры главного окна: hDlg – дескриптор окна диалога; message – переменная, идентифицирующая сообщение; параметры wParam и lParam содержат дополнительную информацию о сообщении.
Процедура диалогового окна панели инструментов обрабатывает только два типа сообщений:
а) WM_INITDIALOG; это сообщение посылается процедуре диалога при создании диалогового окна прежде, чем оно отображается на дисплее. При получении этого сообщения процедура диалога вычисляет высоту панели инструментов, используя для этого функцию GetWindowRect:
bret = GetWindowRect (hDlg, rect).
Функция заполняет поля структуры rect типа T_RECT информацией о размерах рабочей области диалогового окна панели инструментов. Затем вычисляется высота диалогового окна:
YDlg = rect % bottom – rect % top.
Вычисленное значение хранится в глобальной переменной YDlg.
б) дочерние окна управления панели инструментов посылают процедуре диалогового окна сообщения WM_COMMAND. Параметры этого сообщения содержат идентификатор дочернего окна (младшее слово параметра wParam), код уведомления (старшее слово wParam) и дескриптор дочернего окна управления, пославшего сообщение (lParam). В рассматриваемой программе дочерними окнами управления панели инструментов являются окно ввода шаблона поиска и радиокнопки. Процедура диалога при получении сообщения WM_COMMAND определяет по младшему слову параметра wParam идентификатор дочернего окна, от которого пришло сообщение, и выполняет соответствующие действия.
Выходные параметры панели инструментов.
Выходными параметрами панели инструментов являются сообщения активному на данный момент дочернему окну или панели состояния.
Сообщение активному дочернему окну посылается в случае, если левой кнопкой мыши выбран какой-либо орган управления на панели инструментов. Щелчок правой кнопкой мыши на любом органе управления (исключая окно ввода шаблона поиска) заставляет программу вывести в панель состояния текст, поясняющий предназначение выбранного органа управления.
Алгоритм, реализующий вышесказанное, выглядит следующим образом.
1. Нажата кнопка мыши?
Если нажата правая кнопка:
а) определить выбранный на панели инструментов орган управления;
б) вывести соответствующее выбранному органу управления текстовое пояснение в предназначенное для этого поле панели состояния.
Если дочернее окно активно и нажата левая кнопка:
а) определить выбранный на панели инструментов орган управления;
б) отправить активному дочернему окну сообщение, содержащее идентификатор выбранного органа управления.
... (от передвижения источников загрязнения) 1180,48 Всего за год: 211845,25 10. Совершенствование системы электроснабжения подземных потребителей шахты Расчет схемы электроснабжения ЦПП до участка и выбор фазокомпенсирующих устройств Основными задачами эксплуатации современных систем электроснабжения горных предприятий являются правильное определение электриче ...
... luc – программа используется для разложения матрицы на треугольные сомножители; rluc – программа, которая отвечает за решение системы уравнений. 4. Разработка адаптивной системы управления режимами электропотребления 4.1 Функции автоматизированной системы Сбор, накопление и передача информации, характеризующей режим электропотребления комбината (информация о нагрузках). Сбор, накопление ...
... Еловка ТМН-2500/35 ±6×1,5% Ужурсовхоз ТМН-4000/35 ±6×1,5% 2. Характеристика задачи расчета, анализа и оптимизации режимов РЭС 110-35 кВ по напряжению, реактивной мощности и коэффициентам трансформации Питающие электрические сети напряжением 110 кВ, ...
... линиям относят линии, для которых верхняя граница интервала неопределенности потерь превышает установленную норму (например, 5%). 3. Программы расчета потерь электроэнергии в распределительных электрических сетях 3.1 Необходимость расчета технических потерь электроэнергии В настоящее время во многих энергосистемах России потери в сетях растут даже при уменьшении энергопотребления. При ...
0 комментариев