void ? SaveBmp(HBITMAP ? hbmp, ? LPCTSTR ? sIconFileName)???
{ ?
? if(hbmp==NULL ? || ? sIconFileName==NULL) ?
? return; ?
? //warning: ? this ? code ? snippet ? is ? not ? bullet ? proof. ?
? //do ? error ? check ? by ? yourself ? [masterz] ?
? PICTDESC ? picdesc; ?
? picdesc.cbSizeofstruct ? = ? sizeof(PICTDESC); ?
? picdesc.picType ? = ? PICTYPE_BITMAP ? ; ? ? ? ? ?
? picdesc.bmp.hpal ? = ? NULL; ?
? picdesc.bmp.hbitmap ? = ? hbmp; ?
? IPicture* ? pPicture=NULL; ?
? OleCreatePictureIndirect(&picdesc, ? IID_IPicture, ? TRUE,(VOID**)&pPicture); ?
? LPSTREAM ? pStream; ?
? CreateStreamOnHGlobal(NULL,TRUE,&pStream); ?
? LONG ? size; ?
? HRESULT ? hr=pPicture->SaveAsFile(pStream,TRUE,&size); ?
? char ? pathbuf[1024]; ?
? strcpy(pathbuf,sIconFileName); ?
? CFile ? iconfile; ?
? iconfile.Open(pathbuf, ? CFile::modeCreate|CFile::modeWrite); ?
? LARGE_INTEGER ? li; ?
? li.HighPart ? =0; ?
? li.LowPart ? =0; ?
? ULARGE_INTEGER ? ulnewpos; ?
? pStream->Seek( ? li,STREAM_SEEK_SET,&ulnewpos); ?
? ULONG ? uReadCount ? = ? 1; ?
? while(uReadCount>0) ?
? { ?
? ?
? pStream->Read(pathbuf,sizeof(pathbuf),&uReadCount); ?
? if(uReadCount>0) ?
? iconfile.Write(pathbuf,uReadCount); ?
? } ?
? pStream->Release(); ?
? iconfile.Close();???
}???
????
void ? CsaveviewView::OnSaveview()???
{ ?
? CClientDC ? dc(this); ?
? CDC ? dcmem; ?
? dcmem.CreateCompatibleDC(&dc); ?
? CBitmap ? bmp; ?
? CRect ? rc; ?
? GetClientRect(&rc); ?
? bmp.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height()); ?
? dcmem.SelectObject(&bmp); ?
? dcmem.BitBlt(0,0,rc.Width(),rc.Height(),&dc,0,0,SRCCOPY); ?
? SaveBmp(bmp,"c:\\a.bmp");???
?}
posted on 2007-02-23 21:08
飛鳥 閱讀(443)
評論(0) 編輯 收藏 所屬分類:
VC