不過在Win32下,這個數據和Global記憶體分配函式完全沒有用了,保留下來只是為了兼容。而且在Win32下,HGLOBAL就是一個void *的指針,可以不用GlobalLock直接使用來訪問記憶體。
HGLOBAL 這個是windows 定義的數據類型。
這是個句柄,標示一個記憶體區,不是指針。在對記憶體區的操作中,一般用指針,從這個handle可以得到指針,然後就可以對記憶體區進行操作了。
GlobalUnlock函式解除鎖定的記憶體塊,使指向該記憶體塊的指針無效,GlobalLock鎖定的記憶體,一定要用GlobalUnlock解鎖
--------------------------------------------------
eg: 開一個200byte的記憶體區,在裡面賦值
HGLOBAL hMemHandle=::GlobalAlloc(GHND,50*sizeof(int)); //得到handle
int *p=(int *)::GlobalLock(hMemHandle); //從handle得到指針
for(int k=0;k<50;k++) *(p+k)=k;
char s[128];
sprintf(s,"testing:p[49]=%i",p[49]);
::GlobalUnlock(hMemHandle); //
::GlobalFree(p);
AfxMessageBox(s);
開闢一個新的記憶體區域,用一指針指向此地址區域,通過指針完成對記憶體區域的操作。記住用指針指向的時候要 ::GlobalLock(), 操作完成後,::GlobalUnlock()此記憶體區域的句柄,然後,::GlobalFree()掉此指針。
相關詞條
-
CSharedFile
共享。 GlobalAlloc 返回一個HGLOBAL 句柄,而不是像malloc那樣返回一個記憶體指針。在某些應用程式中需要HGLOBAL句柄。例如,要將數據放入剪貼簿中,你就需要一個HGLOBAL句柄...
-
CreateStreamOnHGlobal
CreateStreamOnHGlobal( HGLOBAL hGlobal... hGlobal:由GlobalAlloc函式分配的記憶體句柄...hGlobal。如果該參數設定為TRUE,則hGlobal最終會自動釋放...
-
CLongBinary
)並在m_hData數據中存儲HGLOBAL的句柄。而且,RFX...在Windows HGLOBAL句柄中的數據。 當記錄集遭到銷毀,嵌入的CLongBinary對象也遭到銷毀,並且它的析構函式釋放了HGLOBAL的數據...
-
COleDataObject
HGLOBAL或STGMEDIUM結構。 #include...::GetGlobalData HGLOBAL GetGlobalData...HGLOBAL中。 要了解更多的信息,請參閱“OLE 2程式設計師參考(卷...
-
COleDataSource
CacheGlobalData使用HGLOBAL以指定方式提供數據...OnRenderGlobalData作為延遲提供數據的一部分存取數據到HGLOBAL中...
-
LoadResouare
的HGLOBAL型,而不是因為函式返回一個全局存儲塊句柄。不要傳遞這個句柄給函式...
-
LoadResource
函式功能:該函式裝載指定資源到全局存儲器。 函式原型; HGLOBAL LoadResource(HMODULE hModule...的HGLOBAL型,而不是因為函式返回一個全局存儲塊句柄。不要傳遞這個句柄給函式...
-
直方圖均衡化
((HGLOBAL) hDIB);// 找到DIB圖像象素起始位置並返回指向DIB...
基本思想 示例程式