Стандартное масштабируемое окно, в нем нужно разместить систему координат по центру. Как?
Стандартное масштабируемое окно, в котором по центру нарисованы Декартовы оси координат с метками 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, соответственно язык паскаль, а не С++