6.1. Первый пример программы для Windows
Наша первая графическая программа названа StudEx. Она предназначена для работы в среде 32-битных ОС Windows различных версий, например, 95, 98, 2000, Millennium, NT. Программа написана на языке C++ (строго говоря почти что на чистом С, если не считать комментариев) с использований
функций API Windows. Текст программы состоит из трех файлов
studex.cpp, studex.rc, studex.def.
Файл studex. cpp (это главный файл текста программы):
И-------Затем следует определение функций---------------
I/--------------Главная функция программы-------------------
//----Она определяет первые шаги работы программы----------
ц---д0 создания окна и вхождения в цикл сообщений---------
//—для Windows-программ функция С,C++ main названа WinMain
//-----------организация цикла обработки сообщений-------
while (GetMessage(&msg,NULL,NULL,NULL))
TranslateMessage(smsg);
DispatchMessage(Smsg);
}
return msg. wParam; }
//-------------функция главного окна программы---------
//—ее вызывает Windows, когда посылает сообщение нашей—
//-------------------------программе-------------------
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam) switch (message) //Обработка всех сообщений для окна
case WM_COMMAND: //Обработка сообщений пунктов меню switch (LOWORD(wParam)) {
case 201: //выбран пункт меню Графика
DrawStudyExample(hWnd); //это наша собственная
//функция break;
case 108:
DestroyWindow(hWnd); //для завершения работы break;
default : break; }
break; case WM_DESTROY:
PostQuitMessage(0); //для окончания цикла сообщений break;
default : return DefWindowProc(hWnd, //обработка
message, //всех wParam, //остальных
lParara); //сообщений
}
return 0L; }
//-----------это наша собственная функция, она-----------
//-будет содержать графические операторы рисования в окне---
void DrawStudyExample(HWND hWnd)
(
HDC hdc;
hdc = GetDC (hWnd) ; //контекст окна
if (hdc)
{
//после того, как получено ненулевое hdc, можно рисовать,
//например, десять прямоугольников размером 70 х 50 ...
for (int i=0; i<10; i++)
Rectangle(hdc, i*30, i*20, i*30+70, i*20+50);
}
ReleaseDC(hWnd,hdc); //этот контекст больше не нужен
)
Файл studex. гс (здесь содержится описание меню):
STUDEXMENU MENU
(
POPUP "«.Файл"
{
MENUITEM "&Открыть...", 101
MENUITEM "«.Записать как...", 102 | MENUITEM SEPARATOR
MENUITEM "«.Печать", 103
MENUITEM SEPARATOR
MENUITEM "«.Закончить", 108
1
MENUITEM "«.Графика", 201 I
Файл studex.def (файл описания для Windows):
NAME StudEx
DESCRIPTION 'Study Example1
EXETYPE WINDOWS
CODE PRELOAD MOVEABLE DISCARDABLE
DATA PRELOAD MOVEABLE MULTIPLE
Приведенный выше текст программы — это только исходный текст. Его необходимо скомпилировать, чтобы получить выполняемый файл в машинных кодах. Для компиляции и отладки этой программы можно использовать разнообразные инструментальные средства программирования, например, Borland C++ 5.02, Borland C++ Builder, Microsoft Visual C++ 6.0 и другие. После создания проекта в среде системы программирования в результате компили-
рования получим выполняемый файл. Имя этого файла— studex.exe (или другое, что определяется при создании проекта). Запустите программу в среде Windows. После появления окна программы выберите пункт меню "Графика". На экране дисплея будет изображение, как на рис. 6.1.
Рис. 6.1. Первый пример графической программы