2011-12-15 3 views
0

b/w bmp 파일이 있습니다. > 가져 오기 비트 맵 - -> 내 BMP 파일을 선택합니다 - 그것은, 크기가 * 2048 2048 나는 새로운 WTL 프로젝트는, "리소스"로 이동 만드는 8 BPP 사진입니다 제품> 그것을 MYBITMAPID ID 여기winapi를 사용하여 리소스 비트 맵 크기를 가져올 수 없습니다.

을주는 코드는 다음과 같습니다

HBITMAP bm = ::LoadBitmap(_Module.GetModuleInstance(), MAKEINTRESOURCE(MYBITMAPID)); 
ATLASSERT(bm); // <--- Ok 

SIZE sz; 
BOOL res = ::GetBitmapDimensionEx(bm, &sz); 
ATLASSERT(res); // <--- Ok 

ATLASSERT(sz.cx && sz.cy); // <--- Not Ok 

디버거는 모두 크기가

0 내가

HBITMAP bm = (HBITMAP)::LoadImage(_Module.GetModuleInstance(), MAKEINTRESOURCE(MYBITMAPID), IMAGE_BITMAP, 0, 0, LR_SHARED | LR_MONOCHROME); 

을 시도하고 같은 결과를 얻었다 말합니다.

나는 CBitmap 클래스로 크기를 얻을 수 있지만이 작업에만 winapi를 사용하고 싶습니다.

어떻게 리소스에서 비트 맵을로드 할 수 있습니까?

+1

['GetObject()'] (http://msdn.microsoft.com/en-us/library/aa932477.aspx)와'BITMAP' 구조를 사용하는 행운? –

+0

@ AndréCaron : 감사합니다. 작동하는 것 같습니다! – fogbit

+0

내 의견에 대한 답변을 작성했습니다. –

답변

2

는 WTL이 당신에게 도우미를 제공합니다

CBitmap Bitmap = AtlLoadBitmap(MYBITMAPID); 
SIZE Extent; 
BOOL bGetSizeResult = Bitmap.GetSize(Extent); 
+0

이것은 정확히 내가 원하는 것은 아니지만 어쨌든 유용한 정보에 감사드립니다! – fogbit

+0

그럼 무엇이 필요합니까? 리소스에서 비트 맵을로드하고 너비와 높이를 가져옵니다. 순수한 Win API 함수가 필요하다면 디버거를 사용하여 메소드에 들어가서'GetObject' API로 fnid를 실행하십시오. –

3

당신은 리소스 비트 맵의 ​​크기를 가져 오도록 GetObject() 기능을 사용하고 그것을 BITMAP 구조를 전달해야합니다.

관련 문제