在对话框中读取图片。
void CModifyDlg::OnBnClickedModify()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = GetDC();
long* m_pBmpDataSrc;
long* m_pBmpDataDes;
long* p_tmp;
BITMAPINFO *m_pbmpinfo,m_bmp;
HBITMAP hbmp=(HBITMAP)LoadImage(::AfxGetResourceHandle(),"D:\\shufa.bmp",
IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR|LR_LOADFROMFILE);
m_bmp.bmiHeader.biSize=sizeof(m_bmp.bmiHeader);
m_bmp.bmiHeader.biBitCount=0;
int bmpWidth;
int bmpHeight;
GetDIBits(pDC->GetSafeHdc(),hbmp,0,1,NULL,&m_bmp,DIB_RGB_COLORS);
bmpWidth=m_bmp.bmiHeader.biWidth;
bmpHeight=m_bmp.bmiHeader.biHeight;
p_tmp=(long*)malloc(bmpWidth*bmpHeight*m_bmp.bmiHeader.biBitCount+sizeof(BITMAPINFO));
m_pBmpDataDes=(long*)malloc(bmpWidth*bmpHeight*m_bmp.bmiHeader.biBitCount);
m_pbmpinfo=(BITMAPINFO*)p_tmp;
m_pBmpDataSrc=p_tmp+sizeof(BITMAPINFO);//m_pBmpDataSrc因为是真彩色图,所以已经指向了数据区
memcpy(p_tmp,(const void*)&m_bmp,sizeof(BITMAPINFOHEADER));
GetDIBits(pDC->GetSafeHdc(),hbmp,0,m_bmp.bmiHeader.biHeight,m_pBmpDataSrc,
m_pbmpinfo,DIB_RGB_COLORS);
BITMAPINFOHEADER RGB32BITSBITMAPINFO=
{sizeof(BITMAPINFOHEADER),m_bmp.bmiHeader.biWidth,m_bmp.bmiHeader.biHeight,
1,32,BI_RGB,0,0,0,0};
SetDIBitsToDevice(pDC->GetSafeHdc(),0,0,bmpWidth,
bmpHeight,0,0,0,bmpHeight,
m_pBmpDataDes,(LPBITMAPINFO)&RGB32BITSBITMAPINFO,DIB_RGB_COLORS);
}
