最近使用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;
问题得到解决。