7.1 【タイトルバーの位置】 引き続き、某ランチャの話。あ〜、そろそろクリエータコードの申請でもしておこうかなと思っていたのにまた忘れてしまった。これを書きはじめるといつも思い出すんだけど……。 アイコンの表示については、アイコンデータを読み込んでおくことによって再描画が気にならない程度に向上。メモリの問題もほとんどないようだし、これでいこう。途中でリンクしているはずのファイルが消去されてしまうとアイコンは残っているのに起動できないという状態になってしまうけど、そのあたりはMalphもそうだったから構わないことにしようか。削除されてしまうといきなりアイコンが消えてしまうとなると元がなんだったのかわからなくて不便な面もありそうな気がするし。 保存についても、昨日書いた方法でなんとか解決。その都度……はめんどくさそうかなと思ったけど意外とそうでもなかった。交換の時に間違って移動ルーチンを呼んでしまったというしょうもないバグ以外は何の問題もなく一発で動いてくれた。 ホットスポットなどの設定も完了。画面の端かどうかの判定でqdグローバルを使用しているからマルチモニタ環境だとうまく動かないかも知れないけど、、どうなるのかよくわからないからいいか(汗)。起動時にFinderを前面に出すのは、FinderのProcess Serial Numberを調べるルーチンをすでに作ってあったからそれを取得してSetFrontProcess()を呼ぶだけ。あっさり。 各パレットの設定では、色の変更は簡単にできた。以前のバージョンでは色の情報はなかったのでデータ構造をいじって追加、あとは設定に従って表示されるようにLDEFを書き換えればok。と、、グローボックスの色もそれにあわせて変わった方がいいんだけど、PICTで用意しているからすぐには難しいかな。単純な図形だったらいいんだけど……。ま、これもそのうち考えることにしよう。 問題は、タイトルバーの位置。ウィンドウのどこかをいじればぱぱっと変わるんじゃないかなと思っていたら、どうも甘かったようだ。ウィンドウを最初からつくりなおすしか方法はないみたい。関係ありそうなメンバといえばwindowDefProcくらいのものだが、これを変更するのは危険な気がする。かといってウィンドウをすべて最初からつくりなおすというのもかなり面倒なのだが。。 すでに保存されているものであれば、変更の都度保存することにしたから一度閉じて開きなおすだけでいいが、保存されていないものにはこの方法は使えない。テンポラリファイルを使うようにすれば区別なく扱えるようになるけどめんどくさくなるしなぁ……。 と、試しに、ウィンドウだけを作りなおして中身を新しいウィンドウに移動してみた。データ自体は変わらないのだからなんとかできそうな気はする。唯一の気掛かりはリストには親ウィンドウの情報が入っていること。これを無理矢理書き換えてやれば動いてくれるのかも知れないが、windowDefProcを変更しようとするのと似たようなものか。 ま、わからないけど、やってみることにしよう。タイトルバーの位置が変更されたら、まずパレットのデータを待避しておいてウィンドウを破棄、その後新たにパレットを作成し、同時に作られたリストを破棄、待避しておいたリストをつないで待避したリストの親ウィンドウを更新。おそらくこれでデータ間の矛盾は起こらないはずだ。最初何度かデバッガに落ちてしまって焦ったが、結局は無事動くようになってくれた。ふ〜、よかったよかった。 各アイテムの名前がわからない問題については、バルーンヘルプを使ってやってみようかなと思ったところ。たしかバルーンヘルプが非表示の状態でもHMShowBalloon()を呼べば表示してくれたような気がするし。表示する/しないは初期設定で変更できるようにして、あとはなにかキーを押すとその間だけ表示するというのでもいいかな。 名前を表示するなら各セルに名前のデータも入れておかないといけないけど、長くても31文字だからたいしたことはないか。 |