例如:
HANDLE hDib = GlobalAlloc(GMEM_FIXED,dwLen);
LPBITMAPINFOHEDER a;
a=(LPBITMAPINFOHEDER)hDib;//此句可否成立? 什么意思嘛
注意:其中dwLen的长度大于BITMAPINFOHEDER类型的结构的长度。
HANDLE hDib = GlobalAlloc(GMEM_FIXED,dwLen);
LPBITMAPINFOHEDER a;
a=(LPBITMAPINFOHEDER)hDib;//此句可否成立? 什么意思嘛
注意:其中dwLen的长度大于BITMAPINFOHEDER类型的结构的长度。
解决方案 »
- 谁给我一个signcode.exe的GUI版的?
- 内存泄漏的自动退出问题
- 传递命令行参数和char转换为结构内存的存放
- 请教高手关于c/s聊天室的问题
- 急急急,文本文件排序问题!?
- 关于消息映射中的{{// //}}AFX_MSG
- 我要做一个监控客户端软件运行的程序,给些思路
- 多线程问题,在线等待,分不够可以再加!!!!!!!!!1
- 我的硬盘不小心被格式化了,请问我如何恢复????(急急急急急急急急急急急急急急急急急急急急急急急急)
- 来看看我的程序,有源码下载的啊
- 我做了一个数据库程序,不能在不装vc++的机器上运行!急救!
- 算法问题,大家共同探讨:位图中有象地图一样的大大小小的不规则的线条,不规则的排列。如何读取规定宽度的线条,让这一规定宽度的线条单
BITMAPINFOHEDER *pBmp = (BITMAPINFOHEDER *)pAlloc;为什么不可以呢?
楼主对句柄和指针的理解不正确
建议你看看上面的贴子
有些不能转化,比如窗口句柄、菜单句柄等
关键是看API定义说明
LPBITMAPINFOHEDER a;
a=(LPBITMAPINFOHEDER)hDib;//此句可否成立? 什么意思嘛
注意:其中dwLen的长度大于BITMAPINFOHEDER类型的结构的长度。
LPBYTE lpBuffer = new BYTE[dwLen];
LPBITMAPINFOHEDER a;
a=(LPBITMAPINFOHEDER)lpBuffer;
...
delete[] lpBuffer;
这样是正常的使用方法如果你一定要你那样做,还要dwLen大于sizeof(BITMAPINFOHEDER)也可以,只是多出的部分一直都没有用上而已,不过只要你GlobalFree(hDib)就不会泄漏!
原代码:
HANDLE hDib = GlobalAlloc(GMEM_FIXED,dwLen);
LPBITMAPINFOHEDER a;
a=(LPBITMAPINFOHEDER)hDib假如dwLen-sizeof(BITMAPINFOHEADER)中的部分原来已经写入了数据(在分配完空间后就写入数据)。那下面的语句是否还成立?
char *a=(char*)a+sizeof(BITMAPINFOHEADER)//我想让起指向BITMAPINFOHEADER后的内存,而且还想访问这段内存中的内容(因为在强制转化以前,这一部分是有数据的)。这样是否可行?