home *** CD-ROM | disk | FTP | other *** search
/ HyperLib 1997 Winter - Disc 1 / HYPERLIB-1997-Winter-CD1.ISO.7z / HYPERLIB-1997-Winter-CD1.ISO / オンラインウェア / UTIL / ByeClock.sit / ByeClock / プログラマの方へ < prev    next >
Text File  |  1996-05-10  |  8KB  |  156 lines

  1. ByeClock ソース・コードについて
  2.  
  3. 履歴:    Version 0.8.2
  4. 発行日:    1995年 8月 18日
  5. 修正日:    1996年 5月 10日
  6. 発行者:    六角 文雄
  7.  
  8.  
  9. 1. ByeClock Source Code 公開について
  10.  
  11. 知人の要望に応える形で時計プログラムを作りました。コンパクトなプログラムが書けたのでソース・コードを公開することにしました。これから Macintosh のプログラムにチャレンジしてみたいと思っている方の参考になれば幸いです。
  12.  
  13. だたし、作者は Macintosh プログラミングの経験・力量ともに乏しく、必ずしも読みやすいコードではありません。また、教育的配慮をもって書いたコードでもありません。それでも、小規模なプログラムの実例として、なにがしかのお役に立てればと望むばかりです。
  14.  
  15.  
  16. 2. Sources フォルダーの構成
  17.  
  18. Project Files:
  19.     Bye.TC.ケ:    THINK C 7.0.4 用のプロジェクト。68K 専用です。
  20.     Bye.68K.オ:    CodeWarrior 8 用のプロジェクト。68K application を作成します。
  21.     Bye.FAT.オ:    CodeWarrior 8  用のプロジェクト。PPC code と FAT applicationを作成します。
  22.  
  23. Source Codes:
  24.     Bye.h:
  25.         ByeClock 共通のヘッダーです。
  26.         定数、独自の型定義、関数のプロトタイプ等が含まれます。
  27.     Bye.main.c:
  28.         主要なイベント処理がほとんど含まれています。
  29.         マウス・イベント、キー・イベントの処理などはここに含まれます。
  30.     Bye.menu.c:
  31.         メニューの各種処理が含まれます。。
  32.     Bye.dialog.c:
  33.         Preferences Dialog および About Dialog の各種処理が含まれます。
  34.         Preferences Dialog はモードレスのため、多少込み入った処理になっています。
  35.     Bye.clock.c:
  36.         時計の表示、イベント監視等が含まれます。
  37.     Bye.pref.c:
  38.         Preferences File の各種処理が含まれます。
  39.     Bye.AE.c:
  40.         AppleEvent 受信/送信処理ハンドラが含まれています。
  41.         ただし、受信ハンドラはほとんどダミーです。
  42.         シャットダウンの AppleEvent 送信処理もここに含まれます。
  43.     Bye.rsrc:
  44.         ByeClock に必要なリソースが含まれます。
  45.  
  46.  
  47. 3. 開発時の留意点
  48.  
  49. 3.1. Partition Size
  50. THINK C で開発するときは、下記の点にご注意下さい。
  51.  
  52. ByeClock のパーティション・サイズ(アプリケーションの占有するメモリの大きさ)は 64K に設定してあります。この大きさは ByeClock が単独で動作するために必要なサイズです。しかし、THINK Project Manager の中から Run させようとすると、さらに大きなパーティション・サイズが必要となります。開発時は適宜大きなサイズに変更して下さい。
  53.  
  54. 作者は 68K マシンの環境で ByeClock の開発・動作確認を行いました。PowerPC 環境でのパーティション・サイズの確認は不十分です。
  55.  
  56. 3.2. New Toolbox Names
  57. 一部の Toolbox には新しい関数名が定義されています。
  58. 例:
  59.     GetItem    ->    GetMenuItemText
  60.     GetMHandle    ->    GetMenuHandle
  61.     GetDItem    ->    GetDialogItem
  62.     Secs2Date    ->    SecondsToDate
  63.     Date2Secs    ->    DateToSeconds
  64.     GetDblTime    ->    GetDoubleClickTime
  65.  
  66. Apple Computer では、なるべく新しい関数名を使用するように勧めています。ByeClock でも、この勧めに従って新しい方の関数名を使うようにしています。残念ながら、これらの新しい関数名は THINK Reference では検索できません。
  67.  
  68. 3.3 Copland-Savvy Accesors
  69. Apple Computer 供給の最新ヘッダー(現時点では ETO #18)には STRICT_WINDOWS の定義があります。これを活かすことで WindowRecord, DialogRecord などの構造体メンバーを隠蔽できます。そして、WindowPtr, DialogPtr に替わって、WindowRef, DialogRef というメンバーの見えない型 (Opaque Window) が定義されています。
  70.  
  71. つまり、STRICT_WINDOWS 定義下においては、WindowRecord (or WindowPeek) 型を用いて直接にウィンドウのメンバーをアクセスできなくなると言うことです。DialogRecord (or DialogPeek) 型も同様です。
  72.  
  73. しかし、WindowRecord 隠蔽の代替え措置として、WindowRef の中身を操作する Window Accessor と呼ばれるマクロが定義されています。そして、それらの accessor は Copland においては正式な API となる旨が予告されています。
  74.  
  75. これら accessor のマクロはよく整理されており、たとえ Copland 対応を意識しなくとも、十分使いでのあるものだと思います。ByeClock では、できるだけこれらを使うようにしました。ソース・コード中に見慣れない型や関数があって読みにくいかもしれませんが、いずれはお馴染みになるものと思います。ぜひ新しい Universal Headers の Windows.h, Dialogs.h や QuickDraw.h をご一読下さい。
  76.  
  77. なお、Metrowerks CodeWarrior 7, Symantec C++ Release 4 ともに ETO #18 相当のヘッダーが含まれています。
  78.  
  79. 3.4. Making FAT Application
  80. Version 0.7 から ByeClock は FAT Application になりました。Bye.68K.オ で 68K Application を作成し、Bye.FAT.オ で PPC code を加えて FAT Application にします。
  81.  
  82. 4. 使用の条件
  83.  
  84. このパッケージからのソース・コードの借用などは自由にして頂いて結構です。利用に際しての許諾の確認やクレジットの表示は不要です。利用目的も、営利・非営利の別を問いません。ただし、利用に際しては、次項の「お断り」の条項を使用条件とします。
  85.  
  86.  
  87. 5. お断り
  88.  
  89. ByeClock に含まれるコードを利用して発生したいかなる障害に対しても、作者は一切の責任を負いません。ご自身の責任においてご使用下さい。
  90.  
  91.  
  92. 6. 今後の予定
  93.  
  94. 作者には ByeClock に対して、特に深い思い入れがありません。どこにでもありそうな単純な時計だからです。アイコンのデザインも、気合いの抜けたものでした。
  95.  
  96. しかし、作者の予想に反して、仕様拡張要求、雑誌紹介、CD-ROM 収録依頼などが来て驚いています。こんなことなら、もっとまともなアイコンにしておけば良かったと後悔し、Version 0.6 で変更しましたが、後の祭りでしょう。
  97.  
  98. 要望に対しては「来るものは拒まず」の姿勢で、できる限りの対応を取ってはおりますが、依然として ByeClock には深い愛着が湧きません。もし、現在の ByeClock をベースに更なる発展のアイデアをお持ちの方がいらっしゃれば、その方に今後の進展を全て委ねます。ご興味がおありでしたら、ご遠慮なくお申し出下さい。
  99.  
  100.  
  101. 7. Bug Info
  102.  
  103. Version 0.8.1:
  104. プリファレンス・ダイアログを resume のとき正しく表示していませんでした。
  105.  
  106. Version 0.8:
  107. プリファレンスファイルの新規作成手続きを誤りました。
  108.  
  109. Version 0.7.2:
  110. シャットダウンへの判別が不十分でした。
  111. システムが既に終了状態になり、ByeClock が終了のためにフロント・プロセスとなったときにも確認のアラートを出していました。
  112.  
  113. Version 0.7.1:
  114. 特にバグ・フィックスはありませんが、Symantec C++ Release 4 の発売に合わせて、ヘッダーを単純化しました。
  115.  
  116. Version 0.7:
  117. PPC code において使用メモリ・サイズの設定が、まだ不正でした。問題を指摘して下さった小池邦人さんに感謝します。
  118.  
  119. Version 0.6:
  120. PPC version において、使用メモリ・サイズの設定値が Heap, Stack ともに不適切でした。Heap Size は作業ミス、Stack Size は実機で確認できなかったためのです。
  121. 問題を指摘して下さり、動作確認に多大なご協力をいただいた星野治さん、中川勝好さんに感謝します。
  122.  
  123. Version 0.5:
  124. 文字位置を Times を前提にハード・コードしていましたが、Adobe Type Manager 付属の Times と Apple 供給の Times では大きさが違うため、ATM Times を用いた環境では文字が適切に表示されていませんでした。Version 0.6 では、表示位置、ウィンドウ・サイズを、全て FontInfo を基準に算出するようにしました。
  125. 問題を指摘して下さった水鳥哲也さんに感謝します。
  126.  
  127. Version 0.4:
  128. ByeClock 0.4 と Inline++TSM 2.0 との組み合わせでは、Preferences modal dialog が正常に機能しないという症状が発見されました。この現象は CodeWarrior 68K compiler で生成したアプリケーションでのみ発生し、THINK C では正常に動作します。
  129. 原因は定かではありませんが、CodeWarrior のバグないしクセだと思われます。単純な解決策が見いだせなかったので、やむなく Preferences を modeless dialog に変更することでこの問題を回避しました。
  130. Code は若干複雑になりましたが、modeless の方がユーザーにとっては使いやすいので、良しとしました。
  131. 問題を発見して下さった中川満さん、私の問い合わせに快くお答えくださった Inline++TSM 2.0 の作者:飯森秀昭さんに感謝します。
  132.  
  133. Version 0.3:
  134. Version 0.3 では Bye.h の定数定義において、tick count と sec count を間違えるという勘違いを犯しました。また単純な定数の計算違いもありました。
  135. そのため、シャットダウン遅延の場合、10分後にリトライのはずが、1時間後になってしまいました。
  136. ByeClock 0.3 では、一部 THINK C での旧ヘッダー対応確認に漏れがあり、そのままではコンパイルできませんでした。
  137.  
  138.  
  139. 7. 連絡先
  140.  
  141. 疑問、質問などありましたら、下記の住所に電子メイルまたは郵便にてご連絡下さい。
  142.  
  143. E-Mail Address:
  144.     NIFTY-Serve:    PXL01437@niftyserve.or.jp
  145.     Internet:    rokkaku@roland.co.jp
  146.  
  147. 郵便住所:
  148.     〒433 静岡県 浜松市 初生町 1158-3-106
  149.     六角 文雄
  150.  
  151.  
  152. 8. Copyright Notice
  153.  
  154. ByeClock Copyright (C)1995-1996 Fumio Rokkaku
  155. All Rights Reserved.
  156.