背景
當前做的APP有菜單欄,菜單欄有一項需要對下位機相關參數進行設置,則必須彈出一個窗口來實現設置操作。本篇即對點擊菜單欄生成新的窗口,在新的窗口內完成相應計划后結束新窗口並返回原窗口的方法進行簡述。菜單欄的實現可見另一篇博客Visual studio C++ MFC之Menu editor。
正文
-
創建一個新窗口
在資源視圖右擊添加Dialog
資源,會生成一個新的Dialog
,該Dialog
ID可自行定義,接着在該Dialog
上右擊添加類,類名自定義,本次類名為CANInterface
,之后會生成兩個文件ANInterface.cpp
,ANInterface.h
,並且生成了新的窗口。 -
在原窗口生成菜單欄單擊事件
另一篇博客Visual studio C++ MFC之Menu editor已詳述,生成的代碼如下:
void CMenueditortestDlg::OnSettingCaninterface()
{
// TODO: 在此添加命令處理程序代碼
// 定義一個新窗口的類
CANInterface dlg;
// 調用此函數,則1步驟生成的窗口產生,若是新生成的窗口退出會有一個返回值
INT_PTR nRet = dlg.DoModal();
TRACE("nRet = %d\n", nRet);
switch(nRet)
{
case 1: // do something
break;
case 11: // do something
break;
default: // do something
break;
}
}
- 在新窗實現控件操作並返回
在新窗口類中完成一系列操作就和普通的窗口操作一樣,可以添加控件,也可以添加事件,此處即添加一個按鈕結束當前窗口,返回到原窗口,代碼如下:
void CANInterface::OnBnClickedButtonEnd()
{
// TODO: 在此添加控件通知處理程序代碼
// 此處的nRet既是上文所說的新生成的窗口退出的返回值
int nRet = 11; // Just any value would do!
EndDialog(nRet); // This value is returned by DoModal!
// Do something
return; // Dialog closed and DoModal returns only here!
}
參考鏈接
- zhliy0711的專欄的博客C++ MFC 中, 如何按下按鈕彈出對話框;
- MSDN關於CDialog::DoModal的幫助說明文檔;
- MSDN關於CDialog::EndDialog的幫助說明文檔。
至此記錄完畢
記錄時間:2017-2-16
記錄地點:深圳WZ