昨日の午後からUIの実装方法を考えていて、まだ考え中である。最初はトップレベルのウィンドウをフルスクリーンとしてその上にUIを実装していこうかなと思ったけども、入力機器の入力データのUIパーツへのルーティングの処理がとても面倒そうだしできればやりたくないなぁと考えているうちに寝てしまい気が付くと夕方になっていた。寝ている間の時間も実装や検討に充てればよいがどうも性格的にできない。プログラミングにかける時間は1日まるまる暇でも4-5時間が限界である。それ以上はなぜかきつくてできない。楽しいはずなのだが本心はプログラミングが苦痛なのかもしれない。PCの前に座っている時間は下手をすると10時間程度にまでおよぶこともあるが、Youtube・Tumblr・Twitter・ブログのチェックに大半を費やしている。こういう時間の使い方は勿体ない気がしているのだがそこそこ楽しくて改めることはできない。
それはさておき今時点ではウィンドウ周りのことはOSのAPIを使って、描画のみをDirect2D/3Dで行おうかなと思っている。OSはいろいろ面倒見てくれているということが自前でのUI実装を見当した結果よくわかったので。Windowsありがとう。引き続きお世話になります。
そういうわけで今はWin32のUI関係のAPIをおさらいしつつ、自前のウィンドウ・ラッパーの構造を見直しているところである。私のウィンドウ・ラッパーはウィンドウ・コントロールとDirect2D/Direct3D/GDI描画部分が渾然一体となった比較的大きなクラスとなっている。まあ素人が作るとたいていはこうなるのだろう。少なくともウィンドウ・コントロールと描画部分は分離しようかなと考えている。APIもウィンドウ・ハンドルを第一引数に取るAPIをメンバ関数としてラップしているけれどもそうするのではなくインラインのフリー関数とかで分離したいほうがよいものもあるのかなとも思っていて整理しようかなとかとも考えている。UIは私がやりたいことの本質的な部分ではないのでまあそこそこで手を打とうかなと考えてるけどね。