DC에 텍스트 출력하고 그 DC의 비트맵을 파일로 저장하려 했습니다만....
글쓴이: mydream / 작성시간: 일, 2016/12/11 - 7:27오후
int GetClsid(const wchar_t* format, CLSID* Clsid) { UINT num, size; GetImageEncodersSize(&num, &size); ImageCodecInfo* pImgCodecsInfo=(ImageCodecInfo*)malloc(size); GetImageEncoders(num, size, pImgCodecsInfo); for(UINT i=0;i<num;++i) { if( wcscmp(format, pImgCodecsInfo[i].MimeType)==0 ) { *Clsid=pImgCodecsInfo[i].Clsid; free(pImgCodecsInfo); return i; } } free(pImgCodecsInfo); return -1; } case WM_PAINT: { PAINTSTRUCT pst; HDC mainHdc=BeginPaint(hwnd, &pst); RECT rt; GetClientRect(hwnd, &rt); TextOut(mainHdc, 0, 0, _T("rrrrgggg"), _tcslen(_T("rrrrgggg")) ); HDC hMemDC=CreateCompatibleDC(mainHdc); HBITMAP hbitmap=CreateCompatibleBitmap(hMemDC, rt.right, rt.bottom); HBITMAP hBackupBitmap=(HBITMAP)SelectObject(hMemDC, hbitmap); BitBlt(hMemDC, 0, 0, rt.right, rt.bottom, mainHdc, 0, 0, SRCCOPY); SelectObject(hMemDC, hBackupBitmap); HPALETTE hpalette=(HPALETTE)GetStockObject(DEFAULT_PALETTE); Bitmap bitmap(hbitmap, hpalette); CLSID Clsid; GetClsid(L"image/jpeg", &Clsid); bitmap.Save(L"test193jp", &Clsid);//저장이 안됩니다. 앞에서는 핸들이 모두 유효하게 나오고요. 도대체 무엇이 문제이길래 저장이 안되나요. 저장하는 방법 없을까요? DeleteObject(hbitmap); DeleteDC(hMemDC); EndPaint(hwnd, &pst); } return 0;
Forums:
gdi+ 라이브러리를 포함하지 않았군요.
라이브러리 문제였습니다. 문제가 해결되서 다행입니다.
댓글 달기