www.mxdraw.com
内容索引主面
前一个向上下一个
_DMxDrawX::WriteBinStream 方法

把控件图形变成二进制流输出

IDL
[id(115), helpstring("method WriteBinStream")]
VARIANT_BOOL WriteBinStream(VARIANT* pVarBinArray, BSTR sPassword, LONG iVersion);
参数 
说明 
VARIANT* pVarBinArray 
输出二进制数组.是个byte数组 
BSTR sPassword 
数据密码,没有密码,传空字符串 
LONG iVersion 
输出的文件版本,如果保存CAD 2002图纸,可以传 23 

成功返回True

例如:VB调用例程

            Dim aryData     As Variant
            MxDrawX1.WriteBinStream aryData, "", 23

            Dim ln As Long
            ln = UBound(aryData)

            ReDim sbyte(0 To ln) As Byte

            Dim str$
            For i = 0 To ln
                sbyte(i) = aryData(i)
                'str = str & " " & (aryData(i))
            Next

            'MsgBox str

            'MxDrawX1.ReadBinStream aryData, "", 16777215

            MxDrawX1.ReadBinStream sbyte, "", 16777215

例如:Delphi代码

            function OleToMStream(OV:OleVariant): TMemoryStream;
            var
              Data: PByteArray;
              Size: integer;
            beginResult:=TMemoryStream.Create;
                     try
                       Size:=VarArrayHighBound(OV,1)-VarArrayLowBound(OV,1)+1;
                       Data:=VarArrayLock(OV);
                         try
                           Result.Position:=0;
                           Result.WriteBuffer(Data^,Size);
                         finally
                           VarArrayUnlock(OV);
                         end;
                     except
                       Result.Free;Result:=nil;
                     end;
                   end;
 
                   function MStreamToOle(Strm:TMemoryStream): OleVariant;
                   var
                     Data: PByteArray;
                   beginResult:= VarArrayCreate([0,   Strm.Size   -   1],   varByte);
                     Data:=   VarArrayLock(Result);
                     try
                         Strm.Position   :=   0;
                         Strm.ReadBuffer(Data^,   Strm.Size);
                     finally
                         VarArrayUnlock(Result);
                     end;
                   end;
 
                   procedure TForm2.Button6Click(Sender: TObject);
                   var
                     aryData:OleVariant;
                     memStream : TMemoryStream ;
                     aryReadData:     OleVariant;
                   begin
 
                      // 写到内存流
                      MxDrawX1.WriteBinStream(aryData,'',23);
                      memStream := OleToMStream(aryData);
 
                      // 从内存流加载
                      aryReadData := MStreamToOle( memStream);
                      MxDrawX1.ReadBinStream(aryData,'',23);
 
                   end;

 

例如: VC+COM

                _variant_t data;  
                m_ocx.WriteBinStream(&data,_T(""),23);
                m_ocx.ReadBinStream(data,_T(""),16777215);
Copyright (c) 2010. All rights reserved.
你认为该帮助怎么样? 发送反馈信息!