Macintosh Developer Online (MDOnline)


2000年8月21日発行号 - Expoは2月に幕張で



火曜日に発行をするとえらく遅くなりそうな気がするので、今週の1本目は今から配信いたします。次は、水曜日になりますのでよろしくお願いします。火曜日はアドビのイベントで結局1日使ってしまいそうですので…。
この週末、WindowsマシンのCD-ROMドライブがどうも故障したようです。ディスクを入れるとランプが点滅して回転速度を上げようとするのですが、上がらずにずっと低速回転でランプが点滅したままになります。もちろん、読み込みは全然できません。コネクタの接触かなとも思っていったボディを開けたんですが、やっぱりだめでした。52倍速のもので、昨年末に買ったベアボーンに入っていたものです。ちなみに中国製でTOP-Gというメーカです(聞いたことがない…)。とりあえず、CD-Rドライブで読み込みはできるのですが不便なので、月曜日に秋葉原のジャンク屋をさがして8倍速の中古ドライブを1,580円で買ってきて付け替えました。とりあえず順調に使えるみたいです。だけど、縦置きしていたパソコンを横置きにしないといけなくなりました。ひっかかりのないドライブだったのです。一方、52倍速のドライブはやたらうるさかったのですが、さすがに回転数が低いだけあって静かですね。遅いのは仕方ないとしても、とりあえず使えるだけでいいので、こんなものでしょう。インストールなんかしたらえらく遅いのかもしれないですが。ついでに、古いマシンで使うハードディスクもさがしたのですが、ハードディスクの中古って意外にないですね。古いマシンで6GBを認識しなかったので、2G程度の古いBIOSでも安全圏なものをさがしたのですが、さんざん歩いてやっと1.7Gの中古を見つけました。約4,500円です。2GBのHDDの入った中古のIBMパソコンが1万円弱だったので、ちょっと迷ったのですが、まあ、余計なものはゴミを増やすだけなので、必要なものだけ買ってきたという次第です。こちらも順調に動いています。安く買ってうまくいく…今日は気持ちのいい日ですね〜。
(新居雅行 msyk@mdonline.jp


2001年のエキスポは2月後半に幕張メッセで開催

2001年の日本で開催されるMACWORLD Expoの日程と場所がやっと公開された。2001年2月22日(木)〜24(土)の日程で、例年通り幕張メッセで開催される。開催時期や場所を巡っては、2001年の開催発表が遅いこともあって変更があるのではないかとの憶測もあったが、ほぼ例年通りの開催となった。イベントの内容などはまだ何も公開されていないが、順調に行けば、Mac OS Xで盛り上がることは間違いないだろう。

関連リンク:MACWORLD Expo/Tokyo 2001
カテゴリ:イベント


【小池邦人のプログラミング日記】2000/8/18<Mac OS Xへの道 Carbon対応の実際(5)>

既存のソースコードをCarbon APIに対応させ、Mac OS X環境でも起動できるアプリを作るための工程のうち、今回は(7)のMac OS Xメニューモデルへの変更について解説します。

(7)Mac OS Xメニューモデルへの変更

Mac OS X環境ではファイルメニューの一番下から「Quit」(アプリケーション終了)のアイテムが外されてしまいました。多分、アプリ終了はファイル処理とは関係ない項目であると言うAppleの判断からだと思います。Mac OS Xでは、Quitはアプリケーションメニュー(以前にAppleメニューがあった場所)の一番下へ移る予定です。それに伴い、ユーザからの終了指示を受ける処理はMac OS X側の仕事となり、そのメッセージはAppleEvent(ハイレベルイベント)として対象アプリケーションへ配信されます。ですから、アプリケーション側がkAEQuitApplicationタイプのAppleEventに対応していないと、Mac OS Xではメニューからアプリケーションを終了することができなくなってしまいます。

Mac OSから送られてくるAppleEventに対応するには、イベントループへ入る前にAppleEvent Handlerを登録しておく必要があります。こう書くと、なんだか難しそうですが、要は以下のようにkAEQuitApplicationタイプのAppleEventを処理するルーチン(イベントハンドラ)を作り、AEInstallEventHandler()で登録するだけです。下の例の終了処理ルーチンはExitToShell()を実行するだけの簡単な処理ですが、一般的なアプリケーションの場合には、編集済みドキュメントの保存をユーザに尋ねる処理(アラートダイアログ表示する)や、変更されたアプリケーションの初期設定を保存する処理などがここに追加されるはずです。


void setUpHiEvent(void)
{
  AEEventHandlerUPP qtptr;

  qtptr=NewAEEventHandlerUPP( (AEEventHandlerProcPtr)hiQuitApp );
  AEInstallEventHandler( kCoreEventClass,kAEQuitApplication,qtptr,0L,0 );
}

pascal OSErr hiQuitApp(AppleEvent *event, AppleEvent *reply, long refcon)
{
  ExitToShell();
}

構築するファイルメニューは、最初から「Quit」(終了)を外しておけばよいかと言うと、そうではありません。なぜなら、CarbonLib対応のアプリケーションはMac OS 8/9でも起動されるかもしれないからです。Mac OS 8/9では、今まで通りQuitがあるファイルメニューが必要です。よって、ファイルメニューに関してのみ‘MENU’(メニュー)リソースを2種類用意します。例えば「終了」項目を持っているID=129のファイルメニューと、持っていないID=131のメニューを作ります。
 
この時注意することは、どちらの‘MENU’リソースの「Menu ID」も同じ値(例の場合には129)にしておくことです。
 
これにより、アプリケーションは2種類のメニュー分岐ルーチンを用意する必要がなくなります。そして同様に、それぞれのファイルメニューをレイアウトした‘BMAR’(メニューバー)リソースも2種類用意しておきます。
 

用意した2つの‘BMAR’リソースをGetNewMBar()で呼び出し、SetMenuBar()によりメニューバーを構築します。この時、アプリケーションがMac OS X環境で起動されているか? そうでないのか? を、Gestalt()によりチェックします。Gestalt()の第一引数にgestaltMenuMgrAttrを与え、帰ってきた値のgestaltMenuMgrAquaLayoutMaskがオンならば、アプリケーションはMac OS X環境で起動していると判断されます。ただし、この仕様は現在のMac OS X DP4上でのことで、今後変更があるかもしれないことを気にとめて置いてください。やっぱりAppleメニューは残してほしいとか、ファイルメニューにもQuitが欲しいというユーザの要望が大きくなると、今後変更されるかもしれませんので...(笑)

void setUpMenu(void)
{
  long  ret=0;
  Handle hd;

  Gestalt( gestaltMenuMgrAttr,&ret );
  if( ret & gestaltMenuMgrAquaLayoutMask )
    hd=GetNewMBar( 129 );
  else
    hd=GetNewMBar( 128 );
  SetMenuBar( hd );
  DrawMenuBar();
}

今までなら、AppendResMenu()で‘DRVR’ リソース名をアイテムに追加することで、Appleメニューの起動アイテム一覧を自分自身で作成する必要がありました。Carbon環境では、この処理もMac OS側が行うようになりました。よって、Mac OS 8/9環境でも、CarbonLibを用いたアプリケーションの場合には、Appleメニューアイテムを構築する必要はありません。これを行ってしまうと、起動アイテムがダブルで表示されてしまいますので注意してください。また、以前ならOpenDeskAcc()で実行していたAppleメニューアイテム(例えばセレクターとかスクラップブック)の起動も、Mac OS側が自動で行うように変更されています。ただし、Appleメニューの一番上のアイテムである「About」に関しては、今まで通り自分で処理する必要があります。

次回は(8)以降の工程についてお話しする予定です。新しいイベントモデルへの変更点やMac OS Xに対する最適化に関する解説です。

関連リンク:オッティモ
カテゴリ:Carbon/CF, 小池邦人のプログラミング日記


CodeWrriorからCVSを使えるプラグインがバージョンアップ

Electric Fish社は、CodeWarriorのプラグインとして働くドキュメントのバージョン管理ソフト「CWCVS」のVer.2.3をリリースした。CWCVSは、ソースプログラムのバージョン管理ソフトとしてもっとも広く使われているCVSのクライアントとして使えるソフトで、グラフィックスインタフェースを備えたCWProjectorも含まれている。コピーの取得やファイル管理、チェックインやチェックアウト、レポート生成やリリース管理などをCVSを通じて行える。新しいバージョンでは違いを視覚的に見る機能などが加わっている。$20のシェアウエアだ。

関連リンク:CWCVS Download
カテゴリ:開発ツール


ファイルメーカーProでダイアログボックスを表示するプラグイン

Troi Automatiseringは、ファイルメーカーPro4/で利用できるダイアログボックスを表示するプラグイン「Troi Dialog Plug-in 2.0 for FileMaker 5」をリリースした。Mac OSとWindowsで使える。ボタンを4つまで設定してダイアログボックスを表示したり、プログレスバーや入力ダイアログボックスを出す機能がある。新しいバージョンではリスト形式の表示を行うダイアログボックスや、ダイアログボックスにアイコンを付加する機能を追加した。ユーザインタフェースをより向上させたものを作成したような場合には有用なプラグインだろう。価格はユーザ当たり$29。

関連リンク:Troi Dialog Plug-in New version 2.0
カテゴリ:データベース