- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
孙鑫VC视频教程笔记之第七课“对话框(上)”
孙鑫VC视频教程笔记之第七课“对话框(上)”
孙鑫VC视频教程笔记之第七课“对话框(上)”
分类: 孙鑫VC视频教程笔记 2008-09-14 23:05 378人阅读 评论(0) 收藏 举报
1. 模态对话框:
CTestDlg dlg;
dlg.DoModal();
对于模态对话框,对应有个函数EndDialog,在MSDN中的解释是这样的:
Call this member function to terminate a modal dialog box. This member function returns nResult as the return value of DoModal(DoModal的返回值作为一个参数传递给EndDialog). You must use the EndDialog function to complete processing whenever a modal dialog box is created.
You can call EndDialog at any time, even in OnInitDialog, in which case you should close the dialog box before it is shown or before the input focus is set.
EndDialog does not close the dialog box immediately. Instead, it sets a flag that directs the dialog box to close as soon as the current message handler returns.
2. 创建非模态对话框:
注:不能像声明模态对话框那样声明Dialog的局部对象,Dialog也是属于资源的一种,如果定义为局部对象,则会在函数的时候析构掉。
有两种办法解决:一种是将对话框资源声明为类的成员变量,一种是声明指针变量,申请堆内存,因为堆内存是在程序结束后才清空资源的。
CTestDlg *pDlg=new CTestDlg(); //最好还是将此行放在构造函数执行,然后在析构函数delete();
pDlg-Create(IDD_DIALOG1,this);
pDlg-ShowWindow(SW_SHOW); //参数定义了显示模式
3. 对于对话框上自动创建的OK按钮,对应的消息响应函数述OnOk,在模态对话框上该函数调用后是销毁窗口,但在非模态对话框上,该函数的调用只是隐藏对话框,在MSDN中的解释如下:
If you implement the OK button in a modeless dialog box, you must override the OnOK member function and call DestroyWindow from within it. Don’t call the base-class member function, because it calls EndDialog, which makes the dialog box invisible but does not destroy it.
4. 动态创建按钮:
添加类的成员变量:CButton btn;
//Button派生于CWnd,所以如果Create成功,成员m_hWnd会拥有该按钮的句柄,否则为空
if(btn.m_hWnd==NULL)
{
//如果成功创建一个button后,再次创建的同一个button话,即同一个资源,程序会出错。
btn.Create(test,BS_PUSHBUTTON,CRect(0,0,100,100),this,100);
btn.ShowWindow(SW_SHOW); //按钮也是一个对话框,所以也需要显示
//以上两条语句可以用一条语句代替
btn.Create(test,BS_PUSHBUTTON | WS_VISIBLE,CRect(0,0,100,100),this,100);
}
else
{
btn.DestroyWindow(); //销毁窗口,将btn.m_hWnd设置成NULL
}
5.
您可能关注的文档
最近下载
- 2025托幼机构卫生保健人员考试题库(附答案).docx VIP
- 【三菱】FX3S FX3G FX3GC FX3U FX3UC 系列PLC 用户手册 定位控制篇.pdf VIP
- 青岛科技大学2023-2024学年第2学期《高等数学(下)》期末试卷(B卷)附标准答案.pdf
- 促销员管理方案及考核.docx VIP
- 虚幻4引擎基础操作课件.pptx VIP
- 小学教师招考教育学心理学试题含答案.docx VIP
- 卫生院传染病防控工作方案.pdf VIP
- 成都东部集团有限公司招聘考试真题2024.docx VIP
- 热力管网技术标书施工组织设计模板.docx VIP
- 陕西省西安市雁塔区2025年小升初语文试卷(有答案) .pdf VIP
文档评论(0)