帮忙看看这两个程序(一)
这是原来的程序:
// bbmpView.cpp : implementation of the CBbmpView class
//
#include "stdafx.h"
#include "bbmp.h"
#include "infoDlg.h"
#include "bbmpDoc.h"
#include "bbmpView.h"
#include "myvq.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBbmpView
IMPLEMENT_DYNCREATE(CBbmpView, CView)
BEGIN_MESSAGE_MAP(CBbmpView, CView)
//{{AFX_MSG_MAP(CBbmpView)
ON_COMMAND(ID_INFO, OnInfo)
ON_COMMAND(ID_VQZipper, OnVQZipper)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBbmpView construction/destruction
CBbmpView::CBbmpView()
{
// TODO: add construction code here
}
CBbmpView::~CBbmpView()
{
}
BOOL CBbmpView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CBbmpView drawing
void CBbmpView::OnDraw(CDC* pDC)
{
CBbmpDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
// DrawDibDraw(hdd,hdc,xDst,yDst,dxDst,dyDst,lpbi,lpBits,xSrc,ySrc,dxScr,dySrc,wFlags);
if (pDoc->begin==true)
{
if(pDoc->myVQ.cancel==true)
{
if(pDoc->timefirst==false)
{
pDoc->timefirst=true;
}
pDoc->mybmp.load(pDoc->myVQ.filepathname);
pDoc->myVQ.cancel=false;
}
pDoc->mybmp.Draw(pDC,0,0,-1,-1);
}}
/////////////////////////////////////////////////////////////////////////////
// CBbmpView printing
BOOL CBbmpView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CBbmpView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CBbmpView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CBbmpView diagnostics
#ifdef _DEBUG
void CBbmpView::AssertValid() const
{
CView::AssertValid();
}
void CBbmpView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CBbmpDoc* CBbmpView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CBbmpDoc)));
return (CBbmpDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CBbmpView message handlers
void CBbmpView::OnInfo()
{
CBbmpDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: Add your command handler code here
infoDlg myinfo;
if(pDoc->begin==true)
{
myinfo.m_filename=pDoc->mybmp.Filename;
myinfo. m_filesize.Format("%d字节",pDoc->mybmp.m_Bmpsize);
myinfo.m_bicount.Format("%d位",pDoc->mybmp.m_pBIH->biBitCount);
myinfo. m_height.Format("%d",pDoc->mybmp.m_pBIH->biHeight);
myinfo.m_width.Format("%d",pDoc->mybmp.m_pBIH->biWidth);
if (pDoc->mybmp.m_pBIH->biCompression==0)
myinfo.m_compression="未压缩";
else if(pDoc->mybmp.m_pBIH->biCompression==1)
myinfo.m_compression="RLE8压缩算法";
else
myinfo.m_compression="RLE4压缩算法";
}
myinfo.DoModal();
}
void CBbmpView::OnVQZipper()
{
// TODO: Add your command handler code here
CBbmpDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if(pDoc->begin==true)
{
if(pDoc->mybmp.m_pBIH->biBitCount!=24)
{
AfxMessageBox("24 bit bmp Needed! ");
return;
}
pDoc->myVQ.filepathname=pDoc->mybmp.Filefullname;
pDoc->myVQ.DoModal();
}
else
{
AfxMessageBox("请先打开图像");
}
}
void CBbmpView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
{
Invalidate();
CView::OnActivateView(bActivate, pActivateView, pDeactiveView);
}
因为是从CView派生的所以显示位图时没有滚动条,只能显示图象的一部分。