首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

哪个打开函数是可以选择文件的,如果想打开bmp图,怎么做

2012-02-11 
哪个打开函数是可以选择文件的,如果想打开bmp图,如何做?平时软件中打开文件的那个对话框哪个函数?void CDR

哪个打开函数是可以选择文件的,如果想打开bmp图,如何做?
平时软件中打开文件的那个对话框哪个函数?
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);//调整大小 

热点排行