【问题标题】:How to pass a windows handle correctly?如何正确传递 Windows 句柄?
【发布时间】:2012-11-18 16:46:06
【问题描述】:

我不知道把手后面是什么,也不知道它是否是一个大物体。一般来说,我在我的申请中通过了很多,因此如果你能告诉我应该如何通过它们会很好。按值、常量引用甚至指针?

编辑: 我应该提到我谈论的是位图句柄。也许这会有所作为。

好的,MSDN 有自己的页面,仅适用于大写窗口类型。

【问题讨论】:

  • 据我了解,Handle 本身就是一种指针,但在您的程序中,它是一个整数,用于标识 Windows 中的某个对象。因此 WinAPI 不使用对象,而是使用“指向对象的指针”=句柄,指向 Windows 中的对象(在 API 后面)。因此,按价值传递它们应该是完全可以的。复制句柄不会复制它后面的对象。如果你想复制句柄后面的对象,我认为 API 应该提供这样做的函数。
  • 好的,谢谢。因为它是某种指针,所以我猜不需要通过引用传递它们,是吗?
  • 是的。但是你应该至少再等一个答案,因为我不是 100% 确定 ;)
  • @DevNoob Leemes 是对的,但是如果您想检查一下自己,尝试编写一个输出 sizeof(HANDLE) 的程序,您会发现它们非常小。

标签: c++ windows winapi handle


【解决方案1】:

您可以将位图句柄(HBITMAP)作为 ID 查看。因此,按价值传递它们。它们是指针大小的,因此 HBITMAP 的值传递没有性能问题。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 2015-05-10
    相关资源
    最近更新 更多