RE:PrgressCallback() について教えてください (みやさか) 2001/03/05 11:26
> (1)
> nDenom とはなんですか?

「なんですか?」という質問の真意ががよく解らないのですが(^^;、
Denominator (除数) という意味の変数(名)です。


> (2)
> 「現在までどれほど展開したか」という割合は
> ratio = nNum/nDenom;
> ですか?

その通りです。


> nDenom は 非0 であることが保証されていますか?
> (ゼロ除算をしない)

理屈から考えると、0 では意味をなさないというのは当然わかりますよね。
ですから、プラグインにバクが無い限り 0 が渡されることはないと思って
良いと思います。


> 「まず nNum==0 でコールされ、nNum==nDenom になるまで
> 定期的に呼ばれる。」とありますが、
> この nNum の変化は「一様な増加をする変化」ですか?

nNum の変化や、コールバックが呼ばれる間隔については、如何なる仮定も
しない方が安全だと思います。呼ばれる間隔も、厳密な意味での「定期的」
ではない場合もあり得ます。

> # つまり、
> # k = dnNum/dt = const.
> # k > 0
> # とでもいうのかな?

これは、もっとも素直な場合(一般的な場合)ですが、

> それとも、
> 0 > 10 > -123 > -24 > 32 > 65535 > 1 > nDenom
> のように、途中の値がどうなるかはプラグイン次第であり、

進行状況を正確に算出できない事情がある場合などは、こういう変化(値が突然増加
したり、あるいは減少したり)をすることを避けられない場合もあります。

それと、私が遭遇した例ですが、雑な設計が為されているプラグインでは nDenom を
超えた値が nNum に渡されることさえありました(^^;。さすがにマイナスの値を渡す
プラグインには遭遇したことはありませんが。


> (3)
> ProgressCallback() の戻値が 非0 の時、
> プラグインは処理を中断するのだそうですが、
> この場合、GetPicture() に一緒に渡した
> HLOCAL *pHBm
> HLOCAL *pHBInfo
> には、何が返ってきますか?
>
> プログラマは、中断命令を出した場合でも、
> これらの pHBm, pHBInfo のポイント先を
> 解放する義務がありますか?

コールバックによる中断を含め、エラーコードが 0 (正常終了) 以外の場合は、
HLOCAL *pHBm, HLOCAL *pHBInfo には何も返りませんし、プログラマがメモリを
解放する必要はありません(プラグイン側が責任を持って解放してから GetPicture が
リターンします)。


> (4)
> ProgressCallback() に対するプラグイン側の扱いは
> どのようなプラグインでも同じですか?
>
> # たとえば、(3)の場合、解放する/解放しない、等
>
> 「仕様として決定されている」のであり
> 「全てのプラグインがそれに準拠している」のでしょうか?

そうでなければ、すべてのプラグインを常に同じ手順で使う(同等に扱う)ことは
不可能でしょう。すべてのプラグインについて相互の互換性が維持されていて、
特定のプラグインを特別扱いすることなく、すべてを同じ手順で使えるというのが
プラグインの利点であり、また目的でもあります。


--「RE:PrgressCallback() について教えてください」に対するコメント--
タイトル(Subject):
お名前(Your name):
Mail address:
Password: :入力しておくとあとで削除できます
Your message:




7thBridge P ver0.26 (c)Takechin