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++单文档如何在点关闭按钮时出现提示框,必须是在窗口关闭前出现的主要内容,如果未能解决你的问题,请参考以下文章

plsql登陆时出现空白提示框

增加输入框的宽度?删除单击按钮或输入框时出现的黑色轮廓?

编写了Java GUI的一个登录框,如何实现跳转,错误时出现提示框,登陆成功切换为下一界面

在Linux系统里运行shutdown.sh命令关闭Tomcat时出现错误提示

与Google服务器通信时出现问题?

怎么解决Word转pdf时出现“PDF Maker文件遗失”的情况