vc层叠式窗体控件指南[组图](3)
使用MFC ClassWizard添加一个数据变量到IDC_SWC命名为m_StackedWndCtrl,确保选择了Control作为Category以及CStackedWndCtrl作为变量类型。
在OK上点击,弹出一个消息框提示我们确保我们已经为类CStackedWndCtrl包含头文件在我们的对话框代码中。如果你没有包含它现在就要做了。
数据结构
任何控件的主要部分就是一个数据结构,数据结构可以保持将要显示的信息。
好的,什么将会被显示?该控件用面板制作出来,每个面板包含两个窗体,一个标题窗体和一个内容窗体。下面的图片说明了这个概念。
控件的机制要求只有一个面板的内容窗体在一个时间内显示。在一个面板上点击标题窗体将触发其相应的内容窗体显示,并且也隐藏了当前显示面板的内容窗体。
因此,数据结构将包含一对指向CWnd 对象的指针和一个布尔标识值以指出是否显示或隐藏这个面板的内容窗体。不需要任何其他的东西了。
#include <afxtempl.h>
class CStackedWndCtrl : public CStatic
{
....
....
// Attributes
protected:
typedef struct
{
CWnd* m_pwndRubric;
CWnd* m_pwndContent;
BOOL m_bOpen;
} TDS_PANE, *PTDS_PANE;
CArray<PTDS_PANE, PTDS_PANE> m_arrPanes;
....
....
}对于这些结构的保存、检索和操作,用一个数组是一个方便的且足够的方法。记住为了使用这个数组模版,我们需要包含相应的头文件。