问题提出:
我想让我做的应用的各个子窗口都单独打开,而不是MDI或SDI(简单地说就象IE这样),因此我在窗口利用了这个函数
procedure Tfrm_form1.CreateParams(VAR Params: TCreateParams);
// 单独打开窗口
begin
Inherited CreateParams(Params);
Params.WndParent := GetDesktopWindow;
end;
这样打开的窗口,在任务栏中是单独的窗口了。
但是如果我在这个窗口中再打开对话框(也是自己做的form)的话,对话框总是出现在应用的主窗口,怎么才能让对话框弹出在Tfrm_form1的前面呢。
也就是说:我的主程序窗口是frm_main, 从frm_main会打开一个窗口frm_form1,frm_form1是单独打开的,从任务栏上看是单独的图标。 现在,我在frm_form1中showmodal打开一个窗口form2,这个form2会出现在应用主窗口frm_main的前面。而我要的是form2出现在frm_form1前面。
答:
Kingron也曾经为了这个问题头疼了好久,后来终于解决掉了:
关键在于Form2,你必须同时重载Form2的CreateParams,同样,修改Params.WndParent为Frm_Form1.Handle即可。
这个问题到此就可以解决,如果你的Form2还需要在其他地方使用,那么就必须采取动态创建的方法,而且必须修改它的CreateParams,把它的Param.WndParent设置为GetActiveWindow即可。