WEB开发网
开发学院软件开发VC 在对话框中加入属性页 阅读

在对话框中加入属性页

 2006-07-23 11:21:05 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 当一个基于对话框的程序中有相当多的控件时,你一定会想到使用属性页来将这些控件分类放置,在对话框中加入属性页,本文针对这种方法来讨论几种可能实现的方案,方案一本方案的例子请见源代码打包文件中的Property1部分在对话框上放置一个Tab Control的控件,利用CWnd::ShowW

本文示例源代码或素材下载

当一个基于对话框的程序中有相当多的控件时,你一定会想到使用属性页来将这些控件分类放置。本文针对这种方法来讨论几种可能实现的方案。

方案一

本方案的例子请见源代码打包文件中的Property1部分

在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个)。然后利用Class Wizard来为Tab Control控件创建一个控件变量,该变量是CTabCtrl类的,再为其他控件也创建相应的控件类。 在主对话框的初始函数中CProperty1Dlg::OnInitDialog()加入如下代码:

//本例插入两个标签,实际运用中可通过循环插入所需个数的标签,运行后默认第一个标签被选中
m_tab.InsertItem( 0, _T("Tab1") );
m_tab.InsertItem( 1, _T("Tab2") );
//将不是第一个标签的控件隐藏掉,只留下你要的控件
m_button2.ShowWindow( SW_HIDE );

再利用ClassWizard处理Tab Control的 TCN_SELCHANGE 的消息。在消息处理函数中,利用CWnd::ShowWindow来使相应的控件显示和隐藏。

void CProperty1Dlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
//GetCurSel返回当前被选中的标签的索引号(以0为基础算起)
int sel = m_tab.GetCurSel();
switch(sel)
{
case 0:
m_button1.ShowWindow( SW_SHOW );
m_button2.ShowWindow( SW_HIDE );
break;
case 1:
m_button2.ShowWindow( SW_SHOW );
m_button1.ShowWindow( SW_HIDE );
break;
}
*pResult = 0;
}

这样做以后就可以使界面上的控件在不同的标签中显示了,但是这个方案也有很多弊病。

1 2 3 4 5 6  下一页

Tags:对话框 加入 属性

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接