一种简单的方式更改对话框内容






2.89/5 (15投票s)
2004年3月1日

84600

808
改变对话框内容的一种简单方法。
目标
在开发用户界面时,我们经常会遇到在选择任何管理元素(组合框)时,需要改变对话框内容的问题。
本文重现了实现此功能的方法。
指令
首先,你需要创建父窗口,其内容将会改变,并在其中放置一个管理内容改变的控制元素。让下拉列表(ComboBox)控制父窗口的内容变化。子窗口将被放置在由矩形控件元素(Picture
,类型为Frame
)框定的区域内。
现在,是时候创建子窗口了——具有Style
为Child
、Border
为None
以及相应大小的对话框窗口。为每个对话框创建子类,从CDialog
派生。
CDialogDlg
- 父窗口(基于对话框的应用程序);CChildDlg1
- 第一个子窗口;CChildDlg2
- 第二个子窗口。
添加到 DialogDlg.h
#include "ChildDlg1.h"; #include "ChildDlg2.h";
添加到定义 CDialogDlg
类
public:
CChildDlg1 m_View1;
CChildDlg2 m_View2;
然后,将以下文本添加到 CDialogDlg::OnInitDialog()
函数中,在 return TRUE
之前
CWnd* pWnd = GetDlgItem( IDC_FRAME ); CRect rect; pWnd->GetWindowRect( &rect ); ScreenToClient( &rect ); //Creating a ChildDld1 m_View1.Create( IDD_VIEW1, this ); m_View1.ShowWindow( WS_VISIBLE | WS_CHILD ); m_View1.SetWindowPos( pWnd, 0, rect.top, rect.right, rect.bottom, SWP_SHOWWINDOW ); //Creating a ChildDld2 m_View2.Create( IDD_VIEW2, this ); m_View2.ShowWindow( WS_VISIBLE | WS_CHILD ); m_View2.SetWindowPos( pWnd, 0, rect.top, rect.right, rect.bottom, SWP_HIDEWINDOW ); m_Select.SetCurSel(0); //Setting first element of a ComboBox
创建下拉列表(ComboBox)的功能,其内容将会改变
if (m_Select.GetCurSel() == 0) { m_View1.ShowWindow(SW_SHOW); m_View2.ShowWindow(SW_HIDE); } else { m_View1.ShowWindow(SW_HIDE); m_View2.ShowWindow(SW_SHOW); }
编译并运行。