1

据我所知,HANDLE 只是一个数字,指的是某种“系统资源表”。这个句柄 const 正确吗?我猜不是因为它只是用来访问像数组索引这样的表。位图示例:尽管 HBITMAP 被声明为 const,但我可以更改位图的内容吗?

4

1 回答 1

3

HANDLE 是 (AFAIR) int 的 typedef,因此 const HBITMAP 与 const int 相同。

从这个意义上说,即使位图的句柄是 const,您也可以更改位图的内容,因为 const 指的是句柄而不是实际的位图(将其视为指向变量类的 const 指针。)

但:

无论如何,您的问题没有实际意义,因为:

  • 句柄是 Win32 API 的一个特性,它是 C api 而不是 C++(在 C 获得 const 之前创建)。
  • 无论如何,您不能直接更改位图(或由句柄表示的任何其他“对象”)。句柄是对 Win32 结构的不透明引用,只能通过用于处理(没有双关语)“对象”的适当 Win32 API 调用来操作。

我将“对象”放在引号中,因为句柄指的是概念对象(概念的软件表示)而不是实际的 C++ 对象,再次因为 Win32 是 C API。

于 2012-12-11T22:56:24.543 回答