Delphi GDI对象还是用户对象?

Delphi GDI对象还是用户对象?,delphi,windows-7,delphi-2009,popupmenu,Delphi,Windows 7,Delphi 2009,Popupmenu,我有一个允许用户打开多个窗口/模块的应用程序。每个模块都有自己的弹出菜单,其中一些是在创建表单时在运行时创建的,一些是在设计时创建的,我在每个模块中都有很多弹出菜单,一些是在右键单击表单时使用的,一些是在toolbutton中使用的 我的问题是,我打开了很多窗口,当我右键点击进入弹出菜单时,生成的菜单失控,我的意思是,它没有显示正确的标签。有时它会显示所有“另存为…”或我需要显示的任何其他标签。我想最简单的解释方法就是给你看菜单的截图 这是GDI/用户对象问题吗?如果是,我如何解决这个问题

我有一个允许用户打开多个窗口/模块的应用程序。每个模块都有自己的弹出菜单,其中一些是在创建表单时在运行时创建的,一些是在设计时创建的,我在每个模块中都有很多弹出菜单,一些是在右键单击表单时使用的,一些是在toolbutton中使用的

我的问题是,我打开了很多窗口,当我右键点击进入弹出菜单时,生成的菜单失控,我的意思是,它没有显示正确的标签。有时它会显示所有“另存为…”或我需要显示的任何其他标签。我想最简单的解释方法就是给你看菜单的截图


这是GDI/用户对象问题吗?如果是,我如何解决这个问题?我尝试增加我的GDI,并使用对象限制作为测试,但仍然遇到这个问题。如果我关闭一两个窗口,问题就会解决;但是,我不能要求用户限制应用程序中打开的窗口数量。在windows任务管理器中进行的检查显示,在出现此问题时,我的应用程序正在使用4312个用户对象和5570个GDI对象以及437个句柄。

请确保没有泄漏这些GDI对象中的任何一个。我怀疑这是GDI/用户对象问题。看起来更像是编码问题。有些事情处理不当。如果您的GDI/User对象用完,您将完全停止获取任何窗口。