背景
当前做的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
", 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