gpt4 book ai didi

c++ - 使用智能指针在窗口消息中将对象作为 WPARAM 传递

转载 作者:行者123 更新时间:2023-11-30 01:26:02 26 4
gpt4 key购买 nike

我正在寻找一种将对象(在我的例子中为 vector<long>)作为 WPARAM 传递的方法采用 C++11 风格。

我发现的教程使用了 C 风格的转换或 reinterpret_cast传递一个指向对象的指针。这就需要消息的接收者在接收到对象后妥善处理。

有没有办法使用 unique_ptr 传递对象? ?接收者可以完全拥有该对象。

最佳答案

如果您使用 Windows 消息传递指向对象的指针,那么您需要确保两件事:

  1. 在处理完消息之前源不销毁对象
  2. 目的地在必要时正确销毁对象

如果您知道消息肯定会被处理,那么您可以在发送消息时在源 unique_ptr 上调用 .release(),然后取得所有权处理程序与另一个 unique_ptr

问题在于确保在未处理消息的情况下清理它。这很棘手,因为通常没有一种干净的方法来检查,除非您使用 SendMessage(而不是 PostMessage)并使用返回值来传达参数已被声明.

关于c++ - 使用智能指针在窗口消息中将对象作为 WPARAM 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290912/

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