采用的静态拆分窗口,分为两列,想在左侧的视图区显示所选择的位图,当选择位图后,屏幕上没有反应,不知是何原因?主要函数如下:
void CMainFrame::OnAddPic() 
{
// TODO: Add your command handler code here
    
//返回拆分窗口的窗格
CDisPicView* m_picture=(CDisPicView *)m_wndSplitter.GetPane(0,0);
    

//打开位图文件对话框
CString m_filename;
    
    static char szFilter[] = "BMP Files(*.BMP)|*.BMP||"; CFileDialog dlg1( TRUE, NULL, NULL,
OFN_HIDEREADONLY, szFilter );
if (dlg1.DoModal() == IDOK)
{
  m_filename=dlg1.GetPathName();//OpenDocumentFile(dlg.GetPathName()); 
}

   
       //显示选择的图片

if (m_filename!=" ")
    m_picture->display(m_filename);
//////

}
void CDisPicView::display(CString m_str)
{
   // static char szFilter[] = "BMP Files(*.BMP)|*.BMP||";
  //   CFileDialog FileDlg( TRUE, NULL, NULL,
//     OFN_HIDEREADONLY, szFilter );
         m_Dib.Load(m_str);
InvalidateRect( NULL, TRUE );
UpdateWindow();
}
本人认为主要问题有两点:一是如何显示位图?二是怎样实现将选择的位图显示在拆分窗口的左列?请高手赐教!谢谢!

解决方案 »

  1.   

    m_Dib.Load(m_str);
    ________这就完了? ONPAINT怎么知道要用这个 m_Dib 来画窗口呢?
      

  2.   

    呵呵,多谢大虾!
    显示位图的问题已解决,原因是没有在OnDraw函数里进行处理,加上如下的代码可以显示了void CDisPicView::OnDraw(CDC* pDC)
    {
    // CDocument* pDoc = GetDocument();
    // TODO: add draw code here
         RECT Rect;
    GetClientRect( &Rect );
    m_Dib.SetPalette( pDC );
    m_Dib.Draw( pDC, 0, 0,
    Rect.right, Rect.bottom);
    }