<< 前 ホーム 次 >>

bakaid: 20080502

CliCliSokyoの話。いわゆる設計という意味でいえば、
『誰がダイアログを出すべきか?』をちょっと考え
ました。

最初に考えたのは、CChildViewがクリックされたら
ダイアログが出るんだから、CChildViewが出せばいいと。

  +----------+      +------------+
  |CChildView| +--- |CSokyoDialog|
  +----------+      +------------+

で、実際そういうふうにコードを書きだしたんですけど、
ちょっと引っかかりました。『それじゃあViewの仕事が
大きすぎないか?』と疑問に思ったんですね。

で、Viewがクリックされたら、それをCCliCliSokyoAppに
知らせて、そのAppがダイアログを出したほうがいいと
思ったんです:

  +----------+      +---------------+      +------------+
  |CChildView| ---- |CCliCliSokyoApp| +--- |CSokyoDialog|
  +----------+      +---------------+      +------------+

Viewが直接ダイアログを出すより、App経由で出すほうが
手間がかかるんですけど。でも、やっぱり『責任の分配』
ということで見たら、App経由のほうがいいと思ったんです。

あるいは、『距離の計算は誰がやるべきか?』っていう
見方もできます。Viewが直接ダイアログを出すなら、
距離の計算はViewかDialogがやることになります。でも、
それじゃヘンだと自分は思うわけです。そういう『ロジック』
っぽいのは、GUIコンポーネントとは別のところでやりたい。
ロジックっぽいとこっていうのは、アプリの核心なわけで、
だったらやっぱりAppでやるのがいいだろうと。

--

最初は自分で作ろうとは思ってませんでした。Vectorで
探して見つけたのが:

http://www.vector.co.jp/soft/win95/art/se261666.html

結局これは『Google Mapで距離を測る』っていう自分の
目的に合うものじゃなかったんですけど、でも、これで
『半透明』っていう大きなヒントをもらいました。

で、他を探してもほしいのがなかったので自分で作る
ことにしました。もともとgdgdな人間なんで、計画
らしい計画を立てるわけでもなく。ただ、この時点で
どんなものがほしいかは大体わかってました。半透明の
ウィンドウ上で二カ所をクリックして、その間の距離を
出す、というものです。

まず、技術的に難しいと思われる『半透明ウィンドウの
実現方法』について調べました。このときはまだMFCで
やるか、Javaでやるか決めてなくって、Javaのほうは
ダメだということで、MFCに決めました。MFCを選んだ
のは特に理由はありません。というか、これしかWinのは
知らないから。

で、MFCを使って、半透明ウィンドウを実現するための
プロトタイプを作りました。何日もかかる大きな
プロトタイプを作るのはやっちゃダメですけど、こういう
ちょっとした実験のためのプロトタイプはよく作ります。

半透明ウィンドウを実現するやり方がわかったところで、
本番に入ることにしました。まずは半透明ウィンドウを
出すところまで。で、次に、距離をTRACEで出すところ
まで。このとき、Webで『二点間の距離を求める公式』
を調べたり、C/C++には``**''がないんだぁと知ったり (笑)、
sqrtなんて使った覚えねぇwww、とか。で、最後に
ダイアログ。

その間にも『ダイアログ出したくないんだけど、ウィンドウ
全体が半透明になっちゃうからダイアログ出すしかない』
とか、『最初にクリックされたらダイアログ出せば
いいんじゃね?』とか、『スライダーで半透明の濃さを
調節できるようにしたいけど、CSliderCtrlメンドクセー』
とか、いろいろな決定をしてるわけです。

本家Permlink

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails