c++单文档如何在点关闭按钮时出现提示框,必须是在窗口关闭前出现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++单文档如何在点关闭按钮时出现提示框,必须是在窗口关闭前出现相关的知识,希望对你有一定的参考价值。
参考技术A WM_CLOSE是标准消息,不是一楼说的命令消息。二楼的答案没错,VS2005用向导做的话鼠标点几下就行了。切换到类视图,选中CMainFrame,右击,选属性,在属性窗口中选择消息(点属性窗口顶上倒数第二个图标),找到WM_CLOSE消息,添加消息处理就行了,代码二楼的一样 参考技术B 在CMainFrame类中添加处理函数(3个步骤):(1)在CMainFrame类定义文件(.h)中添加消息函数afx_msg void OnClose();
注意添加位置是宏 //AFX_MSG 和 //AFX_MSG 之间。
(2)在CMainFrame类实现文件(.cpp)中添加消息映射函数ON_WM_CLOSE()——不带分号,添加位置是 BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP() 之间。
(3)在CMainFrame类实现文件(.cpp)中添加 OnClose 的实现代码:
void CMainFrame::OnClose()
if(IDOK == AfxMessageBox("确定关闭?", MB_OKCANCEL | MB_ICONQUESTION))
OnClose();
如果需要定制提示框的标题,则改为
if(IDOK == MessageBox("确定关闭?", "询问", MB_OKCANCEL | MB_ICONQUESTION))
OnClose();
运行一下就知道参数的含义了。 参考技术C 处理WM_COMMAND中的close消息追问
WM_COMMAND中的close消息在哪呢?我是新手,有些东西都不知道在哪呢
追答你查看MSDN,WM_COMMAND的wparam或者lparam中存储有消息的类型
MSDN中搜索WM_COMMAND,有详解
使用工具提示时出现错误 #2025:提供的 DisplayObject 必须是调用者的子对象
【中文标题】使用工具提示时出现错误 #2025:提供的 DisplayObject 必须是调用者的子对象【英文标题】:When using Tooltips I'm getting an Error #2025: The supplied DisplayObject must be a child of the caller 【发布时间】:2015-08-21 03:00:07 【问题描述】:当我添加工具提示然后删除工具提示时,当我单击舞台时出现以下错误:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/getChildIndex()
at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::rawChildren_getChildIndex()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\SystemManager.as:2195]
at mx.managers::SystemChildrenList/removeChild()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\SystemChildrenList.as:167]
at mx.managers::ToolTipManagerImpl/http://www.adobe.com/2006/flex/mx/internal::reset()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\ToolTipManagerImpl.as:1379]
at mx.managers::ToolTipManagerImpl/http://www.adobe.com/2006/flex/mx/internal::targetChanged()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\ToolTipManagerImpl.as:892]
at mx.managers::ToolTipManagerImpl/http://www.adobe.com/2006/flex/mx/internal::checkIfTargetChanged()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\ToolTipManagerImpl.as:797]
at mx.managers::ToolTipManagerImpl/http://www.adobe.com/2006/flex/mx/internal::toolTipMouseOverHandler()[C:\Jenkins\workspace\flex-sdk_release-candidate\frameworks\projects\framework\src\mx\managers\ToolTipManagerImpl.as:1623]
我已经尝试了我所知道的一切来摆脱它。 这是我正在使用的代码:
// adding
PopUpManager.addPopUp(rulerPopUp, SystemManager.getSWFRoot(this));
toolTipPopUp = ToolTipManager.createToolTip("HELLO", event.stageX, event.stageY) as ToolTip;
ToolTipManager.currentToolTip = toolTipPopUp;
swfRoot.addEventListener(MouseEvent.MOUSE_MOVE, mouseRulerMoveHandler, true, EventPriority.CURSOR_MANAGEMENT, true);
swfRoot.addEventListener(MouseEvent.MOUSE_UP, mouseRulerUpHandler, true, EventPriority.CURSOR_MANAGEMENT, true);
// removing
swfRoot.removeEventListener(MouseEvent.MOUSE_MOVE, mouseRulerMoveHandler, true);
swfRoot.removeEventListener(MouseEvent.MOUSE_UP, mouseRulerUpHandler, true);
if (toolTipPopUp && toolTipPopUp.stage)
ToolTipManager.destroyToolTip(toolTipPopUp);
toolTipPopUp = null;
谁能看到我收到此错误的原因?
【问题讨论】:
我想我可能已经修好了。我在toolTipPopUp = null
之前添加了ToolTipManager.currentToolTip = null;
。
【参考方案1】:
似乎将 currentToolTip 设置为 null 可以解决问题。
if (toolTipPopUp && toolTipPopUp.stage) ToolTipManager.destroyToolTip(toolTipPopUp); ToolTipManager.currentToolTip = null; // 添加了这一行 toolTipPopUp = null;
从那以后我没有发生任何错误。
【讨论】:
以上是关于c++单文档如何在点关闭按钮时出现提示框,必须是在窗口关闭前出现的主要内容,如果未能解决你的问题,请参考以下文章
编写了Java GUI的一个登录框,如何实现跳转,错误时出现提示框,登陆成功切换为下一界面