1

XE2 DLL で、COM 経由で起動されるフォームが多数あります。呼び出し元は VC 6 アプリケーションです。

開くすべてのフォームが TaskManager のアプリケーションとして表示されますが、これは望ましくありません。これらのウィンドウは単なるダイアログ ボックスであり、アプリケーションではありません。

これらのウィンドウが表示されないようにするために使用できる設定はありますか?

私は C++ Builder XE2 を使用していますが、おそらく Delphi ソリューションが適しています。

4

2 に答える 2

3

TaskManager は、最上位の所有されていないウィンドウを表示します。DLL ウィンドウに所有者ウィンドウが指定されていません。それが彼らが現れる理由です。

于 2012-09-25T18:14:49.760 に答える
1

TForm.BorderStyle を bsToolWindow または bsSizeToolWin に設定します。これにより、Win32 ウィンドウ スタイルに含まれるWS_EX_TOOLWINDOWが発生します。

または、 CreateParamsメソッドをオーバーライドする場合は、手動で設定できます。

また、 WS_POPUPWINDOWは CreateParams に設定する必要があると思いますが、その説明はそれを示唆しています。

最後になりましたが、C++ アプリケーションからメイン ウィンドウ ハンドルを渡して、それを親 hwndとしてダイアログ ウィンドウに割り当てます (それらのウィンドウがモーダルでない場合)。

于 2012-09-26T08:25:31.413 に答える