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