TB 22 - Drag Managerとエラーコード-600(procNotFound)(21-August-96)
Q: アプリケーションからDrag Managerをコールすると、ときとして-600のエラー(procNotFound)が発生します。このエラーは、それらのコールが返しうる結果としては記載されてはいません。いったいどうなっているのでしょう?
A: このエラーに関しては、一般的な原因が3つ判明しています。
|
1.
|
ハイレベル・デバッガを使用していませんか? 典型的なハイレベル・デバッガがそうであるように、Drag ManagerもProcess Managerと密接に相互作用しており、必然的にコンフリクトが発生します。この問題に関しては、使用しているデバッガのベンダーに、Drag Managerを利用しているコードをデバッグする際の動作の改善を依頼するしかありません。もしこれが原因であるなら、デバッガを介さなければコードは正常に動作するでしょう。
|
|
2.
|
TrackDragに渡すEventRecordのwhereフィールドの値が、ローカル座標ではありませんか(これはクラッシュの原因にもなり得ます。しかしながら、ときとして-600のエラーを返すだけのこともありますが)? そのような値のwhereフィールドは、しばしばドラッグ操作を開始したウィンドウの外をポイントしているものです。
|
|
3.
|
'gestaltDragMgrAttr' Gestaltセレクタのレスポンスで'gestaltDragMgrFloatingWind' ビットがセットされていないにも関わらず、the Text Services Managerウィンドウに対してDrag Managerを使用していませんか? 当該ビットの値は、TSMウィンドウに対してDrag Managerを使用する際のバグが、アプリケーションを実行しているシステムでフィックスされているかどうかを示します。
|
2番目および3番目の場合、Drag Managerはウィンドウとプロセスを対応づけることが困難になります。いくつかの操作は、当該ウィンドウを所有しているプロセスが明確でなくても動作は可能なので、ProcessSerialNumberが必要となる時点まではDrag Managerは何とか動作を続けるでしょう。しかし、ProcessSerialNumberが必要となると、その操作は失敗します。
[ Technical Q&A's : Operating System Services : Toolbox : TB22 ]
|