とりあえず、窓の横幅が900ドット以下か以上かでツールバーの段の数を決めることにした。
ところが、MyCanvas::OnSizeの中でRecreateToolbarを呼ぶと、再帰的にOnSizeが呼び出されてしまい、無限ループになることが判明。
かといって、現状のように、RecreateToolbarの中だけで変更しても、何か機会があるとき(KSEGモードに変えたとか)しかツールバーが更新されない。どうすべきか。フラグを立てて、一度だけ呼び出す、という手もあるがそうしたくない。
かといって、現状のように、RecreateToolbarの中だけで変更しても、何か機会があるとき(KSEGモードに変えたとか)しかツールバーが更新されない。どうすべきか。フラグを立てて、一度だけ呼び出す、という手もあるがそうしたくない。
(11月15日あはら)
MyFrame:ToolbarRowという変数をフラグの代わりにして解決。
if(windowwidth<900 && m_owner->ToolbarRow==1){
m_owner->ToolbarRow=2;
m_owner->RecreateToolbar();
}
else if(windowwidth>=900 && m_owner->ToolbarRow==2){
m_owner->ToolbarRow=1;
m_owner->RecreateToolbar();
}
をMyCanvas:OnSizeに書き込んだ。
(11月16日)あはら
(11月16日)あはら