HWNDはウインドウハンドルだが、OOPではちょっと邪魔な存在である。
子ウインドウは親ウインドウのWM_PAINTとは別系統でシステムが描画するからである。
コントロールの描画をWM_PAINTだけで統一できれば、色々なことができるはずだが、20年以上前のメモリ4Mbyte、C++もない時代の仕様なので仕方ない。
そこで、HWNDを外枠のMainFrameだけに限定して、Direct2Dで内部のコントロールをすべて作成してみた。

以下のコントロールをDirect2Dで作成できれば、あとはその変形版で何とかなるはずである。


1、Button コントロール
2、Combobox コントロール
3、Textbox コントロール

ボタンは簡単である。絵を書いてWM_LBUTTONDOWN,WM_LBUTTONUPを処理すればいい。
コンボボックスは少し難しい。作って気づく部分があった。
テキストボックスは、相当難しい。日本語変換をTFSで実装しなければ、HWNDが文字変換で登場してしまう。
しかし、TFSが長年謎の存在で手がつけられなかった。あれAPIとしては失格だと思う。

誤魔化すというより、Window内にDirect2DのWindowシステムを作成!!。

また、画面の高精細化(96DPIから約200DPIへの対応)という別の問題が現在持ち上がっていて(多分ね)、どう対応すべきか悩んでいるはずである。
MSはC#のWPFを推進したいらしいが(それしか方法がないかのように)、WPFは大失敗とみているので個人的にはもう関わりたくない。

理由は、WEBシステムと同じセキュリティ上の理由で、いろんな制限がかかりすぎている。
APIとしては抽象度が高すぎる。動作がもっさりしている。画面がXML化され冗長である。
Silverlight,WindowsPhone,Windows8 と関わりをもったものはみな失敗。

一方、Direct2Dの問題はC++が難解すぎて人材を確保できないという点だと思う。(長年、.NETばかり注力したせいで、、)

そのうちD2DWindowとしてgitで公開するつもりである。