MFC属性表单的创建

一个属性表单由一个或多个属性页组成。它有效地解决了大量信息无法在一个对话框上显示这一问题。

1、创建属性页

为了创建属性表单,首先需要创建属性页,后者对应的MFC类是CPropertyPage,该类生成的对象代表了属性表单中一个单独的属性页。

在资源编译器下添加3个属性页资源,并修改这三个属性页资源的ID及标题(Caption属性),属性页的标题就是最终在属性页上显示的选项卡的名称。有三种类型的属性页,如图:

说明:如果知道了属性页资源与对话框资源之间的属性区别,也可以在程序中先增加一个普通对话框资源,然后修改其属性,使其符合属性页资源的要求,然后把它当作属性页资源来使用。

为每一个属性页生成相应的属性页类,基类是CPropertyPage。

2、创建属性表单

为了创建一个属性表单,首先需要创建一个对象,接下来在此对象中为每一个属性页创建一个对象(CPropertyPage类型),并调用AddPage函数添加每一个属性页,然后调用DoModal函数显示一个模态属性表单,或调用Create函数创建一个非模态属性表单。

(1)创建一个基类为CPropertySheet的类CPropSheet。

(2)CPropSheet类头文件中为先前创建的三个属性页分别定义一个成员变量。注意包含相应头文件。

CProPage1 m_page1;
CProPage2 m_page2;
CProPage3 m_page3;

(3)添加属性页对象。

通常都是在属性表单的构造函数中添加属性页对象。属性表单有两个构造函数:

CPropSheet::CPropSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
    :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{

}

CPropSheet::CPropSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
    :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{

}

iSelectPage指定的是属性表单初始选择的属性页,默认值是第一个页面。因为属性表单有两个构造函数,在构造属性表单对象时,可任选其中一个构造函数。

CPropSheet::CPropSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
    :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
    AddPage(&m_page1);
    AddPage(&m_page2);
    AddPage(&m_page3);
}

(4)显示属性表单。

CPropertySheet类是从CWnd类派生来的,而不是派生于CDialog类。但CPropertySheet对象与CDialog对象的操作方式是类似的。调用DoModal函数显示一个模态属性表单,或调用Create函数创建一个非模态属性表单。

如果要在初始化时就显示属性表单,需要在OnInitDialog函数中操作:

时间: 2024-11-17 22:27:28

MFC属性表单的创建的相关文章

VS2010、MFC对话框程序、点击一个按钮弹出一个有多选项卡的属性页界面(即属性表单)

第一步: 建立多个属性页,可以添加对话框资源,然后修改对话框资源的属性,在vs2010中,修改如下3个:Style设置为child:Border设置为Thin:System menu设置为fasul; Title Bar为true(默认即为true):修改Caption:为此属性页选项卡的名称: 第二步: 为上面的属性页添加类,父类选为CPropertyPage:添加方式:右击对话框添加类即可. (若是父类中没有CPropertyPage类,从类向导中添加即可,此种方法添加时需要选好相应的对话框

Struts动态表单的创建

一.在struts中如何实现动态表单的创建 (1)第一步:创建一个简单的注册页面: <body> <form action="/DynamicForm/register.do?flag=register" method="post"> u:<input type="text" name="name"/><br/> p:<input type="password&q

多级指标打分表单自动创建JavaScript代码解析

为了解释按多级指标自动创建打分表的设计,以及相关指标考核打分业务,写了Demo代码供开发人员参考,主要涉及到Table动态操作技术及算法实践. 1. HTML DOM Table 对象操作 1.1. 插入一行 使用HTML DOM insertRow() 方法,insertRow(index) 方法用于在表格中的指定位置插入一个新行. 若 index 等于表中的行数,则新行将被附加到表的末尾. 1.2. 插入单元格 使用HTML DOM insertCell() 方法,insertCell()

5.1 HTML5表单的创建

1.表单用于获取不同类型的用户输入 2.常用表单标签 <form>表单 <input>输入域 <textarea>文本域 <label>控制标签 <fieldset>定义域 <legend>域的标题 <select>选择列表 <optgroup>选项组 <option>下拉列表中的选项 <button>按钮 用<form>标签定义一个表单 <input>标签定义输

Microsoft Visual Studio 工程属性表props/vsprops创建与使用

props/vsprops:工程属性表文件(project property sheet) 后者为vs2008的,前者为vs2010及以后版本的,其主要包含工程属性配置相关,可以单独提取出来供不同工程项目公共使用,此外不同项目还可以追加.修改该继承(加载)的属性表,其他引用了该公共属性表的工程不受到影响:此属性表文件可以节省配置时间开销.减少配置错误率,减少工程的重复设置,最终只要设置一次就可以了,尤其是当解决方案下有很多的工程需要修改配置时,其效果显而易见. 创建工程属性表: 无论是vspro

HTML5表单的创建及与PHP的交互

Html5表单 <!DOCTYPE html> <html> <head lang="en">     <meta charset="UTF-8">     <title></title> </head> <body> <form>     用户名:     <input type="text">     <br/>

phpcms利用表单向导创建留言板(可以回复)

这篇博客写的很详细,可跳转到如下链接: http://blog.aiwebcom.com/%E7%BD%91%E7%AB%99%E5%BB%BA%E8%AE%BE/phpcms/456.html 注: 1.其中的sql语句需要根据自己的表做修改 2.如果在回复时无法回复文字,可把这句话删除  $answer=mb_convert_encoding($answer,'gbk','utf-8′);

Request 分别获取具有相同 name 属性表单元素值

html 中是允许多个具有相同name属性的元素的,例如 <div> <input name="txtName" id="txtFirstName" type="text" /> <input name="txtName" id="txtMiddleName" type="text" /> <input name="txtName&qu

委托应用-表单的创建和编辑

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>DOM操作</title> </head> <style> #detail{ width:200px; height:200px; border:1px sol