哪个打开函数是可以选择文件的,如果想打开bmp图,怎么做
哪个打开函数是可以选择文件的,如果想打开bmp图,如何做?
平时软件中打开文件的那个对话框哪个函数?
void CDRAWView::OnOpen()
{
// TODO: Add your command handler code here
CFileDialog dlg;
dlg.DoModal();
}
这个程序为什么报错no appropriate default constructor available?
如果我想选择图片文件,该怎么打开?
拷个程序上来啊!
先谢谢了啊~
------解决方案--------------------
平时软件中打开文件的那个对话框哪个函数?
void CDRAWView::OnOpen()
{
// TODO: Add your command handler code here
CFileDialog dlg;
dlg.DoModal();
}
这个程序为什么报错no appropriate default constructor available?
如果我想选择图片文件,该怎么打开?
拷个程序上来啊!
先谢谢了啊~
------解决方案--------------------
- C/C++ code
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); }
------解决方案--------------------
- C/C++ code
//载入图片 char szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||"; CFileDialog dlg( TRUE,"BMP",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter );
------解决方案--------------------
- C/C++ code
//在屏幕上显示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);//调整大小