Programming Tips #5 ツリービューのスクロール位置の設定
ツリービューコントロールのスクロール位置を変更する際の注意点を述べる。
TreeView_Select() で選択項目を変更すると TVN_SELCHANGED イベントが発生するが、このイベント処理が終わる前にスクロール位置を変更してはならない。
アプリ終了時にツリービューのスクロール位置を保存しているので、起動時にこれを復帰させようとして分かった。
仕方がないので以下のように初期化中フラグで対処した。
LRESULT TreeView :: OnTvnSelChanged() { if ( bFirst ) { bFirst = FALSE; SetScrollPos( hTree, SB_HORZ, GetProfInt( sectionName, keyHorzPos, 0 ), FALSE ); SetScrollPos( hTree, SB_VERT, GetProfInt( sectionName, keyVertPos, 0 ), FALSE ); } }
以上。