多くの独立したサブシステムで構成されるシステムを開発しています。そのようなサブシステムの 2 つは、Window サブシステムと GraphicsAdapter サブシステムです。
GraphicsAdapter には低レベルのウィンドウ ハンドル (オペレーティング システムに応じて HWND または X11 ウィンドウ ハンドル) が必要であり、ウィンドウ サブシステムはこれらの OS 固有の API を抽象化する方法です。
Window サブシステムが低レベル API ハンドルへのアクセスを許可した場合、カプセル化が破られる可能性が高くなります。
ウィンドウをフルスクリーンに切り替えたり元に戻したりできるが、それらの変更についてシステムに警告するイベントを発生させる必要があり、低レベルのハンドルを使用して知らないうちにフルスクリーンに切り替えるとしたら?
ハンドルが悪用されることなく Window サブシステムから GraphicsAdapter に安全に運ばれ、GraphicsAdapter のような他のサブシステムを後で追加できるように十分な柔軟性を確保しながら、同時に型の安全性を維持するにはどうすればよいでしょうか?
Direct3D と OpenGL がハンドルから適切に動作するのに十分なだけアクセスできる方法でハンドルをカプセル化する方法はありますか?
- 編集
さらに、あるサブシステムから別のサブシステムにハンドルを安全に運ぶために、たとえば、サブシステムは別のコーダー チームによって記述される可能性があることを知っている場合、ハンドルの使用方法を彼らに思い出させる方法はありますか?
コメントは当然の選択ですが、コンパイラによって強制されるものは、私が本当に探しているものです...