资源 | 分配函数 | 清除函数 | 需要手动清除 |
Accelerators | LoadAccelerators | N/A | No |
Atoms | GlobalAddAtom | GlobalFreeAtom | Yes |
Bitmaps | CreateBitmap | DeleteObject | Yes * |
| CreateBitmapIndirect | DeleteObject | Yes* |
| CreateCompatibleBitmap | DeleteObject | Yes* |
| CreateDIBitmap | DeleteObject | Yes* |
| CreateDiscardableBitmap | DeleteObject | Yes* |
| LoadBitmap | DeleteObject | Yes |
| | | |
Brushes | CreateBrushIndirect | DeleteObject | Yes |
| CreateDIBPatternBrush | DeleteObject | Yes |
| CreateHatchBrush | DeleteObject | Yes |
| CreatePatternBrush | DeleteObject | Yes |
| CreateSolidBrush | DeleteObject | Yes |
Carets | CreateCaret | DestroyCaret | No# |
Clipboard | OpenClipboard | CloseClipboard | Yes |
CommsPorts | OpenComm | CloseComm | Yes |
Cursor | CreateCursor | DestroyCursor | Yes |
| LoadCursor | N/A | No |
DC | CreateDC | DeleteDC | Yes |
| CreateCompatibleDC | DeleteDC | Yes@ |
| GetDC | ReleaseDC | Yes |
| GetWindowDC | ReleaseDC | Yes |
| BeginPaint | EndPaint | Yes |
DialogBox | CreateDialog | DestroyWindow | No |
| CreateDialogIndirect | DestroyWindow | No |
| CreateDialogIndirectParam | DestroyWindow | No |
| CreateDialogParam | DestroyWindow | No |
File | OpenFile | _lclose | No |
Fonts | CreateFont | DeleteObject | Yes |
| CreateFontIndirect | DeleteObject | Yes |
| AddFontResource | RemoveFontResource | Yes |
GDIStockObj | GetStockObject | N/A | No& |
Hook | SetWindowsHook | UnhookWindowsHook | Yes |
IC | CreateIC | DeleteDC | Yes |
Icon | CreateIcon | DestroyIcon | Yes |
| LoadIcon | N/A | No |
Library | LoadLibrary | FreeLibrary | Yes |
Memory | AllocDStoCSAlias | FreeSelector | Yes |
| AllocSelector | FreeSelector | Yes |
| GlobalAlloc | GlobalFree | No |
| GlobalDOSAlloc | GlobalDOSFr | No |
| GlobalFix | GlobalUnfix | No |
| GlobalLock | GlobalUnlock | No |
| GlobalPageLock | GlobalPageUnlock | No |
| GlobalRealloc | GlobalFree | No |
| GlobalWire | GlobalUnwire | No |
| LocalAlloc | LocalFree | No |
| LocalLock | LocalUnlock | No |
| LocalRealloc | LocalFree | No |
Menu | CreateMenu | DestroyMenu | No% |
| CreatePopupMenu | DestroyMenu | No% |
| LoadMenu | DestroyMenu | No% |
| LoadMenuIndirect | DestroyMenu | No% |
| GetSystemMenu | N/A | No |
MetaFile | CreateMetaFile | DeleteMetaFile | Yes |
Palette | CreatePalette | DeleteObject | Yes |
Pen | CreatePen | DeleteObject | Yes |
| CreatePenIndirect | DeleteObject | Yes |
Regions | CreateEllipticRgn | DeleteObject | Yes |
| CreateEllipticRgnIndirect | DeleteObject | Yes |
| CreatePolygonRgn | DeleteObject | Yes |
| CreatePolyPolygonRgn | DeleteObject | Yes |
| CreateRectRgn | DeleteObject | Yes |
| CreateRectRgnIndirect | DeleteObject | Yes |
| CreateRoundRectRgn | DeleteObject | Yes |
Resource | AllocResource | FreeResource | No |
| FindResource | N/A | No |
| LoadResource | FreeResource | No |
| LockResource | UnlockResource | No |
Sound | OpenSound | CloseSound | Yes |
String | LoadString | N/A | No |
Thunk | MakeProcInstance | FreeProcInstance | No |
Timer | SetTimer | KillTimer | No |
Window | CreateWindow | DestroyWindow | No |
| CreateWindowEx | DestroyWindow | No |
从CGdiObject类派生的类如CFont CBrush,析构时会自动DeleteObject。但是在销毁对象之前,要先把对象从DC中选出(否则DeleteObject会失败)。
*位图资源在释放的时候必须从选中它的DC中脱离。
%当菜单失去焦点和窗口不再关联或者应用程序结束的时候占用资源必须被释放。
@DC被释放前必须和它关联(选中)的位图取消联系
#如果脱字符指定了位图,位图必须被释放
&对DeleteObject的调用不会销毁常规的StockObject(系统内定资源)