maxps 2023-10-15 22:39 采纳率: 0%
浏览 7

duilib new界面 销毁 问题

使用 duilib NEW一个子窗口后 是否需要手动 DELETE
我的测试 NEW一个子窗口(模态)如果在类中声明 void OnFinalMessage(HWND hWnd){ delete this;}函数 调用 Close(); 后会自动执行 OnFinalMessage 并 del 类自身 如果不声明 就不会 析构 内存也不会释放!
还有一个问题 通过 OnFinalMessage 析构的类 在析构函数体内加入 MessageBoxW 他不会弹出来 而是出现一个错误

img

如果不通过 OnFinalMessage 来析构 而是用 DELETE 那就可以正常弹出哪个信息框

我又下载了网易的 duilib 测试却是正常的 而且也不需要 覆盖 OnFinalMessage 虚函数 调用 Close 直接析构了类!
着是什么原因呢!

我可能表达的不清除 刚喝点酒!

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-16 21:59
    关注

    引自强大而免费的微信小程序:皆我百晓生


    根据你的描述,问题可能是由于duilib的版本或者你的代码逻辑引起的。以下是一些可能的解释和建议:

    1. 版本问题:你下载的duilib可能是一个较新的版本,修复了该问题。你可以尝试升级你自己的duilib库,看看问题是否得到解决。

    2. 代码逻辑问题:如果你的代码逻辑有误,可能会导致子窗口没有正确析构。你需要仔细检查你的代码,确保在关闭窗口时正确删除子窗口的实例。

    3. 内存泄漏问题:根据你的描述,如果不调用OnFinalMessage并手动删除实例,内存可能不会被释放。确保在关闭窗口时正确删除子窗口实例,避免内存泄漏。

    4. 弹出错误提示的问题:在析构函数中弹出MessageBox可能不是一个良好的实践,因为析构函数被调用时,对象的一些资源可能已经被释放。你可以尝试将弹窗放在其他地方,如OnFinalMessage函数内部。

    好运!

    评论

报告相同问题?

问题事件

  • 创建了问题 10月15日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址