最近使用bcg庫的時候,採用了在MDI中Tab化子框架窗口中動態放置控制條的界面,卻發現一個小問題。控制條始終不能顯示出來,而是緊緊靠在邊框,而且只露出一個1像素寬的條。開始以爲是使用方法的不對,採用各種方法都沒有解決。最後研究bcg中提供的範例程序,發現也存在這個問題。於是確認是系統的問題。需要自己解決。
跟蹤源代碼很久,才發現其中的原因。原來,bcg中當顯示tab化的mdi子窗口的時候,會動態創建一個大小爲0的tabWnd,這個窗口創建的時候size的變化會導致mdi子窗口中所有控制條的重新安排,由於size爲0,而所有的控制條的位置會自動緊縮,由於控制條中有一個minSize屬性,默認爲1。所以控制條在重新展開後只會按照這個最小位置來顯示,導致不正常的顯示。非tab化的mdi子窗口則不存在此問題。
解決方法:在CBCGPMDIChildWnd的繼承類中添加OnSize響應函數,並增加代碼
if (cx == 0 && cy ==0)
return;
問題得到解決。