如何使用标准按钮创建无模式 CPropertySheet

来源:互联网 发布:即时通讯app源码 编辑:程序博客网 时间:2024/04/30 14:08

本文介绍如何在无模式的CPropertySheet对象中实现标准的确定、取消和应用按钮。

我们知道,在MFC中,如果是普通的Dialog,模态显示使用DoModal,非模态显示就稍微麻烦一些:

 CSampleDlg *dlg = new CSampleDlg(IDD_SAMPLE_DLG);

 if(NULL == dlg)

    return;

  dlg->Create(this);

  if(dlg->GetSafeHWnd() == NULL)

    return;

  dlg->ShowWindow(SW_NORMAL);

  销毁:

  dlg->DestroyWindow();

  delete dlg;

  dlg = NULL;

 

但是CPropertySheet如果采用类似的方法创建非模态显示,是无法显示出下方的标准按钮的:Apply/OK/Cancel

可以通过这种方法解决:

对于无模式CPropertySheet,Microsoft 基础类 (MFC) 调整表的大小,并隐藏中的CPropertySheet::OnInitDialog成员函数的标准按钮。若要防止 MFC 执行此操作,请执行以下步骤:
 从CPropertySheet派生类和重写OnInitDialog函数。
 设置为 FALSE 时"m_bModeless",并删除"m_nFlags"的 WF_CONTINUEMODAL 样式。
 调用CPropertySheet::OnInitDialog
 将"m_bModeless"重新设置为 TRUE,并将 WF_CONTINUEMODAL 的样式添加到"m_nFlags"。
 
 下面的代码示例阐释了这种技术:
 // CMySheet is derived from CpropertySheet.
 // Compile options needed: default.
    
 BOOL CMySheet::OnInitDialog()
 {
    m_bModeless = FALSE;  
    m_nFlags |= WF_CONTINUEMODAL;
 
    BOOL bResult = CPropertySheet::OnInitDialog();
 
    m_bModeless = TRUE;
    m_nFlags &= ~WF_CONTINUEMODAL;
    return bResult;
 }
     
 无模式的CPropertySheet对象中的确定和取消按钮不关闭属性表在被单击时。他们不要向工作表中,发送 WM_COMMAND 消息来使用 IDOK 或 IDCANCEL, OnOK或OnCancel函数调用的页。若要关闭该工作表,可以为 IDOK 和CPropertySheet中的 IDCANCEL 实现 ON_COMMAND 处理程序,并调用EndDialog函数,以关闭表。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩吃东西不吸收营养怎么办 婴儿长得太快怎么办 2个月婴儿长太快怎么办 孩子脚长得太快怎么办 4个月宝宝缺钙怎么办 2个月宝宝不长肉怎么办 小孩子长得不高怎么办 宝宝误吃蜂蜜了怎么办 有人拿着吃完的东西退货怎么办 婴儿个子长的慢怎么办 儿童长得太快怎么办 宝宝个子长太快怎么办 孩子九个月奶水不够怎么办 小孩起热痱子痒怎么办 媳妇生完小孩奶水出不来怎么办 生完孩子下奶疼怎么办 生完小孩没奶水怎么办 孩子半个月奶水越来越少怎么办 半个月后奶水越来越少怎么办 坐月子半个月奶水越来越少怎么办 孩子七个月奶水越来越少怎么办 生完孩子奶水越来越少怎么办 生完孩子回奶了怎么办 产妇3天没奶水怎么办 产后7天了奶水少怎么办 刚生完小孩没有奶水怎么办 突然就没奶水了怎么办 生完小孩没有奶水怎么办 生完宝宝没有奶怎么办 剖腹产奶涨的疼怎么办 生产一天了没奶怎么办 第一天断奶 奶水一直流出怎么办 新生儿刚出生没奶水怎么办 安卓手机死机了怎么办 婴幼儿几天不拉大便怎么办 樱桃吃多了胃不舒服怎么办 空腹吃水果胃不舒服怎么办 吃水果后胃不舒服怎么办 吃水果伤胃了怎么办 大人吃退烧药不出汗怎么办 稍微吃点凉水果胃就疼怎么办