Windows/MFC

비트맵 (bitmap)

aucd29 2013. 10. 2. 17:36
제가 쓰고 있는 비트맵 로드 모듈입니다.
참조하세요. 첫번째 인자는 파일이름이구여. 두번째는 그림을 받을 cbitmap이구여, 세번째는 안넣으셔도 됩니다. 비트맵 사이즈가
필요할때가 있어서 넣었는데 안넣으셔도 동작합니다.
그럼 즐프...

[code]
BOOL LoadBitmap(CString strBitmapFile, CBitmap& pbitLoad, CSize* sizeBitmap = NULL);
BOOL CSimpleBitmapDraw::LoadBitmap(CString strBitmapFile, CBitmap& pbitLoad, CSize* sizeBitmap)
{
    HANDLE hBitmapFile;
    WIN32_FIND_DATA fd;
    
    hBitmapFile = ::FindFirstFile(strBitmapFile, &fd);
    
    if(hBitmapFile == INVALID_HANDLE_VALUE)
    {
        TRACE("\n----------------------------------------------------------------------------------\n");
        TRACE("Error Position : BOOL CSimpleBitmapDraw::LoadBitmap(CString strBitmapFile, CBitmap& pbitLoad)\n");
        TRACE("Error Info : File Not Found(hBitmapFile == INVALID_HANDLE)\n");
        TRACE("----------------------------------------------------------------------------------\n");
        return FALSE;
    }
    
    if(pbitLoad.m_hObject != NULL)
    {
        pbitLoad.DeleteObject();
    }
    
    pbitLoad.m_hObject = (HBITMAP)LoadImage(NULL, strBitmapFile, IMAGE_BITMAP, 0, 0,
        LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
    
    if(pbitLoad.m_hObject == NULL)
    {
        TRACE("\n----------------------------------------------------------------------------------\n");
        TRACE("Error Position : BOOL CSimpleBitmapDraw::LoadBitmap(CString strBitmapFile, CBitmap& pbitLoad)\n");
        TRACE("Error Info : pbitLoad.m_hObject == NULL\n");
        TRACE("----------------------------------------------------------------------------------\n");
        return FALSE;
    }
    
    BITMAP    bmp;
    GetObject(pbitLoad.m_hObject, sizeof(BITMAP), &bmp);
    if(sizeBitmap != NULL)
    {
        sizeBitmap->cx = bmp.bmWidth;
        sizeBitmap->cy = bmp.bmHeight;
    }
    
    return TRUE;    
}
[/code]