Win32 と DirectX (ActiveX とグラフ)

LANSA

Win32 と DirectX (ActiveX とグラフ)


同じ UI スペースで Win32 と DirectX の両方を操作しようとした場合、互換性の問題が発生します。フォントに関しては、これは基礎となるテクノロジーの違いによるものです。

多くのお客様では、DirectX は既存のアプリケーション上の個別のフォームや、または既存のフォームに埋め込まれているパネルに採用されているでしょう。DirectX は Win32 の中で正しく動く為、このテクニックは問題ありません。しかし、逆の場合は、そんなに簡単ではありません。Win32 コントロールが、思ったようには振舞わないからです。

Win32 コントロールは DirectX と同じレンダーレベル部分を占めることができず、そのため、異なったレベルに配置されます。これにより、子の Win32 コントロールが親よりも大きい場合、スクロールの問題が発生します。下の画像では、ブラウザはスクロールされたパネルの親となっています。ブラウザの上部が右の画面スクロールバーの上部と一致していることを確認してください。これは Win32 アプリケーションであるため、ブラウザは正しく留められています。

このフォームのコードは、このドキュメントの「サンプルソース」のセクションで確認することができます。

しかし、DirectX で 同じフォームを実行した場合(下図参照)、パネルをスクロールすると、ActiveX が動き、留まりません。ブラウザが右側のパネルのスクロールバーより上にあることを確認してください。


この問題を実際に解決する唯一の方法は、おそらくレイアウトマネージャを使用して、Win32 コントロールを適切なサイズに変更し、親のサイズを超えないようにすることです。

このドキュメントのリリース時点では、メモ (Prim_memo) とリストビュー (Prim_ltvw) はまだ Win32 コントロールです