然后,在oninitdialog函数中紧接步骤1的代码加入“动态创建”的代码,即在pictrue控件的位置“动态创建”属性表以覆盖pictrue控件,从而实现在对话框中嵌入属性表的目的。动态创建属性表如创建无模式对话框一样调用create()函数,但必须指明ws_child、ws_visible属性,其余属性根据需要再行添加。另外在对话框中嵌入属性表时必须指定ws_tabstop和ws_ex_controlparent属性,从而使tab键能顺利传递焦点。
最后,需对属性表的有关控件进行数据交换,这可通过属性表数据成员、属性页的数据成员及updatedata()函数来完成。有关代码如下:
//在堆里生成对话框的属性表数据成员m_ppropsheet并“动态创建”属性表“控件”;
m_ppropsheet = new cqrypropsheet (this);
if (! m_ppropsheet -> create (this,ws_child | ws_visible, 0)) {
delete m_ppropsheet;
m_ppropsheet = null;
return -1;
}
//对属性表进行初始化,本例中对“包含子文件夹”复选框进行了初始化;
m_ppropsheet -> m_page1.m_bchildfolder = true;
m_ppropsheet -> m_page1.updatedata (false);