注意!!

ここでは、classicのコードをなりふりかまわずとにかくCarbon化させるのを第一目的としますので、とりあえずはCarbon Eventを使わない方法で改造していきます。

要点(1)

コンパイルしてみると山のようにエラーが出るが、そのうちのかなりの部分は関数が定義されていないというものである。
定義されていない関数をどうするかはCarbonDaterのレポートを参照する。その関数が別名になった場合と、サポートされていない場合がある。
別名になった場合は、CarbonDaterのレポートで新しい名を調べ、CodeWarriorのヘッダファイルでその関数の引数を調べる。
調べるヘッダファイルは、
Metrowerks CodeWarrior/MacOS Support/Universal/Interfaces/CIncludes/
の中にある。
どのヘッダファイルをみればよいのかわからない場合は、Think Referenceで旧名関数の属するヘッダファイル名を調べ、同名か似たような名前のヘッダファイルを調べればよい。
それでもわからねば、アップルのデベロッパサイトのADC advanced searchで、carbonにチェックして関数名などを検索してみる。
なお、関数名の変更は、Carbon化と関係なしに仕様が変わっただけの場合もあるだろうと思う。
一方、Carbonでサポートされない関数についてはなにか別の方法を工夫するしかない。

要点(2)

引数でDialogPtrとWindowPtrの混同が許されなくなった。(以前は厳密に区別しなくても融通がきいた。)
書き直しにはGetDialogWindowやGetDialogFromWindowが役に立つ。
SetPortもSetPortWindowPortとSetPortDialogPortに書き分ける必要がある。(これがまた多い!)

要点(3)

主要な構造体でメンバーを直接取り出せなくなった。
取り出すには専用のアクセッサー関数を使わなければならない。
例を挙げると、
pt.h=(((CGrafPtr)window)->portRect).left;
pt.v=(((CGrafPtr)window)->portRect).top;
としていた場合、Carbonでは、
mygp=GetWindowPort(window);
GetPortBounds(mygp,&gprect);
pt.h=gprect.left;
pt.v=gprect.top;
といった段取りになり、少し面倒になる場合がある。
アクセッサー関数やその引数はやはりヘッダファイルで調べることができる。
例えばCWindowRecordのメンバーのアクセッサー関数や引数はMacWindows.hで調べられる。

要点(4)

印刷関係はAPIが完全に変わっているので根本的に書き直しが必要である。
あとファイルの出し入れ関係、クリップボード関係もほとんど書き直す必要がある。

既存のリソース.rsrsとCarbon.r

既存のリソース(.rsrsの中身)はだいたい使えるようだ。(コードリソースは私は未確認。使えない可能性大。)
Carbon.rの carb(0) リソースはOS Xでの起動のために必須なので残しておく。
.rsrsに versリソースのID1とID2 があれば、Carbon.rの versの部分は消す。

(工事中)
次へ
Carbonへの道-An Opaque Road To Carbon-