【发布时间】:2014-08-18 19:53:55
【问题描述】:
我正在尝试使用GetGuiResources 来查找我的程序使用的 Gui 资源。它需要一个标志作为第二个参数。我很想知道 GR_USEROBJECTS 和 GR_GDIOBJECTS 之间的区别。我找不到任何有关它的文档。谁能解释它们之间有什么区别?我也知道默认情况下,一次最多可以打开 10k 个 GDI 句柄。 GR_GDIOBJECTS 返回的值是否计入此 10k 限制?
【问题讨论】:
我正在尝试使用GetGuiResources 来查找我的程序使用的 Gui 资源。它需要一个标志作为第二个参数。我很想知道 GR_USEROBJECTS 和 GR_GDIOBJECTS 之间的区别。我找不到任何有关它的文档。谁能解释它们之间有什么区别?我也知道默认情况下,一次最多可以打开 10k 个 GDI 句柄。 GR_GDIOBJECTS 返回的值是否计入此 10k 限制?
【问题讨论】:
GR_USEROBJECTS 是 User32 对象、窗口和菜单。
GR_GDIOBJECTS 是 Gdi32 对象,例如设备上下文、字体、位图、光标、图标、画笔、钢笔、区域、调色板、元文件、路径。
在程序中实际使用 GetGuiResources() 没有什么意义,这些值在任务管理器中很容易看到。查看 + 选择列并勾选 USER Objects 和 GDI Objects。应该有大量的网页讨论这些计数器。
默认的 10,000 个句柄配额是每个进程。会话中所有进程创建的句柄总数有限制,后台程序is here。
【讨论】:
GetIconInfo() 调用返回的位图句柄造成的。