技術領域の概要Technology Regions Overview

WPF、Win32、DirectX などのアプリケーションで複数のプレゼンテーション テクノロジを使用する場合は、一般的な最上位ウィンドウ内のレンダリング領域を共有する必要があります。If multiple presentation technologies are used in an application, such as WPF, Win32, or DirectX, they must share the rendering areas within a common top-level window. このトピックでは、プレゼンテーション層と、WPF の相互運用アプリケーションの入力に影響を与える問題について説明します。This topic describes issues that might influence the presentation and input for your WPF interoperation application.

領域Regions

最上位レベルのウィンドウ内には、次を各 HWND 相互運用アプリケーションのテクノロジのいずれかを構成する (「空域」とも呼ばれます)、専用の領域を持つを考えることができます。Within a top-level window, you can conceptualize that each HWND that comprises one of the technologies of an interoperation application has its own region (also called "airspace"). ウィンドウ内の各ピクセルは、その HWND のリージョンを構成する 1 つの HWND に属しています。Each pixel within the window belongs to exactly one HWND, which constitutes the region of that HWND. (厳密に言えばが 1 つ以上WPFWPFリージョンの 1 つ以上を使用する必要がある場合WPFWPFHWND では、この説明のために、1 つしかないを想定できますが、)。(Strictly speaking, there is more than one WPFWPF region if there is more than one WPFWPF HWND, but for purposes of this discussion, you can assume there is only one). リージョンは、すべてのレイヤーやアプリケーションの有効期間中にそのピクセルの上にレンダリングしようとする他のウィンドウはレンダリング レベルのと同じテクノロジの一部である必要がありますを意味します。The region implies that all layers or other windows that attempt to render above that pixel during application lifetime must be part of the same render-level technology. 表示しようとしています。WPFWPF経由でピクセルWin32Win32、望ましくない結果に潜在顧客、および相互運用を可能な限りは許可されていませんAPIAPIsします。Attempting to render WPFWPF pixels over Win32Win32 leads to undesirable results, and is disallowed as much as possible through the interoperation APIAPIs.

リージョンの例Region Examples

次の図は、アプリケーションが混在するWin32Win32DirectXDirectX、およびWPFWPFします。The following illustration shows an application that mixes Win32Win32, DirectXDirectX, and WPFWPF. それぞれのテクノロジ (ピクセル単位) の独自の独立した、重複しないセットを使用して、リージョンの問題はありません。Each technology uses its own separate, non-overlapping set of pixels, and there are no region issues.

Win32、DirectX、および WPF が混在するアプリケーションの例です。

このアプリケーションで、マウス ポインターの位置を使用して、これら 3 つのリージョンのいずれかをレンダリングしようとするアニメーションを作成することをとします。Suppose that this application uses the mouse pointer position to create an animation that attempts to render over any of these three regions. どちらのテクノロジが自体アニメーション担当に関係なくそのテクノロジが、その他の 2 つのリージョンに違反します。No matter which technology was responsible for the animation itself, that technology would violate the region of the other two. 次の図は、Win32 リージョン経由での WPF 円を表示するためにしようとします。The following illustration shows an attempt to render a WPF circle over a Win32 region.

Win32 リージョン経由での WPF 円を表示しようとしました。

別の違反は、透過性/アルファ ブレンドのさまざまなテクノロジとの間を使用しようとするかどうかです。Another violation is if you try to use transparency/alpha blending between different technologies. 次の図に、WPFWPFボックスに違反している、Win32Win32DirectXDirectXリージョン。In the following illustration, the WPFWPF box violates the Win32Win32 and DirectXDirectX regions. ため、ピクセルをWPFWPFそれら両方が共同で所有する必要があるボックスが半透明DirectXDirectXWPFWPF、することはできません。Because pixels in that WPFWPF box are semi-transparent, they would have to be owned jointly by both DirectXDirectX and WPFWPF, which is not possible. このため、これは違反であり、ビルドすることはできません。So this is another violation and cannot be built.

Win32、DirectX のリージョンに違反して WPF ボックスを示す図。

前の 3 つの例に使用される四角形の領域が、さまざまな図形が可能です。The previous three examples used rectangular regions, but different shapes are possible. たとえば、地域の穴をことができます。For example, a region can have a hole. 次の図は、Win32Win32これは、サイズの四角形の穴を持つ領域、WPFWPFDirectXDirectXの地域の結合します。The following illustration shows a Win32Win32 region with a rectangular hole this is the size of the WPFWPF and DirectXDirectX regions combined.

四角形の穴を持つ Win32 領域を示す図。

領域を完全に四角形にすることもできますがない図形や、 Win32Win32 HRGN (リージョン)。Regions can also be completely nonrectangular, or any shape describable by a Win32Win32 HRGN (region).

四角形以外のリージョンを示す図。

透明性と最上位レベルの WindowsTransparency and Top-Level Windows

Windows のウィンドウ マネージャーが本当にのみ処理Win32Win32Hwnd。The window manager in Windows only really processes Win32Win32 HWNDs. そのため、すべてWPFWPF Window HWND です。Therefore, every WPFWPF Window is an HWND. Window HWND が HWND の一般的な規則を遵守する必要があります。The Window HWND must abide by the general rules for any HWND. その HWND 内WPFWPFコード行えるあらゆる全体的なWPFWPFAPIAPIsをサポートします。Within that HWND, WPFWPF code can do whatever the overall WPFWPF APIAPIs support. デスクトップで、その他の Hwnd とのやり取りがWPFWPF規定を遵守する必要がありますWin32Win32処理およびルールを表示します。But for interactions with other HWNDs on the desktop, WPFWPF must abide by Win32Win32 processing and rendering rules. WPFWPF 使用して四角形以外の windows をサポートしているWin32Win32 APIAPIs— HRGNs 四角形以外の windows、およびピクセルごとのアルファのレイヤード ウィンドウ。supports non-rectangular windows by using Win32Win32 APIAPIs—HRGNs for non-rectangular windows, and layered windows for a per-pixel alpha.

定数のアルファ版および色キーを指定することはできません。Constant alpha and color keys are not supported. Win32Win32 レイヤード ウィンドウの機能は、プラットフォームによって異なります。layered window capabilities vary by platform.

レイヤード ウィンドウと、ウィンドウ全体半透明 (半透明)、ウィンドウのすべてのピクセルに適用するアルファ値を指定しています。Layered windows can make the entire window translucent (semi-transparent) by specifying an alpha value to apply to every pixel in the window. (Win32Win32サポート ピクセルごとのアルファ版が、これがこのモードですべての子を描画するために必要とするため、実用的なプログラムで使用する非常に困難ですが実際には HWND 自分で、ダイアログ ボックスのドロップダウン リストなど)。(Win32Win32 in fact supports per-pixel alpha, but this is very difficult to use in practical programs because in this mode you would need to draw any child HWND yourself, including dialogs and dropdowns).

WPFWPF HRGNs; をサポートしていますただしが管理なしAPIAPIsこの機能。supports HRGNs; however, there are no managed APIAPIs for this functionality. プラットフォームを使用することができますを呼び出すとHwndSourceを呼び出して、関連するWin32Win32APIAPIsします。You can use platform invoke and HwndSource to call the relevant Win32Win32 APIAPIs. 詳細については、次を参照してください。マネージ コードからネイティブ関数の呼び出しします。For more information, see Calling Native Functions from Managed Code.

WPFWPF レイヤード ウィンドウには、さまざまなオペレーティング システムにさまざまな機能があります。layered windows have different capabilities on different operating systems. これは、ためWPFWPFを使用してDirectXDirectXをレンダリングするレイヤード ウィンドウが主に用に設計された、GDIGDIレンダリングされませんDirectXDirectXレンダリング。This is because WPFWPF uses DirectXDirectX to render, and layered windows were primarily designed for GDIGDI rendering, not DirectXDirectX rendering.

  • WPFWPF レイヤード ウィンドウをサポートするハードウェアの高速化Windows VistaWindows Vista以降。supports hardware accelerated layered windows on Windows VistaWindows Vista and later. ハードウェア高速化レイヤー上の windowsMicrosoft Windows XPMicrosoft Windows XPサポートは必要Microsoft DirectXMicrosoft DirectX機能のバージョンによって異なりますので、Microsoft DirectXMicrosoft DirectXそのコンピューター上です。Hardware accelerated layered windows on Microsoft Windows XPMicrosoft Windows XP require support from Microsoft DirectXMicrosoft DirectX, so the capabilities will depend on the version of Microsoft DirectXMicrosoft DirectX on that machine.

  • WPFWPF 透明色キーをサポートしませんWPFWPFハードウェア アクセラレータによるレンダリングは、特に場合、要求された正確な色を表示するためには保証できません。does not support transparency color keys, because WPFWPF cannot guarantee to render the exact color you requested, particularly when rendering is hardware-accelerated.

  • アプリケーションが実行されている場合Microsoft Windows XPMicrosoft Windows XP、レイヤード ウィンドウの上にDirectXDirectXサーフェスがちらつく場合に、DirectXDirectXアプリケーションのレンダリングします。If your application is running on Microsoft Windows XPMicrosoft Windows XP, layered windows on top of DirectXDirectX surfaces flicker when the DirectXDirectX application renders. (実際のレンダリング シーケンスはMicrosoft Windows グラフィックス デバイス インターフェイス (GDI)Microsoft Windows Graphics Device Interface (GDI)し、レイヤード ウィンドウを非表示にDirectXDirectX、描画し、Microsoft Windows グラフィックス デバイス インターフェイス (GDI)Microsoft Windows Graphics Device Interface (GDI)レイヤード ウィンドウを戻します)。(The actual rendering sequence is that Microsoft Windows グラフィックス デバイス インターフェイス (GDI)Microsoft Windows Graphics Device Interface (GDI) hides the layered window, then DirectXDirectX draws, and then Microsoft Windows グラフィックス デバイス インターフェイス (GDI)Microsoft Windows Graphics Device Interface (GDI) puts the layered window back). WPFWPFレイヤード ウィンドウにもこの制限があります。Non-WPFWPF layered windows also have this limitation.

関連項目See also