⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 teach_road_56.htm

📁 教程资料编程c语言编程教程资料编程c语言编程
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<meta name="GENERATOR" content="闻怡洋 wyy_cq@21cn.com">
<title>Visual C++/MFC开发指南</title>
<SCRIPT LANGUAGE='JavaScript' SRC='../../submit_navigate_bar.js'></SCRIPT>
<link REL="stylesheet" HREF="../../main.css">


</head>
<SCRIPT LANGUAGE='JavaScript'>write_body();</SCRIPT>
<SCRIPT LANGUAGE='JavaScript'>write_bar();</SCRIPT>

<p align="center"><a
HREF="http://www.0828.com/pay/cgi-bin/random.cgi?job=go&id=820"
target="_blank">
<img SRC="http://www.0828.com/pay/cgi-bin/random.cgi?id=820" BORDER="0"
width="468" height="60"></a><br>
<font size="2"><a href="http://www.0828.com/pay/index.html"><img border="0"
src="http://www.0828.com/pay/code.gif" width="468" height="15"></a><br>
<small>你每点一下上面的广告我就能有更多的上网时间为大家寻找资料</small></font>
</p>

<table width=98% cellspacing="0" cellpadding="0" align=center><!--整体框架-->
<tr><td>

<table border=0 width="100%" cellspacing="0" cellpadding="2"><!--标记放置区域-->
<tr>
	<td width="30%" align="center" bgcolor="#003D84" valign=middle><img src=../../img/brand_200_60.gif width=200 height=60 alt="LOGO1"></td>
	<td width="70%" align="center" bgcolor="#003D84" valign=middle><img src=../../img/logo_400_60.gif width=400 height=60 alt="LOGO2"></td>
</tr>
<tr>
	<td colspan="2" bgcolor="#0080C0" align=center><font color=white>您当前位置</font></font> <a href=../../index.htm><font color=white>首页</font></a> <a href=../index.htm><font color=white>开发教程</font></a> <a href=index.htm><font color=white><font class=engul>Visual C++/MFC</font>入门教程</font></a> <font color=white>5.6 使用属性对话框</font><SCRIPT LANGUAGE='JavaScript'>write_command();</SCRIPT></td>
</tr>
</table><!--标记放置区域 END-->

<table border=0 width=100% cellspacing="0" cellpadding="0">
<tr>
<td><!--begin-->

<br>
<p align=center><big>5.6 使用属性对话框</big></p>
<table border=0 align=center width=100%>
<tr><td>
<small>
<p>属性对话框不同于普通对话框的是它能同时提供多个选项页,而每页都可以由资源编辑器以编辑对话框的方式进行编辑,这样给界面开发带来了方便。同时使用上也遵守普通对话框的规则,所以学习起来很方便。属性对话框由两部分构成:多个属性页(CPropertyPage)和属性对话框(CPropertySheet)。</p>
<p>首先需要编辑属性页,在资源编辑器中选择插入,并且选择属性对话框后就可以插入一个属性页,<a href=56_g1.gif target=_blank>如图</a>,或者选择插入一个对话框,然后将其属性中的Style设置为Child,Border设置为Thin也可以,<a href=56_g2.gif target=_blank>如图</a>。然后根据这个对话框资源生成一个新类,在选择基类时选择CPropertyPage,ClassWizard会自动生成相关的代码。</p>
<p>而对于CPropertySheet也需要生成新类,并且将所有需要加入的属性页对象都作为成员变量。属性对话框也分为有模式和无模式两种,有模式属性对话框使用DoModal()创建,无模式属性对话框使用Create()创建。下面的代码演示了如何创建属性对话框并添加属性页:
<pre>
//修改CPropertySheet派生类的构造函数为如下形式
CSheet::CSheet()
	:CPropertySheet("test sheet", NULL, 0)
{
	m_page1.Construct(IDD_PAGE_1);
	m_page2.Construct(IDD_PAGE_2);
	AddPage(&m_page1);
	AddPage(&m_page2);
}
//创建有模式属性对话框
void CMy56_s1Dlg::OnMod() 
{
	CSheet sheet;
	sheet.DoModal();
}
//创建无模式属性对话框
void CMy56_s1Dlg::OnUnm() 
{
	CSheet *sheet=new CSheet;
	sheet->Create();
}
</pre>
</p>
<p>
对于属性对话框可以使用下面的一些成员函数:
<ul><li>CPropertyPage* CPropertySheet::GetActivePage( )得到当前活动页的指针。</li>
<li>BOOL CPropertySheet::SetActivePage( int nPage )用于设置当前活动页。</li>
<li>int CPropertySheet::GetPageCount()用于得到当前页总数。</li>
<li>void CPropertySheet::RemovePage( int nPage )用于删除一页。</li>
</ul>
而对于属性页来将主要通过重载一些函数来达到控制的目的:<ul>
<li>void CPropertyPage::OnOK() 在属性对话框上按下“确定”按钮后被调用</li>
<li>void CPropertyPage::OnCancel() 在属性对话框上按下“取消”按钮后被调用</li>
<li>void CPropertyPage::OnApply() 在属性对话框上按下“应用”按钮后被调用</li>
<li>void CPropertyPage::SetModified( BOOL bChanged = TRUE ) 设置当前页面上的数据被修改标记,这个调用可以使“应用”按钮为允许状态。</li>
</ul>
此外利用属性对话框你可以生成向导对话框,向导对话框同样拥有多个属性页,但同时只有一页被显示,而且对话框上显示的按钮为“上一步”,“下一步”/“完成”,向导对话框会按照你添加页面的顺序依次显示所有的页。在显示属性对话框前你需要调用void CPropertySheet::SetWizardMode()。使用向导对话框时需要对属性页的BOOL CPropertyPage::OnSetActive( )进行重载,并在其中调用void CPropertySheet::SetWizardButtons( DWORD dwFlags )来设置向导对话框上显示的按钮。dwFlags的取值可为以下值的“或”操作:
<ul>
<li>PSWIZB_BACK 显示“上一步”按钮</li>
<li>PSWIZB_NEXT 显示“下一步”按钮</li>
<li>PSWIZB_FINISH 显示“完成”按钮</li>
<li>PSWIZB_DISABLEDFINISH 显示禁止的“完成”按钮</li>
</ul>
void CPropertySheet::SetWizardButtons( DWORD dwFlags )也可以在其他地方调用,比如说在显示最后一页时先显示禁止的“完成”按钮,在完成某些操作后再显示允许的“完成”按钮。
</p>
<p>在使用向导对话框时可以通过重载一些函数来达到控制的目的:<ul>
<li>void CPropertyPage::OnWizardBack() 按下了“上一步”按钮。返回0表示有系统决定需要显示的页面,-1表示禁止页面转换,如果希望显示一个特定的页面需要返回该页面的ID号。</li>
<li>void CPropertyPage::OnOnWizardNext() 按下了“下一步”按钮。返回值含义与void CPropertyPage::OnWizardBack()相同。</li>
<li>void CPropertyPage::OnWizardFinish() 按下了“完成”按钮。返回FALSE表示不允许继续,否则返回TRUE向导对话框将被结束。</li>
</ul>
在向导对话框的DoModal()返回值为ID_WIZFINISH或IDCANCEL。下面的代码演示了如何创建并使用向导对话框:
<pre>
//创建有模式向导对话框
void CMy56_s1Dlg::OnWiz() 
{
	CSheet sheet;
	sheet.SetWizardMode();
	int iRet=sheet.DoModal();//返回ID_WIZFINISH或IDCANCEL
}
//重载BOOL CPropertyPage::OnSetActive( )来控制显示的按钮
BOOL CPage1::OnSetActive() 
{
	((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_NEXT);
	return CPropertyPage::OnSetActive();
}
BOOL CPage2::OnSetActive() 
{
	((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);
	return CPropertyPage::OnSetActive();
}
</pre>
<a href=56_s1.zip>下载本节例子</a>。
</p>
</small>
</td>
</tr>
<tr><td>
<small>
<p align=center><a href=index.htm#charpter5>返回</a></p>
</small>
</td></tr>
</table>
<p align=center><small>版权所有 闻怡洋 <a href=http://www.vchelp.net/>http://www.vchelp.net/</a></small></p>

</td><!--end-->
</tr>
</table>

</td></tr></table><!--整体框架 END-->



<SCRIPT LANGUAGE='JavaScript'>write_tail();</SCRIPT>

</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -