MFC如何在父窗口的指定位置建立子窗口,及border邊框屬性設置

在 VS2012的MFC工程中,如何在父窗口的指定位置建立子窗口?html

這裏以一個實例來演示:ide

一、咱們新建一個基於對話框的項目,項目名字爲test。函數

二、在資源視圖中添加兩個對話框IDD_ENQIURENOTE_NEWDLG_INFO、IDD_ENQIURENOTE_NEWDLG_ENQIURE,並設計好對話框的界面。工具

在資源視圖的子窗口經過右鍵,選擇屬性,把子窗口的style設置爲child。this

而picture控件的border屬性默認是典型的對話框形式,若是想搞嵌入式的,能夠改成none,即沒有邊框;或者改成thin則是細邊框.url

三、在父窗口上用工具箱的PictureControl選擇出一個區域,未來讓子窗口顯示在這個區域中,並將該控件命名爲IDC_STATIC_ChildArea。spa

四、在資源視圖中找到兩個子窗口的對話框上,分別右鍵,選擇添加類(Add Class),而後彈出的對話框中對新增的類進行設置。.net

其中,在基類(Base Class)須要選擇CDialogEx(老版本的VC是CDialog),而後輸入新增類的名稱(例如輸入C_NewDlg一、C_NewDlg2),點擊確認便可新增類。設計

這樣,這個新建的類不只有對應的頭文件還有.cpp文件,還有一個與這個類對應的UI界面。code

五、把須要將新增的類對應的頭文件#include "C_NewDlg1.h"、 #include "C_NewDlg2.h"包含到它對應的父類的頭文件(如testDlg.h )中。

同時在protected域中聲明一個這個類的對象,好比:


[cpp] view plain copy 在CODE上查看代碼片派生到個人代碼片

  1. C_NewDlg1 m_NewDlg_Info;  

  2. C_NewDlg2 m_NewDlg_Enqiure;  

  3. CRect m_DialogChild;  


六、在父類的初始化函數OnInitDialog()中做以下的改動:


[cpp] view plain copy 在CODE上查看代碼片派生到個人代碼片

  1.      BOOL CtestDlg::OnInitDialog()  

  2.     {  

  3.      CDialog::OnInitDialog();  

  4.   

  5.     //下面的m_NewDlg_Info和m_NewDlg_Enqiure是將要顯示在同一個區域的不一樣的類,其中默認顯示第一個。  

  6.      m_NewDlg_Info.Create(IDD_ENQIURENOTE_NEWDLG_INFO,this);    

  7.   

  8.      m_NewDlg_Enqiure.Create(IDD_ENQIURENOTE_NEWDLG_ENQIURE,this);  

  9.   

  10. //讀取嵌入位置,IDC_STATIC_ChildArea。  

  11.   

  12.      GetDlgItem(IDC_STATIC_ChildArea)->GetWindowRect(&m_DialogChild);  

  13.      ScreenToClient(m_DialogChild);  

  14.   

  15.     //如下的功能是顯示m_NewDlg_Info的內容。爲了顯示m_NewDlg_Enqiure,能夠在相應的處理函數中放入代碼,並隱藏m_NewDialog_Info便可。  

  16.      m_NewDlg_Info.MoveWindow(m_DialogChild);  

  17.      m_NewDlg_Info.ShowWindow(SW_SHOW);  

  18.      GetDlgItem(IDC_STATIC_ChildArea)->ShowWindow(false);  

  19.   

  20.      return TRUE;  

  21.     }  



這樣就完成了MFC中添加子內容到某一個區域的功能。



參考資料:

http://www.cnblogs.com/zhaoxiaoming/archive/2011/10/10/MFC_NewDialog.html

轉載自:

http://blog.csdn.net/u013174689/article/details/35780993

相關文章
相關標籤/搜索