我正在使用Delphi的MDI应用程序。如何在我的应用程序的MDI窗口中显示另一个进程的窗口
我想显示由我的应用程序的MDI子窗口中的其他应用程序(我也构建)生成的交互式视图。
当用户在我的应用程序中选择特定的视图类型时,它将启动另一个应用程序的实例,该实例将生成一个或多个显示在我的应用程序的MDI子窗口中的数据视图。
我希望这很清楚。
我正在使用Delphi的MDI应用程序。如何在我的应用程序的MDI窗口中显示另一个进程的窗口
我想显示由我的应用程序的MDI子窗口中的其他应用程序(我也构建)生成的交互式视图。
当用户在我的应用程序中选择特定的视图类型时,它将启动另一个应用程序的实例,该实例将生成一个或多个显示在我的应用程序的MDI子窗口中的数据视图。
我希望这很清楚。
您可以产生其他应用程序,获取与该进程关联的窗口句柄,然后将该窗口句柄的Parent设置为与MDI应用程序中的窗体或面板关联的句柄。
看看下面的Win32函数...
您可能还需要...
如果你想模块化你的应用程序,我认为最好使用dll来定义表单。
为此,您可以在dll或dpk中定义表单类,然后从应用程序中加载它。
如果您正在使用MDI窗体工作,我建议你使用普通的空MDI的形式和展示里面取出边界您的DLL的形式,这样的:
DllForm.FormStyle:=fsNormal;
DllForm.BorderStyle:=bsNone;
DllForm.Parent := MDIForm;
DllForm.Align := alClient;
您可以找到here有关加载形式的文章从一个DLL。
为什么不写一个ActiveX控件?它专为这类工作而设计(例如,考虑Outlook如何使用Word文本编辑器)。而且,通过这种方式,您的应用程序也可以与非Delphi应用程序进行交互。您可以在MDI窗口中显示非Delphi应用程序,例如Word和Excel,并且您的应用程序将能够在非Delphi ActiveX主机(如Word)中显示其内容。