Приведенный ниже код создает кнопку на рабочем столе.
Код:
procedure TForm1.B_Click(Sender: TObject);
begin
ShowMessage( 'aaa' );
end;
procedure TForm1.Button1Click(Sender: TObject);
var
h: HWND;
b: TButton;
begin
h := FindWindow( 'Progman', 'Program Manager' );
b := TButton.Create( Owner );
// b.Parent := Form1;
b.ParentWindow := h;
b.Left := 10;
b.Top := 10;
b.Caption := 'Button';
b.OnClick := B_Click;
Windows.SetParent( b.Handle, h );
end;
Проблема в следующем. После смены родителя (
Windows.SetParent( b.Handle, h )) кнопка перестает реагировать на события (в данном случае на Click). Как сменить родителя и при этом сохранить события?