65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.89/5 (15投票s)

2004年3月1日

viewsIcon

84600

downloadIcon

808

改变对话框内容的一种简单方法。

目标

在开发用户界面时,我们经常会遇到在选择任何管理元素(组合框)时,需要改变对话框内容的问题。

本文重现了实现此功能的方法。

指令

首先,你需要创建父窗口,其内容将会改变,并在其中放置一个管理内容改变的控制元素。让下拉列表(ComboBox)控制父窗口的内容变化。子窗口将被放置在由矩形控件元素(Picture,类型为Frame)框定的区域内。

现在,是时候创建子窗口了——具有StyleChildBorderNone以及相应大小的对话框窗口。为每个对话框创建子类,从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);
    }

编译并运行。

© . All rights reserved.