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

哪个打开函数是可以选择文件的,如果想打开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);//调整大小