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+ 라이브러리를 포함하지 않았군요.
라이브러리 문제였습니다. 문제가 해결되서 다행입니다.
댓글 달기