CInfoProgressCtrlはCProgressCtrlを継承することでプログレスバーの上に文字を表示できるようにしているのだが、このプログレスバーの欠点の一つに、バーを伸ばす速度が制限されている、というのがある。バーが縮む方向ならば瞬時に縮むので、これを利用して
SetPos(a+1);
SetPos(a);
というコードで回避するのが一般的である。ただし、これではaがRangeの上限に等しかった場合に対応できない。a+1まで伸ばせないからだ。これに対処するには、
SetRange(0,a+1);
SetPos(a+1);
SetPos(a);
SetRange(0, max);
というようなコードを書けば良い。しかし、毎回これを書くのは面倒なのでCInfoProgressCtrlを書き換え、自動でこれをできるようにした。
今回、Publicな関数としてbool SetSmoothMove(bool smooth)を追加した。これの引数smoothにfalseを設定すると、上記処理を自動でするようになる。なお、初期値はtrueなので既存のコードへの影響はないはず。