【问题标题】:GetGuiResources WIn32 API usageGetGuiResources WIn32 API 使用
【发布时间】:2014-08-18 19:53:55
【问题描述】:

我正在尝试使用GetGuiResources 来查找我的程序使用的 Gui 资源。它需要一个标志作为第二个参数。我很想知道 GR_USEROBJECTSGR_GDIOBJECTS 之间的区别。我找不到任何有关它的文档。谁能解释它们之间有什么区别?我也知道默认情况下,一次最多可以打开 10k 个 GDI 句柄。 GR_GDIOBJECTS 返回的值是否计入此 10k 限制?

【问题讨论】:

    标签: c++ winapi mfc win32gui


    【解决方案1】:

    GR_USEROBJECTS 是 User32 对象、窗口和菜单。

    GR_GDIOBJECTS 是 Gdi32 对象,例如设备上下文、字体、位图、光标、图标、画笔、钢笔、区域、调色板、元文件、路径。

    在程序中实际使用 GetGuiResources() 没有什么意义,这些值在任务管理器中很容易看到。查看 + 选择列并勾选 USER Objects 和 GDI Objects。应该有大量的网页讨论这些计数器。

    默认的 10,000 个句柄配额是每个进程。会话中所有进程创建的句柄总数有限制,后台程序is here

    【讨论】:

    • 感谢您的回答..我正在尝试找出我的应用程序中的 GDI 泄漏并使用 GetGuiResources 来监视使用情况..还有一个相关的问题..图形驱动程序是否与GDI 泄漏?即有缺陷的驱动程序会导致我的应用程序中的 GDI 泄漏吗?
    • 不,设备驱动程序永远不会出错。 GDI 泄漏是纯粹的编程错误。很常见,短于忘记使用适当的释放函数释放句柄(不止一个),一个标准的错误是忘记在销毁设备上下文之前恢复它。永远不要忽略 SelectObject() 调用的返回值,之后需要另一个 SelectObject() 调用来恢复 DC。
    • 终于查明了漏洞。这是由于未删除从GetIconInfo() 调用返回的位图句柄造成的。
    猜你喜欢
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2012-08-02
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多