019.MFC_两种对话框
?對話框分為模態和非模態對話框兩種
模態對話框(Modal)?
d.DoModal()
必須關閉才能返回主窗口
非模態對話框(Modaless)
p->Create(IDD_DIALOG,this);
p->ShowWindow(SW_SHOW);
一、建立mfc工程,添加Edit Control組件設置屬性如圖
?
二、添加兩個button 到對話框并分別設置兩個button的caption屬性為打開模態對話框 和 打開非模態對話框
?
三、在資源視圖中、右鍵單擊dialog,選擇插入dialog,并設置對話框id屬性為IDD_FIRST_DIALOG,右鍵單擊選擇添加類,類名填寫CFirstDlg,點擊確定
同理添加第二個對話框,id屬性為IDD_SECOND_DIALOG,右鍵單擊選擇添加類,類名填寫CSecondDlg,點擊確定
?
四、主窗口雙擊打開模態對話框進入主窗口對應文件dialogDlg.cpp
?
在dialogDlg.cpp 文件中添加
#include "FirstDlg.h"
void CdialogDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知處理程序代碼
CFirstDlg dlg;
dlg.DoModal();
}
同理在主窗口雙擊打開非模態對話框進入主窗口對應文件dialogDlg.cpp添加
#include "SecondDlg.h"
void CdialogDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知處理程序代碼
//必須要用指針
CSecondDlg *pDlg = new CSecondDlg;
pDlg->Create(IDD_SECOND_DIALOG,this);//arg1:要創建的對話框ID,arg2:父窗口指針
pDlg->ShowWindow(SW_SHOW);
}
由于非模態對話框使用指針,所以對話框在關閉時必須將它銷毀,
類視圖->選中CSecondDlg->屬性對話框中選擇重寫選中PostNcDestroy
進入SecondDlg.cpp 添加
void CSecondDlg::PostNcDestroy()
{
// TODO: 在此添加專用代碼和/或調用基類
delete this;
CDialogEx::PostNcDestroy();
}
至此兩種模式的對話框都已添加完畢。
轉載于:https://www.cnblogs.com/Malphite/p/10822920.html
總結
以上是生活随笔為你收集整理的019.MFC_两种对话框的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js禁止请求跳转
- 下一篇: opencv,用摄像头识别贴片元件的定位