VizCommand #34 アイテムズパネルが大きくなるたびに自動的に下にスクロール

これまで、アイテムズパネルが大きくなってスクロールバーが出てきて、どんどんウィンドウリストアイテムが追加されていっても、下に自動でスクロールされることはなく、自分で下までスクロールしないといけなかったが、今回は自動スクロールに対応する。

resource.hに、

新しい独自メッセージUM_REQUESTSCROLLBOTTOMを追加。

StreamConsoleItemsPanel.hを追加し、

CWindowListItemsPanelの派生クラスとしてCStreamConsoleItemsPanelを定義し、OnSizeChildだけオーバーライド。

StreamConsoleItemsPanel.cppで、

特定のアイテムのリサイズや、ウィンドウサイズの変更を経て、UM_REQUESTSCROLLBOTTOMをSendMessageする。投げ先にiTotalHeightを渡すようにする。

StreamConsole.hに、

OnRequestScrollBottomを追加。

StreamConsole.cppで、

OnUserMessageでUM_REQUESTSCROLLBOTTOMならOnRequestScrollBottomを呼ぶようにし、

スクロール可能になった時、渡されたiTotalHeightをm_ScrollInfo.nMax、
一番下に移動するようにm_ScrollInfo.nMax - m_ScrollInfo.nPageをm_ScrollInfo.nPosにセットして、SetScrollInfoを呼ぶ。
そしてm_pWindowListItemsPanel->MoveWindowでm_ScrollInfo.nPosの分だけ上にパネルを移動させる。

m_pWindowListItemsPanelには、CWindowListItemsPanelのインスタンスに代わって、CStreamConsoleItemsPanelのインスタンスを入れる。

f:id:BG1:20170606114730p:plain

ここでギリギリ・・・。ここでリターンを押すと、

f:id:BG1:20170606114837p:plain

スクロールバーが発生するが、ちゃんと下にスクロールしてる。

f:id:BG1:20170606114909p:plain

もちろん上にスクロールバーで移動しても切れたりはしていない。

f:id:BG1:20170606114939p:plain

listコマンドを打ってみると、

f:id:BG1:20170606115028p:plain

さらに下にスクロールしていく。

・アイテムズパネルが大きくなるたびに自動的に下にスクロール · bg1bgst333/VizCommand@e5dd654 · GitHub