关于对话框中显示bmp图片的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 23:17:01
void CMy2Dlg::OnButton1()
{
int nFileLen,dwDibSize;// TODO: Add your control notification handler code here
{
CFileDialog dlg(TRUE, "*.BMP", NULL, NULL,"位图文件(*.BMP)|*.bmp;*.BMP|");
CString strFileName;
CFile file;
if (dlg.DoModal() == IDOK)
{
strFileName = dlg.GetPathName();

if(!file.Open(strFileName, CFile::modeRead))
return;

BITMAPFILEHEADER bmfHeader;

nFileLen = file.GetLength();
dwDibSize = nFileLen - sizeof(BITMAPFILEHEADER); //dwDibSize为BMP总大小减去BMP文件头的长度

if (m_pDib != NULL)
{
delete[] m_pDib;
m_pDib = NULL;
}

m_pDib = new unsigned char[dwDibSize]; // 为DIB位图分配内存

if (file.Read((LPSTR)&bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader)) //读文件头
return;

if (bmfHeader.bfType != ((WORD)('M' <<8) | 'B')) //判断是否是BMP位图

不改变大小要使用 BitBlt 来绘制.定位信息,通过BitBlt的几个绘制启动参数控制

比如鼠标拖动图片的偏移.就是绘制源的起始点位置.

加滚动条,可以直接在对话框的属性里面设置,通过SetScrollInfo,等函数来设置滚动条的对应属性.

http://blog.csdn.net/pinger1981/archive/2007/09/20/1793101.aspx