1

我有许多通过 COM 在 XE2 DLL 中启动的表单。调用者是一个 VC 6 应用程序。

每个打开的表单都在 TaskManager 中显示为应用程序,我不希望这样,这些窗口只是对话框,而不是应用程序。

有没有可以用来不显示这些窗口的设置?

我正在使用 C++ Builder XE2,但 Delphi 解决方案可能对我有用。

4

2 回答 2

3

TaskManager 显示顶级无主窗口。您的 DLL 窗口没有指定任何所有者窗口。这就是它们出现的原因。

于 2012-09-25T18:14:49.760 回答
1

将 TForm.BorderStyle 设置为 bsToolWindow 或 bsSizeToolWin。这将导致WS_EX_TOOLWINDOW包含在 Win32 窗口样式中。

或者,如果您覆盖CreateParams方法,您可以手动设置它们。

我还认为WS_POPUPWINDOW是在 CreateParams 中设置的,它的描述表明了这一点。

最后但并非最不重要的一点是,我会尝试从 C++ 应用程序传递主窗口句柄,然后将其作为父 hwnd分配给您的对话框窗口,如果这些窗口不是模态的。

于 2012-09-26T08:25:31.413 回答