64,690
社区成员
发帖
与我相关
我的任务
分享
//判断
if( m_bmp.m_hObject != NULL )
m_bmp.DeleteObject();
//载入图片
CString strPathName;
char szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
CFileDialog dlg( TRUE,"BMP",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter );
//------用来检测目前的操作系统的版本信息
int nStructSize = 0;
DWORD dwVersion, dwWindowsMajorVersion, dwWindwosMinorVersion;
dwVersion = GetVersion();
dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
dwWindwosMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
if(dwVersion < 0x80000000)
{
nStructSize = 88; //2k,xp下显示新的版本
}
else
{
nStructSize = 76; //98下显示老版本,如图1
}
dlg.m_ofn.lStructSize = nStructSize; //------用来检测目前的操作系统的版本信息
if(dlg.DoModal() == IDOK)
{
strPathName = dlg.GetPathName();
}
HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
strPathName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
if( hbmp == NULL )
{
MessageBox("请您选择bmp格式的图片!","Notice",MB_OK);
exit(0);//有问题!!!
}
//取得加载的BMP的信息
m_bmp.Attach( hbmp );
DIBSECTION ds;
BITMAPINFOHEADER &bminfo = ds.dsBmih;
m_bmp.GetObject( sizeof(ds), &ds );
int cx=bminfo.biWidth;//得到图像宽度
int cy=bminfo.biHeight; //得到图像高度
//得到了图像的宽度和高度后,我们就可以对图像大小进行适应,即调整控件的大小,让它正好显示一张图片
CRect rect;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&rect);
ScreenToClient(&rect);
GetDlgItem(IDC_STATIC1)->MoveWindow(rect.left,rect.top,cx,cy,true);//调整大小