Расчет и анализ потерь активной мощности
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
ель инструментов в верхнюю часть главного (родительского) окна, размер и местоположение панели устанавливаются с помощью функции SetWindowPos.
Вид панели инструментов представлен на рис.3.2.
Рис.3.2. Вид панели инструментов
В рассматриваемой программе на панель инструментов вынесены следующие наиболее часто употребимые функции:
вставить копию текущей строки;
вставить новую строку после текущей;
удалить текущую строку;
восстановить ранее удаленные строки;
ввести шаблон поиска (эта функция реализована с помощью стандартного дочернего окна управления класса окно редактирования);
поиск по шаблону вниз;
поиск по шаблону вверх;
сортировать в порядке возрастания;
сортировать в порядке убывания;
буфер обмена;
калькулятор;
печать;
выбор титров;
локальная помощь;
помощь.
Кроме того, на панели инструментов имеются радиокнопки, предназначенные для реализации дополнительных функций подготовки и обработки данных: трансляции, протокола, редактирования названий узлов и др.
Каждый раз при открытии дочернего окна панель инструментов активизирует доступные ему функции.
Входные параметры панели инструментов.
В рассматриваемой программе панель инструментов создается путем вызова функции CreateDialog:
hPnUpr = CreateDialog (hInstance, LOC (PnUpr C), hWnd, LOC(PnUpr)).
Параметры этой функции содержат следующую информацию:
hInstance дескриптор экземпляра программы;
LOC(PnUprC) идентифицирует шаблон блока диалога. Этот параметр является адресом символьной строки, в которой содержится имя шаблона диалогового окна;
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. Нажата кнопка мыши?
Если нажата правая кнопка:
а) определить выбранный на панели инструментов орган управления;
б) вывести соответствующее выбранному органу управления текстовое пояснение в предназначенное для этого поле панели состояния.
Если дочернее окно активно и нажата левая кнопка:
а) определить выбранный на панели инструментов орган управления;
б) отправить активному дочернему окну сообщение, содержащее идентификатор выбранного органа управления.
2. Продолжить выполнение программы.
Приведенный алгоритм требует некоторых пояснений.
Каждый раз при щелчке правой или левой кнопкой мыши над рабочей областью панели инструментов оконной процедуре главного окна посылается сообщение WM_PARENTNOTIFY, содержащее в своих параметрах следующую информацию:
идентификатор панели инструментов;
какая именно кнопка мыши нажата;
координаты курсора в момент нажатия.
Оконная процедура при обработке этого сообщения вызывает последовательно две подпрограммы HelpPnUpr и (при условии, что дочернее окно активно) GetIdPnUpr, в которых и реализуется первый шаг алгоритма.
Когда дочернему окну посылается сообщение на поиск по шаблону, оно, в