在MFC中,有時候需要在同一個區域顯示不同的內容,比如,點擊某一個按鈕,在一個特定的區域顯示A,再次點擊之后,在同樣的區域顯示B,這個時候,就需要構建子窗口來解決問題。
首先,按照上一篇的方法新建兩個窗口,此時需要注意的是,通過右鍵,選擇屬性,把窗口的style設置為child。
然后,在父窗口上用PictureControl選擇出一個區域,將來讓子窗口顯示在這個區域中。
然后在父類的初始化函數中作如下的改動:
BOOL CEnqiureNote_NewDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//下面的m_NewDlg_Info和m_NewDlg_Enqiure是將要顯示在同一個區域的不同的類,其中默認顯示第一個。
m_NewDlg_Info.Create(IDD_ENQIURENOTE_NEWDLG_INFO,this);
m_NewDlg_Enqiure.Create(IDD_ENQIURENOTE_NEWDLG_ENQIURE,this);
//讀取嵌入位置,IDC_STATIC_ChildArea是剛才的PictureControl的ID,m_Dialog 是一個CRect的變量,需要在頭文件進行聲明。
GetDlgItem(IDC_STATIC_ChildArea)->GetWindowRect(&m_DialogChild);
ScreenToClient(m_DialogChild);
//以下的功能是顯示m_NewDlg_Info的內容。為了顯示m_NewDlg_Enqiure,可以在相應的處理函數中放入這行代碼,並隱藏
//m_NewDialog_Info即可。
m_NewDlg_Info.MoveWindow(m_DialogChild);
m_NewDlg_Info.ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_ChildArea)->ShowWindow(false);
return TRUE;
}
這樣就完成了MFC中添加子內容到某一個區域的功能。