Модуль 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);

⇐ Предыдущая| |Следующая ⇒