作者:荆州房产网 | 来源:互联网 | 2023-07-17 09:33
事情是这样的:我用VS建了一个MFC对话框项目,在生成的主对话框中放置了一个tabcontrol,一个Button,点击Button可以弹出一个子窗口,子窗口也有一个tabcontrol,两个窗口
事情是这样的:我用VS建了一个MFC对话框项目,在生成的主对话框中放置了一个tab control,一个Button,点击Button可以弹出一个子窗口,子窗口也有一个tab control,两个窗口的tab control都设置了四个页面。并分别在主窗口和子窗口的oninitdialog()函数中实现了初始化。但是在程序运行起来之后,在主对话框中,标签页的切换是正常的,很流畅,但是是在弹出来的子对话框中的标签页切换就会出现明显的卡顿,在VS2010下有时还可以切换,在VS2008中就直接卡死了,点切换根本就没反应。郁闷了一天了,都不知道问题出在哪里,不知道有没有人遇到过这种情况,希望有大神能帮助解决。PS:我是在新建的子对话框中重写的oninitdialog()实现的子对话框中tab control的初始化。
在线等高手解答,十万火急呀!
8 个解决方案
我看你的子对话框多了一个m_childList,不知道在Tab切换的时候是否有影响,先把这个变量注释掉看看。
另外你的情况似乎用CPropertySheet/CPropertyPage更方便。
主对话框、子对话框什么的肯定是没有关系的,要不你把两个对话框换个位置试试看。我觉得还是你的Tab页关联的子窗口问题。一般我要用TabCtrl的话,子窗口用BringWindowToTop就可以了,不用Show/Hide那么麻烦。
您好,在您的指点下,我又作了一个小实验。这一次,我在主对话框中,只放置了一个button,用来点击显示子对话框,而在子对话框中放置了一个tab control用来实验。这一次,只有子对话框有标签控件,点击之后标签的切换没有出现卡死顿的情况。面且,在子对话框和主对话框都有Tab control的情况下,如果在只给子对话框的标签控件设置标题名称,而不让它显示标签页的内容,这样做,子对话框标签的页面切换也是正常的,无卡顿。但是一旦要其显示其中的内容,不管是显示几个,都会有卡顿。我在想,是不是因为子对话框的oninitdialog()和主对话框有冲突,或者是两个Tab control控件的响应事件有冲突造成的。