var
  t1, t2: THandle;    t1 := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, 100000, PChar('img'));
    if t1 <> 0 then
      PData := MapViewOfFile(t1, FILE_MAP_WRITE, 0, 0, 0);    copyfile('C:\test.bmp',pdata,false);
//复制c:\test.bmp到内存文件    t2 := OpenFileMapping(FILE_MAP_READ, false, PChar('img'));
    readP := MapViewOfFile(t2, FILE_MAP_READ, 0, 0, 0);
好象这样复制不行啊,请问应该怎么做?
还有就是如何内存文件显示到我的image1里面呢?谢谢

解决方案 »

  1.   

    而且我复制的文件大小在我CreateFileMapping的时候不知道,那我CreateFileMapping的声明大小怎么写呢?还有,到了OpenFileMapping的时候我怎么知道写入内存的文件的大小呢?
      

  2.   

    CopyFile的第二个参数应当是文件名,而不是FileMapping的句柄,这里应该先用TFileStream之类的打开bmp文件,然后将内容复制到一个临时内存中TFileStream.ReadBuffer(),再用CopyMemory()函数将内容复制给pData。