gpt4 book ai didi

c++ - 关闭应用程序时忽略 Listcontrol 'DELETE_ALL_ITEMS' 事件

转载 作者:行者123 更新时间:2023-11-30 05:42:31 25 4
gpt4 key购买 nike

我的应用程序中有一个 MFC ListControl。我有一个事件发生在“ View 中的所有项目都被删除”时。该事件抛出一条错误消息,然后关闭程序。

我的问题是,如果单击 X(关闭)按钮,也会调用该事件。

这是我的 LVN_DeleteAllItems 事件代码:

void Users::OnLvnDeleteallitemsList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
MessageBox("The SQL connection has been dropped. Please restart the application.","SQL Connection Error",MB_ICONSTOP);
exit(EXIT_FAILURE);
*pResult = 0;
}

如果应用程序正确关闭(使用右上角的按钮),是否有办法阻止事件被调用?

最佳答案

这是正常行为。当按下 X 按钮时,主窗口收到 WM_CLOSE,并开始调用其子级析构函数。当 ListView 析构函数被调用时,它的所有项目都被清除,所以你的 LVN_DeleteAllItems 通知。

(逻辑)错误是这里正在执行与被丢弃测试的数据库的连接(以及异常的 exit 过程)。这里只应执行 ListView 的附加任务。数据库连接检查应该在调用堆栈的更高层处理:一个很好的例子是代码中发送 LVM_DeleteAllItems(注意 LVM_DeleteAllItems)并触发ListView 被清空。

关于c++ - 关闭应用程序时忽略 Listcontrol 'DELETE_ALL_ITEMS' 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30606418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com