📄 decompressview.cpp
字号:
// DecompressView.cpp : implementation of the CDecompressView class
//
#include "stdafx.h"
#include "Decompress.h"
#include "DecompressDoc.h"
#include "DecompressView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDecompressView
IMPLEMENT_DYNCREATE(CDecompressView, CView)
BEGIN_MESSAGE_MAP(CDecompressView, CView)
//{{AFX_MSG_MAP(CDecompressView)
ON_WM_PAINT()
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CDecompressView construction/destruction
CDecompressView::CDecompressView()
{
// TODO: add construction code here
}
CDecompressView::~CDecompressView()
{
}
BOOL CDecompressView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CDecompressView drawing
void CDecompressView::OnDraw(CDC* pDC)
{
CDecompressDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CDecompressView printing
BOOL CDecompressView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CDecompressView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CDecompressView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CDecompressView diagnostics
#ifdef _DEBUG
void CDecompressView::AssertValid() const
{
CView::AssertValid();
}
void CDecompressView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CDecompressDoc* CDecompressView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDecompressDoc)));
return (CDecompressDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CDecompressView message handlers
void CDecompressView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CDecompressDoc* pDoc=GetDocument();
ASSERT_VALID(pDoc);
//是否已打开某个BMP文件
if(pDoc->flag==1)
{
if(pDoc->numQuad!=0)
{
SetDIBitsToDevice(dc.m_hDC, 0, 0, pDoc->pbi->bmiHeader.biWidth,
pDoc->pbi->bmiHeader.biHeight, 0, 0, 0,
pDoc->pbi->bmiHeader.biHeight, pDoc->lpshowbuf,
pDoc->pbi, DIB_RGB_COLORS);
/* ofstream fout;
fout.open("C:\\temp.log");
if(!fout)
{
return;
}
fout<<"biBitCount: "<<pDoc->pbi->bmiHeader.biBitCount<<endl;
fout<<"biHeight"<<pDoc->pbi->bmiHeader.biHeight<<endl;
fout<<"biWidth"<<pDoc->pbi->bmiHeader.biWidth<<endl;
int lineWidth = ((pDoc->pbi->bmiHeader.biWidth+3)/4)*4;
int temp = 1<<pDoc->pbi->bmiHeader.biBitCount;
RGBQUAD* temppalette = new RGBQUAD[temp];
for(int index=0;index<temp;index++)
{
temppalette[index] = pDoc->pbi->bmiColors[index];
}
for(int i=0;i<pDoc->pbi->bmiHeader.biHeight;i++)
{
for(int j=0;j<lineWidth;j++)
{
temp = (int)*(pDoc->lpshowbuf+i*lineWidth+j);
fout<<"("<<(int)temppalette[temp].rgbRed<<","<<(int)temppalette[temp].rgbGreen<<","<<(int)temppalette[temp].rgbBlue<<") ";
}
fout<<endl;
}
fout.close(); */
}
else
{
SetDIBitsToDevice(dc.m_hDC, 0, 0, pDoc->pbi->bmiHeader.biWidth,
pDoc->pbi->bmiHeader.biHeight, 0, 0, 0,
pDoc->pbi->bmiHeader.biHeight, pDoc->lpshowbuf,
pDoc->pbi, DIB_RGB_COLORS);
/* ofstream fout;
fout.open("C:\\temp.log");
if(!fout)
{
return;
}
fout<<"biBitCount: "<<pDoc->pbi->bmiHeader.biBitCount<<endl;
fout<<"biHeight"<<pDoc->pbi->bmiHeader.biHeight<<endl;
fout<<"biWidth"<<pDoc->pbi->bmiHeader.biWidth<<endl;
int lineWidth = ((pDoc->pbi->bmiHeader.biWidth+3)/4)*4;
for(int i=0;i<pDoc->pbi->bmiHeader.biHeight;i++)
{
for(int j=0;j<lineWidth;j++)
{
fout<<"("<<(int)*(pDoc->lpshowbuf+(i*lineWidth+j)*3)<<","<<(int)*(pDoc->lpshowbuf+(i*lineWidth+j)*3+1)<<","<<(int)*(pDoc->lpshowbuf+(i*lineWidth+j)*3+2)<<") ";
}
fout<<endl;
}
fout.close(); */
}
}
//for(int i=0;i<pDoc->pbi->bmiHeader.biHeight;i++)
//for(int j=0;j<pDoc->pbi->bmiHeader.biWidth;j++)
//{
// COLORREF color=RGB(pDoc->lpshowbuf[i+3*j],pDoc->lpshowbuf[i+3*j+1],pDoc->lpshowbuf[i+3*j+2]);
// dc.SetPixel(i,j,color);
//}
//DWORD lg=3*pDoc->pbi->bmiHeader.biSizeImage;
//for(DWORD i=0;i<lg;i++)
//{
//CString str;
//str.Format("%d",pDoc->lpshowbuf[0]);
//TextOut(dc.m_hDC,600,0,str,3);
//}
// Do not call CView::OnPaint() for painting messages
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -