neptune_explorer_0x9 (v0.000000001(β1)) | 2009-11-02 23:23 |
Neptune-UI (0.01.40.20) | 2008-07-12 20:15 |
>開発日誌>2008年10月
どうもこんばんわ。最近プロジェクトの活発度を下げまくりのミューです。(何
・・・いや、つっても開発自体はやってるんすけどね・・・。それもcommitもちゃんとしているんすけどね。
ただ、修正対象のリポジトリがopen-mglの方であるため、こっちの活発度は下がる一方という・・・。
「August Framework」と言うものを作ってます。 (・・・リンクを張ったものの、中身は空です。:何)先日話した「AGH」の、open-mglでの実装系です。
実行してみると、大した事の無いプログラム(表示される数字の奴をドラッグ出来るだけ)なのですが、これが実は結構手間隙掛かってます・・・。 ステップ数的にも大した量はないんですけどね。かれこれ一週間近く掛かってます・・・。
何が一番大変かって、デバッグが一番苦労しましたね。 まずデバッグし辛い。DLLなので毎回ビルドしなきゃいけない。それからAGHは、MFCのようにメソッドをどんどんオバーライドしていく方式なので、 そこにステップインして行くのも難しかった。それからマクロ。agh_ScreenBase.hを見てもらえると分かると思うのですが、真中らへん以降からがマクロの嵐!!ステップインし辛いというか、出来ないと言うか・・・大変でした。
こういった、MFCのようにガンガンメソッドをオーバーライドするタイプのライブラリをあまり作ったことが無い、と言うのも苦労する羽目になった理由の一つです。 virtualが付いてるとか、付いてないとか、<基底クラス名>::メソッド名とか、「そりゃあおめぇ、基底クラスのメソッド呼ばれて当然だろ・・・」なんて初歩的なミスも・・・。 て言うかいつも純粋仮想関数ばっかで、あんまvirtualメソッド宣言してオーバーライドってした事が無かったので、そこらへんもノウハウが無くて苦労させられた理由の一つですねー。 まぁどれにせよ、どれをとっても、今まで余りやってなかった事で、更にDLLだとかやり辛い条件が重なり、非常に苦労させられた感じでした。
# あー、あと、最近仕事でJavaばっか使ってたからついついJavaのつもりで・・・と言うのも理由の一つですね。
でー、あー・・・あ、そうだ。August Frameworkがどれだけ優れているか、って話でもしましょうか。(何
さっきまで散々言ってたように、August Frameworkは、MFCのようにガンガンメソッドをオーバーライドしていくタイプのプログラムです。
その先駆け(?)であるMFC。設計と言うか、発想と言うか、考え方自体は非常に良いとこついてると思うのですが、いかんせんそっから先が悪かった・・・。
CWinAppを継承したクラスがあり、CMDIFrameWndを継承したメインクラスがあり、CMDIChildWndを継承したクラスがあり、CViewを継承したクラスがあり・・・と幾つものクラスを作らねばならず・・・。
・・・いや、分かるよ!?そうしない事には確かに無理。けれども───
結果的に言えば、Windows SDKプログラミングを無理やりその「ガンガンメソッドをオーバーライドしていくタイプ」(なんて言うんだろね?こういう設計)に ネジ込もうとしたのが良くなかったのかも知れない。いや、もしくはMDIとSDI、+ダイアログベースを無理に共通化したのが良くなかったのか・・・? まぁ何れにせよ、MFCは使い辛いものになってしまった。
実際の使用者側のソースコードはこの程度。どうです?簡単でしょ?
あ、そうそう。MFCと違って、大体のやりたい事はライブラリ側に揃ってる(わざわざユーザが一つの事を実現するためにあくせくする必要が無い)事も勝ってる所です。
・・・揃ってる、って言うかこれから揃わせます。「こんな事したいんだけどー」ってのがあれば、言ってくれれば多分誰かが実装してくれます。(何
まぁもし仮になかったとしても、簡単にオーバーライドで実装可能なようにします。MFCみたいに、キモくオーバーライドする羽目にはならないようには設計します。(笑
まぁそんな感じですねー。近況。
とりあえず August Framework が、やっとこさまともに動き出して、個人的には一段落、一息、一安心、と言った感じです。
暫く休業期間に入るやも知れません。(何
などと事前にサボり宣言をしつつ・・・ではでは。
前回の日誌にて書いていた「UI関連のコントロールを統一インターフェース化」ですが、
名前が付きました。AGHと言う名前です。
Abstracted GUI Headers の略で「抽象化されたGUIのヘッダー群」と言う意味になります。
YukiIL変換系も一筋縄では行かず、結局の所、今はこちらを実装しています。
コンボボックスなんて高等なコントロールはまだまだ全然先の話ですね・・・まずは画像表示、
マウスイベントのハンドル辺りを作っています。
ちなみにソース自体は Open-MGL の方で管理しています。
>http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/AGH/include/agh.h?root=open-mgl&view=log
まだまーだ作りかけ。・・・まぁこれから実装していくのです。