属性页的一些使用技巧

原创 2004年10月08日 13:13:00

加入项目<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

举例如下:

1.在项目中加入MFCCMyMainSheet,选择CPropertySheet作为其基类。

2.在项目中加入MFCCMyPage1CMyPage2,选择CPropertyPage作为基类,它们将作为属性对话框中的属性页。

弹出属性对话框

实现:

void PopupPropertyDlg()

       // 创建PropertySheetPropertyPage

       CMyMainSheet mms(_T("MainSheet"), this);

       CMyPage1 mp1;

       CMyPage2 mp2;

 

       // 如果想要去掉“应用”和“帮助”按钮

       mms.m_psh.dwFlags |= PSH_NOAPPLYNOW;

       mms.m_psh.dwFlags &= ~PSH_HASHELP;

       mp1.m_psp.dwFlags &= ~PSP_HASHELP;

       mp2.m_psp.dwFlags &= ~PSP_HASHELP;

 

       // 设置各个属性页中元素的初值

       mp1.m_xxxx = ;

       mp2.m_xxxx = ;

 

       // 弹出对话框

       mms.AddPage(&mp1);

       mms.AddPage(&mp2);

       if(mms.DoModal() == IDOK)

 

       // 如果确定了,采取的操作

       // 注意,当执行到上面的代码时,UpdateData(True)已经被自动执行

PropertySheet中各种元素之间的交互

在复杂的对话框中,常常有这样的情况发生:当修改某一个PropertyPage中的控件时,该元素的值会影响属性页中其他控件,甚至是其他属性页中的控件的属性。如果通过直接发消息等方法来处理,这样的处理逻辑会遍布各个属性页,降低代码的可读和可修改性。我们采用PropertySheet作为中介者,这样的消息全部发送给PropertySheet,然后由它对涉及的PropertyPage中的控件进行处理。

比如,在mp1控件的Edit中是否填入值要影响mp2Edit控件的Enable/Disable,我们可以这样做:

CMyPage1中加入消息响应函数,用于接收Edit控件的修改事件

OnEnChangeEdit()

调用PropertySheet的处理函数,而不是自己来处理

       CMyMainSheet* pmms = NULL;

       pmms = (CMyMainSheet*)GetParent();

       pmms->EnableSwitch();

CMyMainSheet中加入处理函数 

EnableSwitch

判断mp1中控件的值,来确定mp2中控件的Enable/Disable

       CString str1;

       GetPage(0)->GetDlgItemText(IDC_EDIT1, str1);

       if(_T("") == str1)

              GetPage(1)->GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);

       else

              GetPage(1)->GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);

 

VC++中属性页(向导)的实现

我们已经非常熟悉软件安装的步骤,一般都是由用户协议、安装位置、安装选项、安装这几个过程构成。其中,I agree、next、back、finish、cancel这几项是必不可少的。那么这个安装程序(仅...
  • dancewyr
  • dancewyr
  • 2012年06月18日 10:02
  • 2977

由于一个或多个其他网络页属性已经打开,这个属性页上的部分控件被禁用。想要使用这些控件,请先关闭所有属性页,然后将这个属性页重新打开

最近打开网络连接,查看本地连接属性时经常会弹出对话框:“由于一个或多个其他网络页属性已经打开,这个属性页上的部分控件被禁用。想要使用这些控件,请先关闭所有属性页,然后将这个属性页重新打开”在http:...
  • lwkaoyan
  • lwkaoyan
  • 2010年07月21日 00:01
  • 60579

关于Python的一些使用小技巧

在Windows操作系统上,安装两个不同版本的Python解释器,假如Python3.5被安装在D:\Program Files\Python35文件夹中。你还需要把D:\Program Files\...
  • Zack1989
  • Zack1989
  • 2016年12月07日 21:39
  • 344

界面设计的基本技巧

最好的程序界面就是用户无需去阅读*作手册就知道该如何使用的界面。  原则 1.一致性    如果你可以在一个列表的项目上双击后能够弹出对话框,那么应该在任何列表中双击都能弹出对话框。要有统一的字体写号...
  • wangchinaking
  • wangchinaking
  • 2005年03月16日 17:20
  • 2358

doxygen+graphviz 绘制工程的结构图技巧小结

第一部分:在看推荐的教程文章之前,你应该注意的 第二部分:当你使用教程文章不能达到期望的目的时,请看下面...
  • davied9
  • davied9
  • 2017年08月23日 23:01
  • 183

spring MVC的一些小技巧

spring MVC的一些小技巧1,在controller中获取指定name的bean/*** * * @param request * @param beanName...
  • hw1287789687
  • hw1287789687
  • 2015年04月03日 00:00
  • 1792

MFC之添加属性页

属性页一定是由几个页面构成的,首先要创建几个基类是CPropertyPage的对话框。例如,创建两个类,CTestPage1 、CTestPage2 一定要有一个类去管理几个属性页面,然后要创建一个基...
  • hhhuang1991
  • hhhuang1991
  • 2015年09月21日 15:42
  • 1053

如何删除属性页和属性表单中的帮助按钮

在默认情况下,属性页对话框默认的样式可能会包含“帮助”个按钮,如果不需要这个“帮助”按钮我们可以通过修改CPropertySheet类的m_psh成员函数中的dwFlags值,同时修改CPropert...
  • xiao3404
  • xiao3404
  • 2016年11月06日 18:34
  • 733

吗,的舒服加快速度

第十六课减肥后收到货发烧友护发素的后
  • u013414209
  • u013414209
  • 2014年01月08日 09:06
  • 129

ActiveX之添加属性页

ActiveX添加属性页有二种情况: 添加固有属性页添加自定义属性页 一、添加固有属性页 MFC为ActiveX控件提供三种固有属性页,CLSID_CColorPropPage,CL...
  • a36254094
  • a36254094
  • 2012年10月01日 21:13
  • 987
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:属性页的一些使用技巧
举报原因:
原因补充:

(最多只允许输入30个字)