VC资源分配、释放表
VC资源分配、释放表
资源 |
分配函数 |
清除函数 |
需要手动清除 |
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 |
Comms Ports |
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 |
|
Load Resource |
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 |
* 位图资源在释放的时候必须从选中它的DC中脱离。
% 当菜单失去焦点和窗口不再关联或者应用程序结束的时候占用资源必须被释放。
@ DC被释放前必须和它关联(选中)的位图取消联系
# 如果脱字符指定了位图,位图必须被释放
& 对DeleteObject的调用不会销毁常规的StockObject(系统内定资源)