如何删除CPropertySheet 类派生生成的标签对话框上的默认按钮 “确定”“取消”“删除”

来源:互联网 发布:优化技术详解pdf 编辑:程序博客网 时间:2024/05/16 12:20

       最近在编写MFC程序时,要用Tabctrl控件,系统工具箱自带的CTabCtrl控件在窗体改变大小时,其子窗体内部控件不好自适应改变大小,于是,网上查质料,找到基于CPropertySheet 和CPropertyPage类也可以实现类似TabCtrl控件(标签对话框),且其内部控件能很好的自适应窗体改变大小。。。。

      但是,用CPropertySheet 和CPropertyPage类完成标签对话框的后,程序运行时,每个标签页上底部会留有有“确定”、“取消”和“删除”按钮(点击没有响应),影响程序界面的外观,上网查了一些资料,用以下方法,可以将标签对话框的三个按钮隐藏掉:

 

在CPropertySheet派生类的OnInitDialog()函数中加入以下语句即可

           this->GetDlgItem( IDCANCEL )->ShowWindow( FALSE );
          this->GetDlgItem(IDOK) ->ShowWindow(SW_HIDE);
         this->GetDlgItem(IDHELP) ->ShowWindow(SW_HIDE);

 

注意,是函数OnInitDialog(),不是CPropertySheet派生类的构造函数,否者就会出现类似断言错误 ASSERT(::IsWindow(m_hWnd)); 

 

如我的程序中CPropertySheet的派生类为CTabDataSheet (class CTabDataSheet : public CPropertySheet),所以我的程序为:

BOOL CTabDataSheet::OnInitDialog()
{
 BOOL bResult = CPropertySheet::OnInitDialog();

 // TODO:  在此添加您的专用代码

   //   Hide   Apply   and   Help   buttons  
    this->GetDlgItem( IDCANCEL )->ShowWindow( FALSE );
    this->GetDlgItem(IDOK) ->ShowWindow(SW_HIDE);
    this->GetDlgItem(IDHELP) ->ShowWindow(SW_HIDE);

 return bResult;

}

 

 

 

 

 

原创粉丝点击