C++API【CDialog::DoModal()】【AfxEnableControlContainer 函数】
SYD8821是具有全球领先低功耗(RX 2.4mA @-94.5dBm灵敏度,TX 4.3mA @0dBm输出功率)的蓝牙低功耗SOC芯片,在极低电流下实现了优异的射频性能,搭配176kB SRAM,512kB flash,非常适合中高阶可穿戴、智能家居、物联网等低功耗应用。具体可咨询:http://www.sydtek.com/
CDialog::DoModal()
摘录于:https://blog.csdn.net/zqxf123456789/article/details/49914547
5.2 创建有模式对话框
使用有模式对话框时在对话框弹出后调用函数不会立即返回,而是等到对话框销毁后才会返回(请注意在对话框弹出后其他窗口的消息依然会被传递)。所以在使用对话框时其他窗口都不能接收用户输入。创建有模式对话框的方法是调用CDialog::DoModal()。下面的代码演示了这种用法:
CYourView::OnOpenDlg()
{CYourDlg dlg;int iRet=dlg.DoModal();
}
CDialog::DoModal()的返回值为IDOK,IDCANCEL。表明操作者在对话框上选择“确认”或是“取消”。由于在对话框销毁前DoModal不会返回,所以可以使用局部变量来引用对象。在退出函数体后对象同时也会被销毁。而对于无模式对话框则不能这样使用,下节5.3 创建无模式对话框中会详细讲解。
你需要根据DoModal()的返回值来决定你下一步的动作,而得到返回值也是使用有模式对话框的一个很大原因。
使用有模式对话框需要注意一些问题,比如说不要在一些反复出现的事件处理过程中生成有模式对话框,比如说在定时器中产生有模式对话框,因为在上一个对话框还未退出时,定时器消息又会引起下一个对话框的弹出。
同样的在你的对话框类中为了向调用者返回不同的值可以调用CDialog::OnOK()或是CDialog::OnCancel()以返回IDOK或IDCANCEL,如果你希望返回其他的值,你需要调用
CDialog::EndDialog( int nResult );其中nResult会作为DoModal()调用的返回值。
下面的代码演示了如何使用自己的函数来退出对话框:下载例子
void CMy52_s1View::OnLButtonDown(UINT nFlags, CPoint point)
{//创建对话框并得到返回值CView::OnLButtonDown(nFlags, point);CTestDlg dlg;int iRet=dlg.DoModal();CString szOut;szOut.Format("return value %d",iRet);AfxMessageBox(szOut);
}
//重载OnOK,OnCancel
void CTestDlg::OnOK()
{//什么也不做
}
void CTestDlg::OnCancel()
{//什么也不做
}
//在对话框中对三个按钮消息进行映射
void CTestDlg::OnExit1()
{CDialog::OnOK();
}
void CTestDlg::OnExit2()
{CDialog::OnCancel();
}
void CTestDlg::OnExit3()
{CDialog::EndDialog(0XFF);
}
由于重载了OnOK和OnCancel所以在对话框中按下Enter键或Escape键时都不会退出,只有按下三个按钮中的其中一个才会返回。
此外在对话框被生成是会自动调用BOOL CDialog::OnInitDialog(),你如果需要在对话框显示前对其中的控件进行初始化,你需要重载这个函数,并在其中填入相关的初始化代码。利用ClassWizard可以方便的产生一些默认代码,首先打开ClassWizard,选择相应的对话框类,在右边的消息列表中选择WM_INITDIALOG并双击,如图,ClassWizard会自动产生相关代码,代码如下:
BOOL CTestDlg::OnInitDialog()
{/*先调用父类的同名函数*/CDialog::OnInitDialog();/*填写你的初始化代码*/ return TRUE;
AfxEnableControlContainer 函数
摘录于:https://blog.csdn.net/heary29/article/details/42240475
AfxEnableControlContainer()函数是允许应用程序作为控件容器来使用,对于用MFC向导自动生成的单文档框架程序的C...APP::InitInstance()函数中自动加了这一句 AfxEnableControlContainer();
AfxEnableControlContainer() 负责布线所需的 CWnd 对象,以包含 OLE 控件支持结构。如果选择 OLE 控件支持时,此调用应用程序向导通过添加到项目中。您需要手动添加此调用,在以下情况中:
- 要控制容器支持添加到现有项目。-或者-
- 将包含 OLE 控件的对象不是直接由应用程序向导,如 OLE 控件创建的。
例如,如果动态地创建 OLE 控件作为另一个 OLE 控件的子级,父控件必须在其构造函数中调用 AfxEnableControlContainer()。
下面的列表列出了一些最常见的问题 (其他人是可能的),如果未调用 AfxEnableControlContainer() 可能会出现:
- 在许多情况下,您可能会收到下面的调试器输出窗口中跟踪消息:
>>> If this dialog has OLE controls:>>> AfxEnableControlContainer has not been called yet.>>> You should call it in your app's InitInstance function.
- 在其他情况下,您可能会遇到以下文件 Cmdtarg.cpp,行 218 中的断言:
ASSERT(afxOccManager != NULL);
- 如果您 Masked Edit 上放置或某些其他 OLE 控件 CFormView,然后运行该应用程序,您可能会看到一个消息框,表明:
创建空文档失败。
在用AppWizard创建新的应用程序时,你的应用程序就被缺省设置为控件包容器,即在第3步选中支持ActiveX Controls的复选框。如果你在创建过程中没有选择这项技术支持,以后也可以手动地加入这项支持。如果你手动添加这个函数,和APPWIZEARD添加效果是一样的
C++API【CDialog::DoModal()】【AfxEnableControlContainer 函数】相关推荐
- [MFC] CDialog::DoModal()函数用法
5.2 创建有模式对话框 使用有模式对话框时在对话框弹出后调用函数不会立即返回,而是等到对话框销毁后才会返回(请注意在对话框弹出后其他窗口的消息依然会被传递).所以在使用对话框时其他窗口都不能接收用户 ...
- mfc formview中的关闭视图函数_VC|API消息处理(回调函数+分支语句)与MFC中的消息映射函数...
Windows程序不同于控制台程序,因为输入输出不再是scanf和printf那么简单了,而是通过窗口(包括对话框和控件)作为输入.输出的界面以及键盘.鼠标的各类输入事件. 用户在操作系统中的任何操作 ...
- 判断日期是否为法定节假日的API接口与示例函数
判断日期是否为法定节假日的API接口与示例函数 需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的.可惜的是,这样的接口并不多,在此汇总三个: http://too ...
- 《ASCE1885的网络编程》---Winsock APIのIP地址转换函数
在进行网络程序设计时,常常需要从键盘上输入用点分十进制记法表示的主机IP地址,这种IP地址在程序中一般是用ASCII字符串的形式存储的.在网络程序中,要把这种用点分十进制字符串表示的IP地址转换为用网 ...
- C API可使用的函数归纳
2019独角兽企业重金招聘Python工程师标准>>> mysql_affected_rows() 返回上次UPDATE.DELETE或INSERT查询更改/删除/插入的行数. my ...
- php根据当前日期判断法定节假日_判断日期是否为法定节假日的API接口与示例函数...
需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的.可惜的是,这样的接口并不多,在此汇总三个: 前两个看起来是个人的,最后一个是聚合数据的万年历接口. 请注意,本文 ...
- python期货自动化交易_Python API面纱下的函数——基于CTP的国内期货程序化交易之报单流程讲解...
很多用户已经阅读了真格量化的Python API文档,知道了其是对一些交易柜台,比如CTP C++ API的封装.这里我们可以看看这些API在C++中的原始面貌. 我们还是以CTP柜台为例.与海外市场 ...
- 节假日读取接口_判断日期是否为法定节假日的API接口与示例函数
需要判定某日期是否为法定节假日,由于国家的节假日每年都在变动,所以使用接口判定是必要的.可惜的是,这样的接口并不多,在此汇总三个: 前两个看起来是个人的,最后一个是聚合数据的万年历接口. 在我的小项目 ...
- MFC/Windows API 使用过的函数(持续更新)
1 /*******************使用默认画笔对象**************************** 2 // 3 //绘制矩形 4 pDC->MoveTo(50, 50); / ...
最新文章
- 圣诞节!教你用Python画棵圣诞树
- vijos 1030 重叠的方框
- 网络工程师求职与职业规划
- 如何查找业务用例和业务执行者
- cors 前后端分离跨域问题_前后端分离之CORS跨域访问踩坑总结
- 备份恢复,DBA最后一道防线,你完全掌握了吗?
- “硅谷女王”传奇:她是谷歌云 CEO,创立巨头 VMware
- C语言 · 9-1九宫格
- vue添加滚动事件,解决简书Carol_笑一笑方案中vue移除滚动事件失效的问题
- 疯狂工作流讲义(第2版)基于Activiti6.x电子书
- ARM9 S3C2440 定时器中断
- 地址栏js的写法(转载)
- “大圆满”之前行--从概念到知识再到计算的共生【原力】_目录规划与提要
- 卡塞格林光学系统_改进型卡塞格林光学系统的设计
- CAD参数绘制直线(网页版)
- java报表是什么_什么是报表工具
- 【Spark Streaming】(四)基于 Spark Structured Streaming 的开发与数据处理
- 频率选择性衰落、时间选择性衰落
- 2020无人用的邮箱和密码大全_Amazon后台登录密码错误!如何辨别账号是否被冻结?...
- [笔记]Windows核心编程《十九》DLL基础
热门文章
- 亚马逊调用Report接口全流程
- FZU - 2302 Necklace (dp+斜率优化)
- AM2302+STM32驱动程序
- GeoTools中的空间关系(Geometry Relationships)和空间操作(Geometry Operations)
- 9.03 Every Day English
- Vue中v-for必须在vue实例对应元素下的子元素中循环渲染数据
- 物流APP开发同城速递第一品牌,达达向 C 端市场进发
- 引力理论会失效?引力理论与量子理论相冲突之谜
- 【依葫芦画葫芦】の Scrapy Dou鱼封面爬取 笔记
- Recovery support touch