关闭应用程序时忽略列表控件'DELETE_ALL_ITEMS'事件



我有一个MFC列表控制在我的应用程序。我有一个事件,当"视图中的所有项都被删除"时发生。该事件抛出错误消息,然后关闭程序。

我的问题是,如果单击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通知。

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

相关内容

  • 没有找到相关文章

最新更新