目次に戻る
制限事項
2002/09/28 update.

C-Parts Ver1.10では、OSにより以下のような制限があります。
ちょっと解決策が見つからなくて、今後の修正でも修正しきれないかもしれません。
ただ、限りなくバグに近い仕様でもありますので、できうる限り修正を心がけるようにします。

OSの種類制限事項
全OS
  • 「CPWindow::CreateNewWindow」で作成したモードレスダイアログ上のCPEditBox/CPSpinEditBoxなどの入力フィールド上では、 [Ctrl]+[C] / [Ctrl]+[V]などのショートカットが効きません。
    モードレスダイアログ上では、お手数ですがキーボード入力のないインターフェースを心がけるようにしてください。
Windows NT4.0
  • 「CPWindow::CreateNewWindow」で作成したモードレスダイアログとは別のウィンドウ(たとえばShadeの図形ウィンドウ)を アクティブにすると、C-Partsで作成したダイアログが後方に移動します。
Mac OS X
  • Windowsのように、C-Partsの動的ライブラリ(CPartsLib.dll)を別モジュールにする、ということができませんでした。
    このため、OS X上では、C-Parts本体をスタティックライブラリとして、Shadeプラグインとリンクする必要があります。
    (個々のC-Partsを使ったプラグインが、C-Partsのスタティックライブラリを持ってしまう状態)
    プラグインのファイルが大きくなることを避けるため、
    C-Partsの「CPImageクラスにおけるOpenGL描画機能」
    「CPImageクラスにおけるJPEG画像の読み込み」
    「CPImageクラスにおけるPNG画像の読み込み」を割愛しております。
    これは、将来的になんとかしたい部分です。

  • CPEditBoxにおける入力フィールドにおいて、全角文字の入力ができません。
    これは、C-Partsのウィンドウと「ことえり」(IM)にて、カレントウィンドウポートの奪い合いが起こるためです(結果、不安定になり、アプリが落ちることがあります)。
    これも、なんとか解決策を見つけたいところです。

  • C-Partsのライブラリ(CPartsCW.a)をShadeプラグインにリンクした状態で、Shadeプラグインを認識させない状態にした場合 (has_interface外部関数で0を返す。create_interface外部関数の引数「*p」にNULLを入れる)、 Shade終了時に不正なエラーが発生します。
    このようなパターンのプラグインを組む場合はめったにないかと思いますが、 OS Xでは、has_interface外部関数で1以上を返すようにすると、この問題は発生しません。

  • ループをforで回してコントロールの再描画(Repaint)をする場合(例えば、処理の経過をCPProgressBarで視覚化する、など)、 途中経過が描画できません(描画処理自体がイベントのキューにプッシュされてしまい、ループを抜けてからしか描画が働かないようです)。
    このような、連続再描画をかける場合は、そのループ処理自体をスレッドに入れて処理するようにしてください。
    ただし、スレッド処理が不安定要素の原因になる可能性もありますので、スレッドを使用する場合は十分注意してご使用ください。