横軸を時間軸としたグラフにスクロールバーを取り付けようとしています。
グラフは、タスクマネージャの「CPU使用率」グラフのように、時間とともに右に流れて行き、画面からはみだします。
このグラフの過去の履歴を、スクロールで見ることができるようにしようとしています。
スクロールバーを取り付け、グラフが停止状態の時はスクロールで、過去の履歴を見ることができるようになったのですが、グラフが動いている時、つまり、タイマーイベントで定期的にスクロールバーのScrollRangeのMax値が増えている時、スクロールバーをドラッグ移動すると、Max値が増えるタイミングで、ドラッグしているはずのバーが動いてしまいます。
このバーを動かさない為には、どのようにするのが良いでしょうか。
スクロールバーの詳しい仕様等、何か参考になるものがあれば、教えてください。
□試したけどダメだったやり方
maxを増やす処理を以下のようにしてみましたところ、バーが動く幅は減りましたが、微妙に動いてしまいます。また、バーを一番左までスクロールさせた時の挙動がヘンでした。
pSBar->GetScrollRange(&lastMin, &lastMax);
lastPos = pSBar->GetScrollPos();
pSBar->SetScrollRange(newMin, newMax);
pSBar->SetScrollPos(newMin + ((newMax - newMin) * (lastPos - lastMin) / (lastMax - lastMin)));
□環境
Windows XP SP1
VC .Net
ツイート | ![]() |