Расчет и анализ потерь активной мощности

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?нная процедура окна с фокусом ввода получает сообщение WM_KEYDOWN.

В оконной процедуре строкового редактора при получении любого из этих сообщений фиксируется информационный код нажатой клавиши (sccod), переменная cod обнуляется. Затем вызывается подпрограмма edit с параметром hEdit.

При получении сообщения WM_CHAR, генерируемого рассмотренной ранее функцией TranslateMessage, фиксируется главный код нажатой клавиши (cod), переменная sccod обнуляется, а затем также вызывается подпрограмма edit с параметром hEdit.

Предусмотрена перекодировка из Windowsкодировки в MS DOSкодировку. При необходимости этот модуль можно убрать.

В подпрограмме edit производятся следующие операции:

а) если нажата одна из тех горячих клавиш, которые дублируют органы управления панели инструментов, то параметру wParam присваивается значение идентификатора соответствующего органа управления и в оконную процедуру родительского окна посылается сообщение WM_COMMAND.

б) если нажата одна из тех горячих клавиш, которые дублируют операции выделения строк или блоков, операцию снятия маркировки, то параметру wParam присваивается значение идентификатора соответствующего пункта всплывающего меню оконного редактора и в его оконную процедуру посылается сообщение WM_COMMAND.

в) если нажата клавиша ESCAPE или ENTER, переменной sccod присваивается соответственно 0 или значение, соответствующее информационному коду клавиши стрелка вправо, а затем оконной процедуре оконного редактора посылается сообщение WM_COMMAND с параметром wParam, равным -1.

г) если значение переменной cod не равно нулю, т.е. была нажата клавиша в алфавитно-цифровой части клавиатуры, происходит изменение редактируемого текста, переменной sccod присваивается значение, соответствующее информационному коду клавиши стрелка вправо.

д) если значение переменной cod равно нулю, по информационному коду нажатой клавиши проверяется ее принадлежность к группе функциональных клавиш или клавиш управления курсором, которые выполняют следующие действия:

клавиша стрелка влево (VK_LEFT) каретка перемещается на одну позиции влево. Если одновременно с клавишей была нажата клавиша Ctrl или каретка вышла за левую границу окна строкового редактора, оконной процедуре оконного редактора посылается сообщение WM_COMMAND с параметром wParam, равным -1;

клавиша стрелка вправо (VK_RIGHT) каретка перемещается на одну позиции вправо. Если одновременно с клавишей была нажата клавиша Ctrl или каретка вышла за правую границу окна строкового редактора, оконной процедуре оконного редактора посылается сообщение WM_COMMAND с параметром wParam, равным -1;

клавиша Delete (VK_DELETE) происходит удаление символа над кареткой, переменной codv присваивается значение 1;

клавиша Home (VK_HOME) происходит перемещение каретки в начало окна. Если одновременно с клавишей была нажата клавиша Ctrl, оконной процедуре оконного редактора посылается сообщение WM_COMMAND с параметром wParam, равным -1;

клавиша End (VK_END) происходит перемещение каретки в конец окна. Если одновременно с клавишей была нажата клавиша Ctrl, оконной процедуре оконного редактора посылается сообщение WM_COMMAND с параметром wParam, равным -1;

клавиша F5 (VK_F5) происходит удаление текста слева от каретки;

клавиша F6 (VK_F6) происходит удаление текста справа от каретки;

клавиша F7 (VK_F7) происходит удаление всего текста.

При изменении редактируемого текста код возврата принимает значение, равное 1, а оконная процедура строкового редактора получает сообщение WM_PAINT путем вызова функции InvalidateRect.

Третий пункт алгоритма.

При получении оконной процедурой строкового редактора сообщения WM_LBUTTONDOWN определяются координаты курсора мыши и каретка перемещается в позицию (с учетом ширины символов), соответствующую местоположению курсора мыши.

При получении оконной процедурой строкового редактора сообщения WM_RBUTTONDOWN на экран выводится всплывающее меню, вид которого представлен на рис.3.6.

Рис.3.6. Всплывающее меню строкового редактора

При щелчке левой кнопкой мыши на к.-л. пункте всплывающего меню оконной процедуре строкового редактора посылается сообщение WM_COMMAND, содержащее в младшем слове параметра wParam идентификатор выбранного пункта меню. Переменной sccod присваивается значение идентификатора выбранного пункта меню и вызывается подпрограмма edit.

Двойной щелчок левой кнопкой мыши на рабочей области окна строкового редактора порождает сообщение WM_LBUTTONDBLCLK. При получении этого сообщения оконная процедура строкового редактора переправляет его родительскому окну, т.е. оконному редактору, где оно и обрабатывается.

В рассматриваемой программе оконная процедура строкового редактора и подпрограмма edit объединены в одном модуле, что позволяет рассматривать строковый редактор как черный ящик. Черный ящик получает некоторые сообщения и определенным образом на них реагирует (рис.3.7).

Рис.3.7. Строковый редактор

Строковый редактор отображается на поверхности оконного редактора все время и уничтожается только по завершении его работы.

3.7 Оконный редактор

Оконный редактор предназначен для отображен