home *** CD-ROM | disk | FTP | other *** search
/ HyperLib 1997 Winter - Disc 1 / HYPERLIB-1997-Winter-CD1.ISO.7z / HYPERLIB-1997-Winter-CD1.ISO / オンラインウェア / PRG / AESample.sit / AESample / AESampleヌ…ヌャヌ「ヌƒ < prev    next >
Text File  |  1996-06-22  |  7KB  |  126 lines

  1. About This Sample
  2.  
  3. Revision: 0.1.1
  4. Date: June 22, 1996
  5. Author: 六角文雄 (Fumio Rokkaku)
  6.     rokkaku@roland.co.jp
  7.     rokkaku@inetc.roland.co.jp
  8.     PXL01437@niftyserve.or.jp
  9.     <http://www.inetc.roland.co.jp/~rokkaku/>
  10.  
  11. 1. このパッケージ: "AE Sample" について
  12.  
  13. このパッケージは、私が AppleEvent 実装の練習台として書いたものです。
  14. AppleEvent の未経験者に AppleEvent の処理方法の取り掛かりを掴むための参考になればと思い、source code を公開する事にしました。
  15. 最低限の AppleEvent 受信処理 (Required AppleEvent) と、幾つかの AppleEvent 送信の雛形を実装してあります。
  16. AppleEvent を実装してみたいが、何となく敷居が高いと感じてこられた方の参考になれば幸いです。
  17.  
  18. このパッケージには3つのプロジェクト・ファイルが含まれています。
  19. TC.sample.prj:
  20.     THINK C 8.0 (THINK Project Manager 7.0.4) 用のプロジェクト
  21. CW.sample.68K.prj:
  22.     CodeWarrior IDE 68K 用のプロジェクト
  23. CW.sample.PPC.prj:
  24.     CodeWarrior IDE PPC 用のプロジェクト
  25.  
  26. Source code の作成は CodeWarrior C 9 で行いました。THINK C でもコンパイルできる事を確認してあります。
  27.  
  28. ただし、Symantec C/C++ 8.4 以前のヘッダーはバージョンが古く、コンパイル・エラーが多発するはずです。Symantec C/C++ 8.4 以降をお使いください。
  29.  
  30. プロジェクトの作成するアプリケーション: "AESample" は、Drag & Drop されたファイルを AppleEvent 経由で受け取り、ファイルの種類に応じて Finder や別のアプリケーションに AppleEvent を送ってファイルを開かせる処理を行います。
  31. それ自体では何の役にも立ちませんが、基礎的な AppleEvent の送受信の例題としてわかりやすい例だと思います。
  32.  
  33. また、PPCBrowser を利用して、特定のアプリケーションに Open Document ('odoc') AppleEvent を送る機能を設けてあります。Debugger を走らせている時など、作成中のプログラムへ AppleEvent を送ってチェックするのには役立つと思います。
  34.  
  35. 2. 初めて AppleEvent に取り組まれる方へ
  36.  
  37. このパッケージの内、最低限の AppleEvent 受信に必要な項目は sample.AE.c に網羅されています。
  38. 送信関係は sample.send.c に含まれています。
  39. Drag and Drop によるファイルの受け取りを実現するだけなら sample.AE.c を取り込むだけで済みます。
  40. 送信にチャレンジしたくなったら sample.send.c の方を参考にしてみて下さい。
  41.  
  42. ご自分のプログラムに組み込む際は、プロジェクトの Size Flag の High Level Event Aware をセットして下さい。
  43. このフラグは AppleEvent の送受信を行う場合に必ず必要です。
  44. Size Flag は、THINK C では "Set Project Type..." で、CodeWarrior の場合は "Preferences..." の Project で設定できます。
  45.  
  46. 3. Version 0.1 での追加機能
  47.  
  48. 3.1. Macintosh Drag and Drop
  49. Version 0.1 からは、新たに Drag Manager (Macintosh Drag and Drop) を使用してファインダーからファイルを受け取る処理を追加しました。Drag Manager 自体は AppleEvent とは別のものですが、High Level Event の応用例として取り上げました。
  50.  
  51. ここでは Drag Manager の独特の癖について触れておきます。
  52.  
  53. Drag Manager のハンドラーはコールバックでありながら自由にグローバル変数にアクセスできるなどの自由がある半面、プロセス・スイッチングを許さないという大きな制約があります。開発者にとっては、ソース・レベル・デバッガーが使えないという致命的制約を受けることになります。不具合をトレースしたくとも、デバッガーにプロセスが渡らずにロックアップしてしまいます。慎重なコーディングが要求されます。
  54.  
  55. また、ハンドラーの中では他のアプリケーションとの通信も制約されます。プロセスがターゲットのアプリケーションに渡らないため、リプライを期待する AppleEvent による通信は行えません。
  56.  
  57. AESample では、ハンドラーで受け取った FSSpec を直接処理せず、一旦自分自身へ OpenDocument の AppleEvent で送信しています。ハンドラーの外でファイル処理を行うことによって潜在的に起こり得るアプリケーション間通信の問題を回避しています。
  58.  
  59. ドラッグの受付は "Open" のメニュー・ボタンへドラッグ・アンド・ドロップすることで行われます。ここでのハイライト処理は Drag Manager の標準の処理とは異なっていることをお断りしておきます。
  60.  
  61. 3.2. Notification Manager
  62. Macintosh Drag and Drop の実装に伴い、アラートの処理も変える必要があります。Macintosh Drag and Drop は、バックグラウンドにおいてもデータを受信できます。この際のエラーを直接的にアラート・ダイアログに表示しても、アラートが最前面に表示されないため、ユーザーに認知されない可能性があります。あるいは、強制的に自分自身を最前面に持ってくることはユーザー・インターフェイス・ガイドラインに違反します。そこで、ガイドラインに従って Notification Manager を実装しました。
  63.  
  64. 3.3. EmbossDraw Library
  65. AESample 0.1 には EmbossDraw Library と名づけられたルーチン群が含まれています。これらは、立体的な線や矩形の描画を提供するものです。AESample 0.1 では、メイン・ウィンドウのボタンの描画などに用いています。
  66.  
  67. 最近の様々なアプリケーションは、MacOS 標準の API では供給されていないカラフルなユーザーインターフェース・エレメントを備えています。作者もこのようなエレメントに興味を持ち、いくつかの描画ルーチンを書きました。これらは AppleEvent の実装とは全く無関係のものですが、多少のお役に立てればと思い、公開することにしました。ここには詳しい使い方は書きませんが、EmbossDraw.h を眺めれば、どのように使うかは理解できると思います。
  68.  
  69.  
  70. 4. 配布・使用の条件
  71.  
  72. 再配布する場合は、このドキュメントを含め、パッケージ構成を改編しないで下さい。
  73. その1点を除き、作者はこのパッケージに関するいかなる権利の主張も行いません。許諾なく自由に再配布して頂いて結構です。圧縮方法などは自由に変更して頂いて構いません。
  74. このパッケージからの code の借用などは自由にして頂いて結構です。
  75. 利用に際しての許諾の確認やクレジットの表示は不要です。(して頂いても構いませんが。)
  76. 利用目的も、営利・非営利の別を問いません。
  77.  
  78.  
  79. 5. お断り
  80.  
  81. このパッケージ: "AE Sample" に含まれる code を利用して発生したいかなる障害に対しても、作者は一切の責任を負いません。ご自身の責任においてご使用下さい。
  82.  
  83.  
  84. 6. その他の注意事項
  85.  
  86. 6.1. Scope
  87. 関数、変数のスコープは、"AESample" の都合で適当に設定してあります。再利用の際は適宜変更して下さい。
  88.  
  89. 6.2. BNDL setting
  90. AppleEvent Handler を実装しても Finder drag and drop ができないという方がいらっします。その場合、以下の点を確認して下さい。
  91.     1) BNDL には必要な file type が定義されていますか?
  92.     2) あるいは、wild-card type: '****' が定義されていますか?
  93. それでも動作しない場合は、デスクトップの再構築をしてみてください。
  94.  
  95.  
  96. 7. 謝辞
  97.  
  98. このパッケージ: "AE Sample" を作成するにあたっては、下記の方々のご指導や、公開頂いた source code を参考にしました。この場を借りて感謝申し上げます。(敬称略)
  99.  
  100. 隅谷孝洋, sumi@cuby.mis.hiroshima-u.ac.jp
  101.     from: "Folder to ShowPages"
  102.  
  103. 水鳥哲也, Mizutori@ai.rcast.u-tokyo.ac.jp, GED00276@niftyserve.or.jp
  104.     from: "puriTEXT 1.1"
  105.  
  106. 門間拓歩, VFD03522@niftyserve.or.jp
  107.     from: "まな板 v2"
  108.  
  109. 山森弘毅さん(GBH05214@niftyserve.or.jp)のご協力により PowerPC での動作を確認していただきました。
  110. 三上文之さん(f_mik@yk.rim.or.jp, PXH04442@niftyserve.or.jp)のご協力により MakeMyDocDescList() のメモリ・リークのバグを発見することができました。
  111. この場を借りて御両名のご協力に感謝申し上げます。
  112.  
  113.  
  114. 8. 履歴
  115. 0.1.1:    Added more Drag Manager handlers
  116. 0.1.0:    Added Drag Manager handlers
  117. 0.0.9:    (not released)
  118. 0.0.8:    fixed compile errors using THINK C 
  119. 0.0.7:    fixed a bug in MakeMyDocDescList()
  120. 0.0.6:    fixed bugs in SendMyAppleEvent() and FindAppFromItsSig()
  121.  
  122. 9. Copyright Notice
  123.  
  124. Copyright (C)1994-1996 Fumio Rokkaku
  125. All Rights Reserved.
  126. However, you can use it and distribute it freely as far as you use it at your own risk.