|
文/阙锋 在VC++ 6.0中提供的Tab Control控件与VB 6.0中提供的Tabbed dialog控件相比,使用的灵活性较差。Tabbed Dialog控件可以直接将其它控件拖到该控件的各tab页中,每一页都相当于一个Dialog,而Tab Control控件则只能将其它控件拖到第一个tab页中显示,因此需要通过编代码来实现在不同tab页中显示不同的内容。
 图1 实现原理
本文提供了一种Tab Control控件的改进方法,使它也能具有和Tabbed Dialog类似的功能。实现的基本思路是,将Dialog和tab页对应起来,将需要放入tab页的控件放入Dialog中,这样就不用编写其它代码来将控件显示在其它tab页中。
为了使得代码可以重用,在这里构造了一个通用的类:MyTabCtrlForDialog, 资源仍然使用VC++ 6.0中的Tab Control控件。MyTabCtrlForDialog由VC提供的CTabCtrl类继承而来,它增加了五个成员函数:AddView;OnSize;DeleteView用来将一个Dialog(在这里使用CformView类的子类)加入Tab控件或从Tab控件删除;OnSelChange用来响应界面选中tab页时产生的触发消息,在该函数中调用Show函数显示被选中页对应的Dialog;OnMove用来响应界面拖动Tab控件时产生的触发消息,使得Tab控件内显示的内容能随界面的移动、缩放而相应地移动、缩放。
在使用时,只需将你要使用的Tab Control控件对应的类从MyTabCtrlForDialog类继承而来即可,应用起来非常方便。使用该类后,可以很方便地用VC++开发出显示内容丰富多彩的界面。图2是一个使用该类做的界面的一部分。
 图2 部分界面
本文使用类的继承方法来改进Tab Control控件的功能,使得该控件具有更强的实际应用价值,同时,实现起来也非常方便。如果要将该控件放入Dialog或form View中,则还需覆盖CDialog或CFormView的OnMove、OnSize函数,其原理和MyTabCtrlForDialog类的OnMove、OnSize函数相同,在此不再赘述。
|