产品之工具箱,需要工具以模态窗体,显示于主界面之上。记下代码点,以做备忘。
1、IWin32Window
internal class Win32Window : IWin32Window { public Win32Window(IntPtr handle) { this.Handle = handle; } public IntPtr Handle { get; private set; } }
2、窗体显示处理
static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var mainForm = new MainForm(); int h;
//这里,当再加入窗体是否有效判断 if (args.Length == 0 || !int.TryParse(args[0], out h)) Application.Run(mainForm); else { var w = new Win32Window((IntPtr)h); mainForm.ShowDialog(w); } } }
3、同样功能,Delphi实现:
i. 窗体重截CaramParams:
procedure TfrmMain.CreateParams; begin inherited CreateParams(Params); Params.WndParent := PHwnd; end;
ii. 修正工程文件:
begin if ParamCount <> 0 then PHwnd := StrToInt(ParamStr(1)); Application.Initialize; Application.MainFormOnTaskbar := True; MainForm := TForm1.Create(Application); EnableWindow(PHwnd, False); MainForm.ShowModal; EnableWindow(PHwnd, True); end.
同类方案参考资料,但不完美: