ALTE DOCUMENTE
|
||||||
Пl 16116k1014q 8;иведенная ниже программа демонстрирует описанные выше графические функции. Эта программа использует технологию виртуального окна, которая рассматривалась в гл. 8. Она направляет весь вывод в контекст устройства памяти, содержимое которой затем копируется в реальное окно при обработке сообщения WM_PAINT WM_PAINT
Пl 16116k1014q 8;имер 9-1
#include <Windows.h>
#include <String.h>
#include <Stdio.h>
#include "Graph.h"
LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);
char szWinName[] = " "; //
char str[255]; // Буфер строки вывода
int X=0, Y=0; // Текущие координаты строки
int maxX, maxY; // Размеры экрана
HDC memdc; // DC виртуального окна
HBITMAP hbit; // Растр - это виртуальное окно
HBRUSH hbrush, hOldbrush; // Дескрипторы кистей
HPEN hOldpen; // Дескриптор прежнего пера
HPEN hRedpen,hGreenpen,hBluepen,hYellowpen; //
int WINAPI WinMain (HINSTANCE hThisInst,
HINSTANCE hPrevInst,
LPSTR lpszArgs,
int nWinMode)
return msg.wParam;
}
// Windows и получает в качестве параметров сообщения
LRESULT CALLBACK WindowFunc HWND hwnd
UINT message,
WPARAM wParam,
LPARAM lParam)
break;
case WM_PAINT: //
// Пl 16116k1014q 6;лучить DC */
hdc=BeginPaint(hwnd,&paintstruct);
BitBlt(hdc,0,0,maxX,maxY,memdc,0,0,SRCCOPY);
// DC
EndPaint(hwnd,&paintstruct);
break;
case WM_DESTROY: // Завершение программы
// Удалить созданные перья
DeleteObject(hRedpen);
DeleteObject(hGreenpen);
DeleteObject(hBluepen);
DeleteObject(hYellowpen);
DeleteDC(memdc); //
PostQuitMessage(0);
break;
default:
// Все сообщения, не обрабатываемые в данной
// функции, направляются на обработку по
// умолчанию
return DefWindowProc(hwnd,message,
wParam,lParam);
return 0;
}
#include <Windows.h>
#include "Graph.h"
MYMENU MENU
MYMENU ACCELERATORS
Пl 16116k1014q 6;требуется также файл определений Graph.h:
#define ID_LINES 100
#define ID_RECTANGLES 101
#define ID_ELLIPSES 102
#define ID_RESET 103
#define ID_HELP 104
Пl 16116k1014q 8;ограмма создает меню, позволяющее отображать линии (и вдобавок два пикселя), прямоугольники и эллипсы. Имеется также возможность очистить окно и восстановить текущую позицию. Пl 16116k1014q 8;имер вывода различных типов графики представлен на рис. 9.2.
|