program CreateWindowAPI;
uses
Windows, Messages;
var
AWndClass: WNDCLASS;
AMsg: TMsg;
AWnd: HWND;
function WindowProc(hwnd: HWND; uMsg: UINT;
wParam: WPARAM; lParam: LPARAM): Longint; stdcall;
begin
Result:=0;
case uMsg of
WM_COMMAND: begin
if HIWORD(wParam)=0 then
case LOWORD(wParam) of
2014: MessageBox(hwnd, 'Button1', 'TWINAPIFORM', MB_OK);
2015: MessageBox(hwnd, 'Button2', 'TWINAPIFORM', MB_OK);
end;
end;
WM_CLOSE: if MessageBox(hwnd, 'Close?', 'TWINAPIFORM', MB_OKCANCEL)=IDOK then PostQuitMessage(0) else Exit;
end;
Result:=DefWindowProc(hwnd, uMsg, wParam, lParam);
end;
begin
AWndClass.Style:=CS_HREDRAW or CS_VREDRAW;
AWndClass.lpfnWndProc:=@WindowProc;
AWndClass.cbClsExtra:=0;
AWndClass.cbWndExtra:=0;
AWndClass.hInstance:=HInstance;
AWndClass.hIcon:=LoadIcon(0, IDI_APPLICATION);
AWndClass.hCursor:=LoadCursor(0, IDC_ARROW);
AWndClass.hbrBackground:=COLOR_WINDOW+1;
AWndClass.lpszMenuName:=nil;
AWndClass.lpszClassName:='TWINAPIFORM';
RegisterClass(AWndClass);
AWnd:=CreateWindow(
AWndClass.lpszClassName,
AWndClass.lpszClassName,
WS_VISIBLE or WS_OVERLAPPEDWINDOW,
Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT),
640, 480, 0, 0,
HInstance, nil);
CreateWindow('BUTTON', 'Button1', WS_CHILDWINDOW or WS_VISIBLE,
10, 10, 75, 25, AWnd, 2014, HInstance, nil);
CreateWindow('BUTTON', 'Button2', WS_CHILDWINDOW or WS_VISIBLE,
10, 45, 75, 25, AWnd, 2015, HInstance, nil);
while GetMessage(AMsg, 0, 0, 0) do
begin
TranslateMessage(AMsg);
DispatchMessage(AMsg);
end;
end.