Модуль Main.cpp содержит объявления глобальных переменных и основной цикл. Его код приведен в листинге 5.9.
Листинг 5.9
#include <windows.h> finclude "Main.h" #include <stdio.h>
RECT rClient; //Размер рабочей области.
int iHeight - 32; //Высота нижней, текстовой половины.
int Demo - 0;
//Признак работы в режиме обучения. Если пункты меню
//выбирает пользователь, то переменная Demo равна нулю. Если выбор пункта
//меню вызван программными сообщениями, имитирующими действия пользователя.
//то значение переменной Demo будет больше нуля.
int API ENTRY WinMain (HINSTANCE KodPril.HINSTANCE.LPSTR.int Oknlcon)
{
MSG msg;
if (InitApp(KodPril))
return 1; //Выход из приложения, если инициализация завершилась неудачно, while (GetMessage(&msg. NULL. 0. 0) ) {
TranslateMessage(&msg); //Проект Minim дополнен этой функцией, создающей //необходимые для работы «горячих» клавиш сообщения WM_CHAR.
DispatchMessageC (LPMSG) &msg );
}
return 0: }
Создание и использование меню
Модуль MyUtil.cpp содержит функции, которые могут потребоваться повторно при дальнейшем изучении материала. Прежде всего следует упомянуть функцию вывода строки в область сообщений. У этой функции параметр х задает в пикселах отступ начала строки от левого края окна, а параметр у задает номер строки в области сообщений. Параметр Format содержит текст строки. Сам код функции приведен в листинге 5.10.
Листинг 5.10
void PrintStringCHWND hWnd.int x.int y. char *Format) {
HDC hdc-GetDC(hWnd);
if(y--l) //Перед выводом первой строки область текста очищается.
Rectanglе(hdc.O.rClient.bottom-i Hei ght.rCli ent.ri ght.rCli ent.bottom); TextOut(hdc.x.rClient.bottom-iHeight+2+15*(y-1). Format. strlen(Format)); ReleaseDC(hWnd.hdc); }
Также следует обратить внимание на функцию вывода строки и целого числа в область сообщений. Функции передаются строка формата и выводимое число, как показано в листинге 5.11.
Листинг 5.11
void PrintInt(HWND hWnd.int x.int у. char *Format,int Data) {
char s[256]; sprintf(s.Format.Data); HDC hdc - GetDC(hWnd);