嵌入式文档中的标题栏无法响应
我想以我的程序的形式嵌入一个单词应用程序。 我正在使用下面的代码:
procedure TAMainForm.Button1Click(Sender: TObject);
var
WordApp: Variant;
WordHandle: THandle;
TempTitle: string;
begin
WordApp := CreateOleObject('Word.Application');
TempTitle := 'Temp - ' + IntToStr(Random(1000000));
WordApp.Caption := TempTitle;
WordHandle := FindWindow(nil, PChar(TempTitle));
WordApp.Visible := True;
Windows.SetParent(WordHandle, Handle);
SetWindowPos(WordHandle, 0, Left+20, Top+50, 700, 500, SWP_ASYNCWINDOWPOS);
end;
它将词语放入我的表格中,它似乎可以正常工作。 然而,应用程序这个词的标题栏是全黑的,并且不响应鼠标点击。 我的代码有什么问题?
有一个跨窗口的父母与子女之间的窗口关系在技术上可能是合法的,但这是非常难以管理的,并且需要两个过程都意识到这种情况。 Raymond Chen在他的博客文章中详细解释了跨进程父/子或拥有者/拥有窗口关系是否合法? 这种跨进程关系可能是您面临的问题的原因。
如果您试图实现您的表单停留在Word之上,则可以基于Application.WindowActivate
事件实施解决方法。 无论何时激活Word窗口,您都可以将自己的窗体带到顶端,例如使用SetWindowPos
。