Ветеран

Сообщения: 1803
Благодарности: 714
|
Профиль
|
Отправить PM
| Цитировать
Вы даже предыдущие посты не читали, потому и не пояснили в какой среде Вы варите свою кухню! Оттого и ответ такой будет...наугад!
пример на Win32_API
Код: 
program AMain;
uses
Windows, Messages;
const
ClassName1 = 'Wnd1';
ClassName2 = 'Wnd2';
Form1 = 'Form1';
Form2 = 'Forn2';
FWidth1 = 600;
FHeight1 = 480;
FWidth2 = 300;
FHeight2 = 200;
IDC_BUTTON1 = 1;
var
hWnd2: DWORD;
hwndButton1: DWORD;
function Wnd1Proc(hWnd1: HWND; uMsg: UINT; wParam: wParam; lParam: LParam):
lresult; stdcall;
var
x, y : integer;
begin
Result := 0;
case uMsg of
WM_CREATE:
begin
x := GetSystemMetrics(SM_CXSCREEN);
y := GetSystemMetrics(SM_CYSCREEN);
MoveWindow(hWnd1, (x div 2) - (FWidth1 div 2),
(y div 2) - (FHeight1 div 2),
FWidth1, FHeight1, true);
hwndButton1 := CreateWindowEx(0, 'BUTTON', 'Вторая форма',
WS_CHILD or WS_VISIBLE, 200, 200,
200, 25, hWnd1, IDC_BUTTON1, hInstance, nil);
end;
WM_COMMAND:
begin
if hiword(wParam) = BN_CLICKED then
case loword(wParam) of
IDC_BUTTON1:
hwnd2 := CreateWindowEx(0, ClassName2, Form2,
WS_OVERLAPPEDWINDOW or WS_VISIBLE, 40, 10,
300, 200, hWnd1, 0, hInstance, nil);
end;
end;
WM_DESTROY:
begin
PostQuitMessage(0);
end;
else
Result := DefWindowProc(hWnd1, uMsg, wParam, lParam);
end;
end;
function Wnd2Proc(hWnd2: HWND; iMsg: UINT; wParam: wParam; lParam: LParam):
lresult; stdcall;
var
x, y : integer;
begin
Result := 0;
case iMsg of
WM_CREATE:
begin
x := GetSystemMetrics(SM_CXSCREEN);
y := GetSystemMetrics(SM_CYSCREEN);
MoveWindow(hWnd2, (x div 2) - (FWidth2 div 2),
(y div 2) - (FHeight2 div 2),
FWidth2, FHeight2, true);
end;
else
Result := DefWindowProc(hWnd2, iMsg, wParam, lParam);
end;
end;
var
wc: TWndClassEx = (
cbSize : SizeOf(TWndClassEx);
Style : CS_HREDRAW or CS_VREDRAW;
lpfnWndProc : @Wnd1Proc;
cbClsExtra : 0;
cbWndExtra : 0;
hbrBackground : COLOR_APPWORKSPACE;
lpszMenuName : nil;
lpszClassName : ClassName1;
hIconSm : 0;
);
msg: TMsg;
begin
wc.hInstance := hInstance;
wc.hIcon := LoadIcon(hInstance,MAKEINTRESOURCE(100));
wc.hCursor := LoadCursor(0, IDC_ARROW);
RegisterClassEx(wc);
CreateWindowEx(0, ClassName1, Form1, WS_VISIBLE or
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, FWidth1, FHeight1, 0, 0, hInstance,
nil);
wc.hInstance := hInstance;
wc.lpfnWndProc := @Wnd2Proc;
wc.hIcon := LoadIcon(0, IDI_INFORMATION);
wc.hCursor := LoadCursor(0, IDC_ARROW);
wc.lpszClassName := ClassName2;
RegisterClassEx(wc);
while GetMessage(msg,0,0,0) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
ExitCode := msg.wParam;
end.
Если бы написали, что с использованием VCL (что исходит из Ваших попыток добавления модулей), то и ответ, был бы иным.
|