关于网友提出的“ 哪个打开函数是可以选择文件的,如果想打开bmp图,如何做?”问题疑问,本网通过在网上对“ 哪个打开函数是可以选择文件的,如果想打开bmp图,如何做?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 哪个打开函数是可以选择文件的,如果想打开bmp图,如何做?
描述: 平时软件中打开文件的那个对话框哪个函数?
void CDRAWView::OnOpen()
{
// TODO: Add your command handler code here
CFileDialog dlg;
dlg.DoModal();
}
这个程序为什么报错no appropriate default constructor available?
如果我想选择图片文件,该怎么打开?
拷个程序上来啊!
先谢谢了啊~
解决方案1:
//在屏幕上显示BMP图像,双缓冲实现BMP位图显示在屏幕上
HBITMAP OldBitmap;
CDC *pDC ;
CDC MemDC;
/*MemDC.CreateCompatibleDC(pDC);
OldBitmap=(HBITMAP)MemDC.SelectObject(hShowBMP);
CRect rect;
GetClientRect(&rect);
pDC->BitBlt(100,100,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(OldBitmap);*/
/*CStatic myStatic;
myStatic.Create(_T("my static"),
WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(10,10,150,50),
NULL);*/
//m_myStatic.SetBitmap( hShowBMP );
//m_myStatic.SetBitmap( ::LoadBitmap(NULL, MAKEINTRESOURCE(hShowBMP) ));*/
//判断
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);//调整大小
解决方案2:
//载入图片
char szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
CFileDialog dlg( TRUE,"BMP",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter );
解决方案3:
static char strext[]="谱文件(*.wfl)|*.wfl|所有文件(*.*)|*.*||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,strext,NULL);
if(dlg.DoModal()==IDOK)
{ int pl,fl;
pl=dlg.GetPathName().GetLength();
fl=dlg.GetFileName().GetLength();
m_PathEdit=dlg.GetPathName().Left(pl-fl);
m_FileEdit=dlg.GetFileName();
UpdateData(FALSE);
}
在strtext里选择你要打开的文件类型
以上介绍了“ 哪个打开函数是可以选择文件的,如果想打开bmp图,如何做?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2261854.html