あまつぶ

1.12 1:00 【シェアウェア化?】

 アイコン処理ルーチンとドラッグ&ドロップのルーチンを組み込み中。アイコンはあんまりいじったことがないのとドラッグ&ドロップはひさしぶりなのとでフリーズを連発。なんとかこれまでに作った部分はちゃんと動くようになってきたがこれからまだ追加しないといけない部分を考えると気が遠くなるなぁ(笑)。まあでもアイコン処理ルーチンを完成させればIconParty自体の完成にもだいぶ近づくし、がんばらねば。
 しかし開発開始当初には思いもしなかったほど複雑化してきて、ソースファイルの容量も400kを越えてしまった。行数もヘッダを除いて12000行もあるみたいだし。ファイルはだいぶ細分化されているけどたくさんのファイルから参照されているヘッダファイルをいじったりするとコンパイルの時間がかかるかかる。ま、コンパイル中に他のことができるようになったからだいぶ楽にはなったけど(これってどのバージョンからだったかな……。IDE 2.0からかな?)。バグの数もバージョン遍歴のファイルの長さもこれまでにないほど異様に長いし……。
 そんなわけで、正式版までにシェアウェア化するかもしれない。値段はおそらく1000円から2000円(できによって変わる(笑))。あるいは任意額のドネーションウェアとか。ま、いずれにしても正式版と言えるようになるまでにはまだまだ時間があると思うのでゆっくり考えることにするつもりだけど。とりあえず、この件に関してなにかご意見のある方はどうぞ。

 MDEFというものを初めて書いた。MDEFってのはおそらくMenu Definitionの略だと思う。普通のテキストのみのもの以外のメニューを使いたい場合に使うもの。今回はIconPartyでペンのサイズを変更するメニューを作ってみた。キョービのデータ一覧からサンプルをダウンロードしてそれを元にソースを書いて試してみたのだがこれがどうにもうまくいかない。ポップアップメニューを表示させているはずなのだがまったくメニューは表示されず、なぜかコントロールバーが消える(この原因はさっぱりわからないが)。ソースをチェックしてもどこも間違っていないようなのでIMを読んでみたところ、ポップアップメニューの場合はもう少し処理を追加してやらないといけないらしい。普通のメニューとは違ってメニューを表示させる場所をMDEF側で決めてやらないと表示がうまくいかないらしいのだ。
 ポップアップメニューの時はmPopUpMsgというメッセージが送られてきて、hitPtにメニューの左上の点が入っているらしい。これを元にメニューを表示したい領域を設定し、menuRectに返してやればいいようだ。と、それでプログラムを書き直してみたのだが今度はメニューが表示される場所がおかしい。なぜかまったく関係ない部分に表示されてしまうのだ。ちょっと原因がわからなかったのだが、試しにhitPtの縦と横をひっくり返してみたら正しく表示されるようになった。このあたりのことについてはIMでもあまり細かく触れていないようなのではっきりとはわからないが、逆にしたら正しく表示されたということはおそらく逆になっているんだろう。PopUpMenuSelectに渡す座標が縦→横の順序だというのが関係していそうな気はするが。
 あとは、アピアランスマネージャが使用可能な時はDrawThemeMenuBackgroundを呼んでメニューの背景をテーマにあわせるようにしてやるときれいかな。と、関係ないけどMDEFの中でPatternを定義してPenPatを呼んだらなぜかフリーズしてしまった。いろいろ試してみたけど結局原因はわからず、パターンを使用するのはやめてしまったんだけど。それからメニューにチェックをつけたりなんていう処理はどうするのかと思ったらどうも自分で処理してやらないとだめみたい。mDrawMsgの時にチェックがついているかどうかを調べてついているならそれなりの処理をするという感じかな。
 ここまで書いてからヘッダをチェックしてみたら、kMenuDrawMsgなどの定義定数が新たに定義されているのを発見。おそらくこちらを使う方がよさそうだ。また、メッセージにkMenuThemeSavvyMsgというのが追加されていてテーマに対応している時はkThemeSavvyMenuResponseをwhichItemに返すとある。それからkMenuDrawItemMsgとkMenuCalcItemMsgというのがあるがこれらの説明はどこかにあるんだろうか。気になるのはmPopUpMsgに対応するメッセージがないことだが、このあたりもなにか変更があったんだろうか。OS8と8.5のMenu Managerまわりの部分を読んでみたけどそれらしい記述は見つからなかった。もっと前から変わっていたのかな?

 次回はこのMDEFについての続きかな。

to January 10, 1999 ↑ to January index → to January 13, 1999