C++Builder相談室

このエントリーをはてなブックマークに追加
452447
一応出来た・・・けど結局コピペの塊。逝ってきます。
{
 IPicture* iPicture = NULL;
 AnsiString File = "c:\\2ch\\giko.gif";
 HANDLE hFile = CreateFile(File.c_str(),GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
 DWORD dwFileSize = GetFileSize(hFile, NULL);
 LPVOID pvData = NULL;
 HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
 pvData = GlobalLock(hGlobal);

 DWORD dwBytesRead = 0;
 BOOL bRead = ReadFile(hFile,pvData,dwFileSize,&dwBytesRead,NULL);
 GlobalUnlock(hGlobal);
 CloseHandle(hFile);

 IStream* srm = NULL;
 HRESULT hr = CreateStreamOnHGlobal(hGlobal,TRUE,&srm);

 hr = ::OleLoadPicture(srm,0,FALSE,IID_IPicture,(void**)&iPicture);

 long hmWidth,hmHeight;
 iPicture->get_Width (&hmWidth);
 iPicture->get_Height(&hmHeight);

 RECT rc;
 rc = Image1->Canvas->ClipRect;
 int mona = 26.46;
 iPicture->Render(Image1->Canvas->Handle,0,0,hmWidth/mona,hmHeight/mona,0,hmHeight,hmWidth,-hmHeight,&rc);
 srm->Release();
}
肝はTCanvasのハンドルがそのままHDCだってのに気づけたことと、mona=26.46かな(藁
TPictureAdapterやTOleStream調べてたらすげー時間くっちまったよ・・・けどまぁパスカルの読み方がなんとなく分かっただけ収穫だな

すげーながくてごめんな。んぢゃ一人芝居はここまでってことで。