if(y-1) //Перед выводом первой строки область текста очищается
Rectangl е (hdc. 0f. rCl i ent. bottom- i Hei ght. rCl i ent. r i ght. rCl i ent. bottom); TextOut(hdc.x.rCli ent.bottom-i Hei ght+2+15*(y-1).s.strlen(s)); ReleaseDC(hWnd.hdc); }
Область окна, в которую выводится текст, определяется размерами рабочей области, формируемыми в структуре rCl ient, и высотой текстовой части wHeight. При изменении пользователем размеров окна содержимое rCl ient корректируется. Для этого в оконную процедуру включена обработка сообщения WM_SIZE.
Поскольку пока неизвестно, как определять высоту шрифта, в приведенных функциях межстрочный интервал задан жестко и равен 15 пикселам.
Код функции задержки на заданное время приведен в листинге 5.12.
Листинг 5.12
void Delay(int t) {
int St - GetTickCountO;
wh i1e((GetTi ck Count()-St)<t);
}
Функция возвращает управление через t миллисекунд после вызова.
В этот же модуль помещена функция рисования колеса. Но она не отличается от своей предыдущей версии, поэтому нет смысла ее рассматривать детально.
В модуле OnMenu.cpp находится функция OnMenuO, которая запускается при выборе любого терминального пункта меню. Код модуля приведен в листинге 5.13.
Взаимодействие меню и приложения Листинг 5.13
#include <windows.h> #include "Main.h" #include "resource.h"
void OnMenuCHWND hWnd.UINT message.WPARAM wParam.LPARAM IParam)
{
char s[128] - "Выбран пункт меню"; char sl[50]; // Название пункта меню, char s2[256]: //Строка подсказки.
//Здесь функцией GetMenuString() читается название пункта, //а при помощи функции LoadStringO - подсказка к нему. //Элемент таблицы строк идентифицируется в LoadStringO //командой меню LOWORD(wParam).
GetMenuSt г i ng(GetMenu(hWnd).LOWORD(wPa ram).s1.128.MF_BYCOMMAND);
LoadString( GetModuleHandle(NULL).LOWORD(wParam). s2.128);
strcat(s.sl)
switch(LOWORDCwParam))
//Данным оператором выбирается вариант.
//соответствующий выбранному пункту меню.
{
case IMPORT: //При выборе любого из трех пунктов
case LOAD: //подменю File вычислительный процесс