我在StackOverflow上看了一些帖子,但是没有一个对我有用。这里是我正在使用的代码,在我的表单上显示标准计算器的窗口:
procedure TForm1.Button1Click(Sender: TObject);
var
Tmp: Cardinal;
R: TRect;
begin
CalcWindow := FindWindow(nil, 'Calculator');
if (CalcWindow <> 0) then
begin
GetWindowThreadProcessID(CalcWindow, CalcProcessID);
Tmp := GetWindowLong(CalcWindow, GWL_STYLE);
Tmp := (Tmp and not WS_POPUP) or WS_CHILD;
SetWindowLong(CalcWindow, GWL_STYLE, Tmp);
GetWindowRect(CalcWindow, R);
SetForegroundWindow(CalcWindow);
Windows.SetParent(CalcWindow, Panel1.Handle);
SetWindowPos(CalcWindow, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_FRAMECHANGED);
AttachThreadInput(GetCurrentThreadID(), CalcWindow, True);
end;
end;
它确实在我的窗体上显示了窗口,但玻璃边框丢失了,有时(特别是当我移动我的窗体时)很难将焦点恢复到嵌入的窗口(需要点击几次)。可能是什么原因导致这种情况?此方法可能会遇到哪些潜在问题?感谢您的时间。