int WINAPI GetDIBits (
hdc, // device context handle
hBitmap, // bitmap handle
yScan, // first scan line to convert
cyScans, // number of scan lines to convert
pBits, // pointer to pixel bits (out)
pInfo, // pointer to DIB information (out)
fClrUse) ; // color use flag
hdc, // device context handle
hBitmap, // bitmap handle
yScan, // first scan line to convert
cyScans, // number of scan lines to convert
pBits, // pointer to pixel bits (out)
pInfo, // pointer to DIB information (out)
fClrUse) ; // color use flag
解决方案 »
- CreateDevice失败,窗口句柄传递正常,Direct3DCreate9返回正常!
- list control将多行中的多行用命令选中
- 有没有查看各个函数运行时间的工具?谢谢
- VC6能否使用CIAMGE类啊?
- 游戏控制器属性页问题
- 如何使用vc把已经打开的网页中的文字保存起来,不要图片和别的?
- 在信息系统方面,VC有什么用呀?
- 如何改变Dialog Title 的样式!比如说,要换个样子什么的?
- OnClose()和exit(0)有什么区别?
- 如何使用VC进行“毫秒级”以下的 定时器。即(xx uS 的定时器)。。。。。。。。。。。。
- 请问是否知道有安装在掌上电脑的c++编译器
- 怎样删除CListBox中的ITEM,
实际情况:Delphi为主程序,本函数负责接收句柄,处理图象,返回结果,现在发现传入的HBITMAP句柄通过函数返回后与传入的句柄不一致,不知原因何在?(Delphi传入的HBITMAP应该没问题)
部分代码:
HBITMAP IMAGEDEALING(HBITMAP bmp)
{
if bmp return bmp;
return NULL;
}
主程序(Delphi)部分代码
//导出的函数格式,不多写了
Function imagedealing(pBmp: hBitmap): smallint;
//
Procedure TForm1.Button1Click(Sender: TObject);
var
H1:HBITMAP;
PC:PCHAR;
STR:STRING;
i:Smallint;
begin
If opendialog1.Execute Then
Begin
STR:=opendialog1.FileName;
PC:=PCHAR(STR);
H1 := LOADIMAGE(APPLICATION.Handle,PC,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
i:=IMAGEDEALING(h3,len);
END;
END; 动态连接库
int ImageDealing(HBITMAP &hdib)
{
BITMAPFILEHEADER hdr;
LPBITMAPINFOHEADER lpbi;
LPCTSTR szfile;
szfile="D:\\asdfg.bmp"; //我随便写的
if (!hdib)
return -1;
CFile file;
if( !file.Open( szfile, CFile::modeWrite|CFile::modeCreate) )
return -2;
lpbi = (LPBITMAPINFOHEADER)hdib;
int ncolors = 1 << lpbi->biBitCount;
hdr.bfType = ((WORD)('M'<<8)|'B');
hdr.bfSize =GlobalSize(hdib) + sizeof(hdr);
hdr.bfReserved1 =0;
hdr.bfReserved2=0;
hdr.bfOffBits=(DWORD)(sizeof(hdr) + lpbi->biSize +ncolors * sizeof(RGBQUAD));
//return GlobalSize(hdib);如果此时返回则总是0
file.Write(&hdr, sizeof(hdr));
file.Write(lpbi,GlobalSize(hdib));
file.Close;
return 100;
}不知为什么每次只能得到14字节的文件,位图的数据是中写不进去,我认为是HBITMAP作为参数传递发生了错误,但现在不知该如何做才能实现?
做此动态库的目的在于通过HBITMAP读取位图数据,进一步实现其他的处理。请各位高手指教!