{Register the Window class} function RegisterClassMeth: Boolean; var WindowClass: TWndClass; begin {setup our new window class} WindowClass.style := CS_HREDRAW or CS_VREDRAW; {set the class styles} WindowClass.lpfnWndProc := @DefWindowProc; {point to the default window procedure} WindowClass.cbClsExtra := 0; {no extra class memory} WindowClass.cbWndExtra := 0; {no extra window memory} WindowClass.hInstance := HInstance; {the application instance} WindowClass.hIcon := 0; {no icon specified} WindowClass.hCursor := 0; {no cursor specified} WindowClass.hbrBackground := COLOR_WINDOW; {use a predefined color} WindowClass.lpszMenuName := nil; {no memu} WindowClass.lpszClassName := 'TestClass'; {the registered class name} {now that we have our class set up,register it with the system} Result := Winapi.Windows.RegisterClass(WindowClass) <> 0; end; procedure TForm12.Button3Click(Sender: TObject); var hWindow: HWND; begin {Step 1: Register our new window class} if not RegisterClassMeth() then begin ShowMessage('RegisterClass failed!'); Exit; end; {Step 2: Create a window based on our new class} hWindow := CreateWindowEx(0, {no extend styles} 'TestClass', {the registered class name} 'New Window', {the title bar text} WS_OVERLAPPEDWINDOW, {a normal window style} CW_USEDEFAULT, {default horizontal position} CW_USEDEFAULT, {default vertical position} CW_USEDEFAULT, {default width} CW_USEDEFAULT, {default height} 0, {no owner window} 0, {no menu} hInstance, {the application instance} nil {no additional information} ); {Step 3: If our window was created successfully,display it} if hWindow <> 0 then begin ShowWindow(hWindow,SW_SHOWNORMAL); UpdateWindow(hWindow); end else begin ShowMessage('CreateWindow'); Exit; end; end;