とりあえず、窓の横幅が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日)あはら