- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据 MSDN
The DeleteObject function deletes a logical pen, brush, font, bitmap, region, or palette, freeing all system resources associated with the object. After the object is deleted, the specified handle is no longer valid.
所以一个人(我自己)会认为一旦执行了 DeleteObject,HANDLE 就不再有效了。但是,一旦我在使用其他 WinAPI 调用保存对象之前删除对象,由::GetObject() 检索到的对象会发生什么情况?
HFONT hFont = reinterpret_cast<HFONT>(::SendMessage(hwndCtrl, WM_GETFONT, 0, 0));
if (nullptr == hFont)
{
LOG_ERROR(L"Invalid font specified");
return false;
}
LOGFONT font = { 0 };
if (0 == ::GetObject(hFont, sizeof(font), &font))
{
LOG_ERROR(L"Failed getting font");
return false;
}
font.lfHeight = nSize;
::DeleteObject(hFont);
HFONT hFontEx = ::CreateFontIndirect(&font);
LPARAM lparam = MAKELPARAM(TRUE, 0);
WPARAM wparam = (WPARAM)(hFontEx);
SendMessage(hwndCtrl, WM_SETFONT, wparam, lparam);
如以下示例所示,如果我决定删除我的 HFONT,在通过 SendMessage 发送新消息之前,我会检索到一些意想不到的结果,其他控件的字体也会发生变化,就好像我生成了某种句柄泄漏。
最佳答案
So one(myself) would think that once DeleteObject is executed, the HANDLE is no longer valid. but what happens to the objects retrieved by ::GetObject() once i delete the object before saving them with other WinAPI calls?
使用 GetObject 可以获得对象的描述,而不是新对象。句柄删除后保持不变。
As in the following example, if i decide to delete my HFONT, before sending the new message via SendMessage, i'd retrieve some unexpected results, where other controls gets their font changed, as if i'd generated some kind of a handle leak.
如果你想发送一条删除了 HFONT 的消息,我想如果你用任何其他垃圾发送它,结果将是相同的。
关于c++ - GDI::DeleteObject 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31850200/
我正在检查一些遗留的 Win32/MFC 项目。 我发现了以下(伪代码): HDC hDC = ::CreateCompatibleDC(hDCWnd); HANDLE hFileMap = ::Cr
我在核心数据中具有以下实体,如下图所示。 所有关系的删除规则是层叠。 问题: 每当我删除第2级的任何一个实体对象并执行[context save:&error];时,表Entity1中的所有其他对象都
我在表格 View 中使用核心数据模型时遇到问题。在 TableView 的 commitEditingStyle: delegate 方法中,我首先删除模型的对象,然后删除 TableView 中的
根据 MSDN The DeleteObject function deletes a logical pen, brush, font, bitmap, region, or palette, fr
代码如下: [[NSManagedObjectContext MR_defaultContext] deleteObject:[self.fetchedResultsController object
使用 Entity Framework,我尝试像这样从我的对象上下文中删除一些对象: foreach (var item in context.Items.Where( i => i.Value >
我有以下模型,如图所示。 alt text http://img521.imageshack.us/img521/9741/schermata20100224a12251.png 我的应用程序需要刷新
我的应用程序的一些用户在使用我的 TableView 时遇到了崩溃,它使用了 NSFetchedResultsController从 Core Data 获取数据源。我的 View Controlle
我想知道,在以下情况下我需要调用 DeleteObject 吗? CFont* oldFont = label.GetFont(); LOGFONT oldLogFont; oldFont->GetL
我一直在尝试使用 TSqlModel 方法 DeleteObjects 以编程方式从数据库项目中删除某些用户。问题是当我调用该方法时,用户仍留在模型中。我想知道我是否正确调用了该方法。这是我正在做的事
要从核心数据中删除一个对象o,是否可以使用该对象自己对托管对象上下文managedObjectContext的引用? [o.managedObjectContext deleteObject:o];
我正在使用 C++ 开发 Windows 应用程序。我使用 LoadImage 将 bmp 文件加载到 DC,它正确显示。但是,当我调用 DeleteObject 时,内存似乎并没有被释放。 (我使用
我无法正确删除 HKCorrelation 对象。如果我删除它,我最终会得到每个实体的单独条目,以及原始的相关性。此外,尝试手动清理每个样本也会失败。我没有做任何花哨的事情。 . .只需调用:HKHe
Windows 中是否存在某种 NULL 句柄?如果我通过 CreateCompatibleBitmap() 创建一个 bmp 并通过 DeleteObject() 删除它并且想要使用 move 语义
我正在使用通过 composer 安装的适用于 PHP 的 AWS 开发工具包版本 2.4.7。从 S3 存储桶中删除文件后,即使文件实际上已从 S3 中删除,响应对象中的 DeleteMarker
这是我的代码,我不知道我做错了什么。我正在按照文档中的说明进行操作 http://realm.io/docs/cocoa/0.91.1/#deleting-objects // Dele
使用 EF 删除对象(及其子对象)的最佳方法是什么?我只想传递要删除的对象的 ID,并让 EF 处理删除其依赖数据(外键数据)。是否必须先根据 id 检索对象,然后调用“DeleteObject”?
假设我有两个模型,Book 和 Page: class Book(models.Model): pass class Page(models.Model): book = models
我正在从我的 fetchResultsController 加载一个 User 对象,从所述 User 获取一堆相关的 Sites 对象,将它们放入一个数组中,排序,然后显示在 UITableView
当尝试使用对象向服务器发送 DELETE 请求时,如果您像这样填充 success block ,RestKit 会尝试引用已释放的对象: [[APIClient objectManager] del
我是一名优秀的程序员,十分优秀!