我有许多通过 COM 在 XE2 DLL 中启动的表单。调用者是一个 VC 6 应用程序。
每个打开的表单都在 TaskManager 中显示为应用程序,我不希望这样,这些窗口只是对话框,而不是应用程序。
有没有可以用来不显示这些窗口的设置?
我正在使用 C++ Builder XE2,但 Delphi 解决方案可能对我有用。
我有许多通过 COM 在 XE2 DLL 中启动的表单。调用者是一个 VC 6 应用程序。
每个打开的表单都在 TaskManager 中显示为应用程序,我不希望这样,这些窗口只是对话框,而不是应用程序。
有没有可以用来不显示这些窗口的设置?
我正在使用 C++ Builder XE2,但 Delphi 解决方案可能对我有用。
TaskManager 显示顶级无主窗口。您的 DLL 窗口没有指定任何所有者窗口。这就是它们出现的原因。
将 TForm.BorderStyle 设置为 bsToolWindow 或 bsSizeToolWin。这将导致WS_EX_TOOLWINDOW包含在 Win32 窗口样式中。
或者,如果您覆盖CreateParams方法,您可以手动设置它们。
我还认为WS_POPUPWINDOW是在 CreateParams 中设置的,它的描述表明了这一点。
最后但并非最不重要的一点是,我会尝试从 C++ 应用程序传递主窗口句柄,然后将其作为父 hwnd分配给您的对话框窗口,如果这些窗口不是模态的。