Сергей Омельчук
Сергей Омельчук

Стандартное масштабируемое окно, в нем нужно разместить систему координат по центру. Как?

Стандартное масштабируемое окно, в котором по центру нарисованы Декартовы оси координат с метками 0 и названием осей X и Y, размеры осей должны изменяться при изменении размеров окна.

Все выполнено, за исключением последнего - размеры осей должны изменяться при изменении размеров окна. Где и что в коде нужно дописать, чтобы добиться требуемой задачи?

program LAB3;

uses
windows,
messages;

{интерфейс к системным DLL и константы-сообщения}

function WndProc(hWnd: THandle; Msg: integer;
wParam: longint; lParam: longint): longint;
stdcall; forward;

procedure WinMain; {Содержит основной цикл обработки сообщений,
для совместимости с документацией по С выделено
в отдельную процедуру}
const szClassName='lab3';
var wndClass:TWndClassEx;
hWnd: THandle;
msg:TMsg;
begin
// Заполнение описания оконного класса
wndClass.cbSize:=sizeof(wndClass);
wndClass.style:=cs_hredraw or cs_vredraw;
wndClass.lpfnWndProc:=@WndProc;
wndClass.cbClsExtra:=0;
wndClass.cbWndExtra:=0;
wndClass.hInstance:=hInstance;
wndClass.hIcon:=loadIcon(0, idi_Application);
wndClass.hCursor:=loadCursor(0, idc_Arrow);
wndClass.hbrBackground:=GetStockObject(white_Brush);
wndClass.lpszMenuName:=nil;
wndClass.lpszClassName:=szClassName;
wndClass.hIconSm:=loadIcon(0, idi_Application);

RegisterClassEx(wndClass); {регистрация оконного класса}

hwnd:=CreateWindow(szClassName, {имя класса окна}
'Система координат', {заголовок окна}
ws_overlappedWindow, {стиль окна}
cw_useDefault, {Left}
cw_useDefault, {Top}
cw_useDefault, {Width}
cw_useDefault, {Height}
0, {хэндл родительского окна}
0, {хэндл оконного меню}
hInstance, {хэндл экземпляра приложения}
nil); {параметры создания окна}

ShowWindow(hwnd,sw_Show); {отобразить окно}
// updateWindow(hwnd);
{послать wm_paint оконной процедуре, минуя очередь
сообщений (необязательно) - прорисовка окна}

while GetMessage(msg,0,0,0) do begin {получить очередное сообщение}
TranslateMessage(msg); {Windows транслирует сообщения от клавиатуры}
DispatchMessage(msg); {Windows вызовет оконную процедуру}
end; {выход по wm_quit, на которое GetMessage вернет FALSE}
end;

function WndProc(hWnd: THandle; Msg: integer; wParam: longint; lParam: longint): longint; stdcall;
var ps:TPaintStruct;
hdc:THandle;
rect:TRect;
begin
result:=0;
case Msg of
wm_paint:
begin
// Рисование клиентской области
hdc:=BeginPaint(hwnd,ps);
GetClientRect(hwnd,rect);
MoveToEx(hdc,200,100,nil);
LineTo(hdc,200,500);
MoveToEx(hdc,200,500,nil);
LineTo(hdc,600,500);
endPaint(hwnd,ps);
end;
wm_destroy:
PostQuitMessage(0);
else
result:=DefWindowProc(hwnd,msg,wparam,lparam);
end;
end;

begin
WinMain;
end.

// Рисование клиентской области
MoveToEx(hdc,200,100,nil);
LineTo(hdc,200,500);
MoveToEx(hdc,200,500,nil);
LineTo(hdc,600,500);
MoveToEx(hdc,200,100,nil);
LineTo(hdc,190,120);
MoveToEx(hdc,200,100,nil);
LineTo(hdc,210,120);
MoveToEx(hdc,600,500,nil);
LineTo(hdc,580,490);
MoveToEx(hdc,600,500,nil);
LineTo(hdc,580,510);
TextOut(hdc,185,505,'O',1);
TextOut(hdc,175,100,'Y',1);
TextOut(hdc,600,505,'X',1);
endPaint(hwnd,ps);

Компилятор Delphi XE3, соответственно язык паскаль, а не С++

Похожие вопросы
Как выровнять всплывающее окно colorbox по центру?
Как найти координаты центр окружности??
Проекция вектора на систему координат.
Как в Кореле-13 разместить по заданному шаблону на листе А4 нужную картинку по координатам?
найдите координаты центра окружности
нужны координаты центра Москвы, на карте!! ! Спасибо заранее...
Перевод в полярную систему координат
Где можно разместить сайт, чтобы узнать о нем отзывы пользователей?
кто ввел систему координат
В Корел импортировал картинку. Как привязать ее центр к координатам страницы чтобы они всегда совпадали