自定义复制粘贴,在2000,xp下没有问题,98下粘贴时报错
我的做法:
复制时先把Stream写入剪贴版,代码片断:
Data := GlobalAlloc(GMEM_MOVEABLE, msCopyCalc.Size);
try
DataPtr := GlobalLock(Data);
try
Move(msCopyCalc.Memory^, DataPtr^ , msCopyCalc.Size);
ClipBoard.Open;
try
ClipBoard.SetAsHandle(CF_Calculate, Data);
finally
Clipboard.Close
end;
finally
GlobalUnlock(Data);
end;
except
GlobalFree(Data);
raise;
end;
粘贴时代码片断:
hbuf := Clipboard.GetAsHandle(CF_Calculate);
if hbuf = 0 then Abort;
bufptr := GlobalLock(hbuf);
if bufptr = nil then Exit;
try
mstream := TMemoryStream.Create;
try
mstream.WriteBuffer(bufptr^, GlobalSize(hbuf)); //此行出错,GlobalSize(hbuf)返回值为0
mstream.Position := 0;
................
finally
mstream.Free;
end;
finally
GlobalUnlock(hbuf);
end;
该程序在win2000,xp下都没有问题,但是在98下GlobalSize(hbuf)获取的内存大小为0,不知道什么原因?哪位高手能否赐教?