采用的静态拆分窗口,分为两列,想在左侧的视图区显示所选择的位图,当选择位图后,屏幕上没有反应,不知是何原因?主要函数如下:
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();
}
本人认为主要问题有两点:一是如何显示位图?二是怎样实现将选择的位图显示在拆分窗口的左列?请高手赐教!谢谢!
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();
}
本人认为主要问题有两点:一是如何显示位图?二是怎样实现将选择的位图显示在拆分窗口的左列?请高手赐教!谢谢!
________这就完了? ONPAINT怎么知道要用这个 m_Dib 来画窗口呢?
显示位图的问题已解决,原因是没有在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);
}