I am creating an application named 'BmpViewer' in which the user can view the bitmap , copy the bitmap on the new file , save the bitmap as normal or black and white . Also a provision is to be given to view the bitmap in different modes of colours, like red, blue, green and gray.So far i have read the bmp file but i have no idea about how to display the image without using the HBITMAP. Below is my code.
Code:
BOOL CBmpInfoDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
FILE *fp;
fp = _wfopen(lpszPathName , (const wchar_t*) "r");
if(fp == NULL)
{
return FALSE;
}
m_pbmiColors = new RGBQUAD[256];
ZeroMemory(&m_bmfhFileHeader, sizeof(m_bmfhFileHeader));
fread(&m_bmfhFileHeader , sizeof(BITMAPFILEHEADER) , 1 ,fp);
fread(&m_bmiInfoHead , sizeof(BITMAPINFOHEADER) , 1 , fp);
int nNoOfPalette = pow(double(2) , double(m_bmiInfoHead.biBitCount));
if(m_bmiInfoHead.biBitCount <= 8)
{
for(int nId = 0 ; nId < nNoOfPalette ; nId++)
{
fread(&m_pbmiColors[nId].rgbBlue , sizeof(m_pbmiColors) , 1 , fp);
fread(&m_pbmiColors[nId].rgbGreen , sizeof(m_pbmiColors) , 1 , fp);
fread(&m_pbmiColors[nId].rgbRed , sizeof(m_pbmiColors) , 1 , fp);
fread(&m_pbmiColors[nId].rgbReserved , sizeof(m_pbmiColors) , 1 , fp);
}
}
int nSize = WIDTHBYTES((m_bmiInfoHead.biWidth) *
((DWORD)m_bmiInfoHead.biBitCount)) *
m_bmiInfoHead.biHeight;
m_bmBits = new BYTE[nSize];
fread(&m_bmBits , sizeof(m_bmBits) , 1 , fp);
m_bFlag = TRUE;
return TRUE;
}
