GlobalLock在使用之前是否一定要加GlobalAlloc?高手赐教!

GlobalLock在使用之前是否一定要加GlobalAlloc??????在线等高手赐教!!
GlobalLock在使用之前是否一定要加GlobalAlloc??????在线等高手赐教!!
在一段程序当中有这样一段代码
lpBI   =   (LPBITMAPINFOHEADER)   ::GlobalLock((HGLOBAL)   hDib);
hDib是一幅位图的句柄,它的返回值强制转换成了LPBITMAPINFOHEADER的指针,这样可以吗???   如果将其强制转换成LPBITMAPFILEHEADER,是否也可以呢????

深表感谢!!!!!!!!在线等!!!!!!!

------解决方案--------------------
因为Windows中句柄指向的内存块并不是固定的,所以句柄不能作为指针使用,而只是一个索引值。锁住句柄,就是使句柄指向的内存块暂时不被内存控制程序移动,此时可以获得一个指向内存的指针,来进行操作。理解为new的功能,基本也差不多。
------解决方案--------------------
传递给GlobalLock的HANDLE已在其他地方(第三方库或系统)GlobalAlloc,你只需按调用规则,用GlobalLock获得可操作的指针就可以了。

在DDE和使用Clipborad的情况下很常见。