亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hexviewview.cpp

?? 以十六進制顯示文檔內容
?? CPP
字號:
// HexViewView.cpp : implementation of the CHexViewView class
//

#include "stdafx.h"
#include "HexView.h"

#include "HexViewDoc.h"
#include "HexViewView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CHexViewView

IMPLEMENT_DYNCREATE(CHexViewView, CScrollView)

BEGIN_MESSAGE_MAP(CHexViewView, CScrollView)
	//{{AFX_MSG_MAP(CHexViewView)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
			ON_COMMAND(ID_VIEW_FONT, OnViewFont)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CHexViewView construction/destruction

CHexViewView::CHexViewView()
{
	// TODO: add construction code here
	memset(&m_logfont, 0, sizeof(m_logfont));
 	m_nPointSize = 120;
 	_tcscpy(m_logfont.lfFaceName, _T("Fixedsys"));

	// start out with a system font

	CWindowDC dc(NULL);
	m_logfont.lfHeight = ::MulDiv(m_nPointSize, dc.GetDeviceCaps(LOGPIXELSY), 720);
	m_logfont.lfPitchAndFamily = FIXED_PITCH;

	m_pFont = new CFont;
	m_pFont->CreateFontIndirect(&m_logfont);
	m_pPrintFont = NULL;
	m_bPrinting = FALSE;
}

CHexViewView::~CHexViewView()
{
	if (m_pFont != NULL)
		delete m_pFont;
	if (m_pPrintFont != NULL)
		delete m_pPrintFont;

}

BOOL CHexViewView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CHexViewView drawing

void CHexViewView::OnDraw(CDC* pDC)
{
	CHexViewDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	CString strRender;
	CFont*	pOldFont;
	CSize	ScrolledSize;
	int		nStartLine;
	int		nHeight;
	CRect	ScrollRect;
	CPoint	ScrolledPos = GetScrollPosition();

	if (m_bPrinting)
	{
		// find the first line for this page

		ScrolledSize = CSize(m_nPageWidth, m_nPageHeight);
		ScrollRect = CRect(0, ScrolledPos.y,
			ScrolledSize.cx,
			ScrolledSize.cy + ScrolledPos.y);
		pOldFont = pDC->SelectObject(m_pPrintFont);
		nStartLine = m_nPrintLine;
	}
	else
	{
		CRect	rectClient;
		GetClientRect(&rectClient);

		// figure out how high each line is

		pOldFont = pDC->SelectObject(m_pFont);
		nHeight = MeasureFontHeight(m_pFont, pDC);
	
		// find a starting line based on scrolling

		ScrolledSize = CSize(rectClient.Width(), rectClient.Height());
		ScrollRect = CRect(rectClient.left, ScrolledPos.y,
			rectClient.right,
			ScrolledSize.cy + ScrolledPos.y);
		nStartLine = ScrolledPos.y/16;

		// make sure we are drawing where we should

		ScrollRect.top = nStartLine*nHeight;
	}

	if (pDoc->m_pFile != NULL)
	{

		int nLine;
		for (nLine = nStartLine; ScrollRect.top < ScrollRect.bottom; nLine++)
		{
			if (!pDoc->ReadLine(strRender, 16, nLine*16))
				break;

			nHeight = pDC->DrawText(strRender, -1,
				&ScrollRect, DT_TOP | DT_NOPREFIX | DT_SINGLELINE);
			ScrollRect.top += nHeight;
		}
	}

	pDC->SelectObject(pOldFont);
}

/////////////////////////////////////////////////////////////////////////////
// CHexViewView printing

BOOL CHexViewView::OnPreparePrinting(CPrintInfo* pInfo)
{
	BOOL bResult;
	CWinApp* pApp = AfxGetApp();

	// ask our app what the default printer is
	// if there isn't any, punt to MFC so it will generate an error

	if (!pApp->GetPrinterDeviceDefaults(&pInfo->m_pPD->m_pd) ||
		 pInfo->m_pPD->m_pd.hDevMode == NULL)
		return DoPreparePrinting(pInfo);

	HGLOBAL	hDevMode = pInfo->m_pPD->m_pd.hDevMode;
	HGLOBAL hDevNames = pInfo->m_pPD->m_pd.hDevNames;

	DEVMODE* pDevMode = (DEVMODE*) ::GlobalLock(hDevMode);
	DEVNAMES* pDevNames = (DEVNAMES*) ::GlobalLock(hDevNames);

	LPCSTR pstrDriverName = ((LPCSTR) pDevNames)+pDevNames->wDriverOffset;
	LPCSTR pstrDeviceName = ((LPCSTR) pDevNames)+pDevNames->wDeviceOffset;
	LPCSTR pstrOutputPort = ((LPCSTR) pDevNames)+pDevNames->wOutputOffset;

	CDC dcPrinter;
	if (dcPrinter.CreateDC(pstrDriverName, pstrDeviceName, pstrOutputPort, NULL))
	{
		CalcPageCount(&dcPrinter, pInfo);
		dcPrinter.DeleteDC();
		bResult = DoPreparePrinting(pInfo);
	}
	else
	{
		MessageBox("Could not create printer DC");
		bResult = FALSE;
	}

	::GlobalUnlock(hDevMode);
	::GlobalUnlock(hDevNames);

	return bResult;

}

void CHexViewView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	// create the printer font using the point size the user requested
	// (having different printer fonts and screen fonts is the easiest way
	// to make sure they both look right.)  Since the scaling in the printer
	// is different than the screen, do the math for lfHeight again.

	LOGFONT	lfPrintFont;
	memcpy(&lfPrintFont, &m_logfont, sizeof(lfPrintFont));

	if (m_pPrintFont != NULL)
		delete m_pPrintFont;
	m_pPrintFont = new CFont;
	lfPrintFont.lfHeight = MulDiv(m_nPointSize, pDC->GetDeviceCaps(LOGPIXELSX), 720);
	m_pPrintFont->CreateFontIndirect(&lfPrintFont);

	// get these again, since the user may have changed the printer since
	// we set them up in 

	CalcPageCount(pDC, pInfo);
}

void CHexViewView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	delete m_pPrintFont;
	m_pPrintFont = NULL;

}

/////////////////////////////////////////////////////////////////////////////
// CHexViewView diagnostics

#ifdef _DEBUG
void CHexViewView::AssertValid() const
{
	CView::AssertValid();
}

void CHexViewView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CHexViewDoc* CHexViewView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CHexViewDoc)));
	return (CHexViewDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CHexViewView message handlers

void CHexViewView::OnInitialUpdate() 
{
	CHexViewDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// hook up our initial size
	
	CSize sizeTotal(0, pDoc->m_lFileSize);
	SetScrollSizes(MM_TEXT, sizeTotal);
	
	CScrollView::OnInitialUpdate();
}

void CHexViewView::OnViewFont() 
{
	// let the user change their mind about the font

	LOGFONT	lfCopy;
	memcpy(&lfCopy, &m_logfont, sizeof(lfCopy));

	// pop up the existing font in the dialog

	CFontDialog dlg(&lfCopy);
	dlg.m_cf.Flags |= CF_FORCEFONTEXIST | CF_FIXEDPITCHONLY;

	// if they say so, create the font and put it in a 
	// member variable for use later

	if (dlg.DoModal() == IDOK)
	{
		CFont*	pFontCopy = new CFont;
		if (pFontCopy->CreateFontIndirect(&lfCopy))
		{
			m_nPointSize = dlg.GetSize();
			if (m_pFont != NULL)
				delete m_pFont;

			m_pFont = pFontCopy;
			memcpy(&m_logfont, &lfCopy, sizeof(lfCopy));
  			Invalidate();
		}
		else
		{
			delete pFontCopy;
			MessageBox(_T("Could not create new font!"));
		}
	}
}

void CHexViewView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
{
	CScrollView::OnPrepareDC(pDC, pInfo);

	// remember if we're printing or not

	if (pInfo == NULL)
		m_bPrinting = FALSE;
	else
	{
	// if we're printing, figure out what line of the file
	// to start printing first

		int nHeight = MeasureFontHeight(m_pPrintFont, pDC);

		m_nPrintLine = ::MulDiv(pInfo->m_nCurPage-1, m_nPageHeight, nHeight);
		m_bPrinting = TRUE;
	}
}

void CHexViewView::CalcPageCount(CDC* pDC, CPrintInfo* pInfo)
{
	// get a pointer to the document

	CHexViewDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// figure out the page width and height
	// remember that the physical page size isn't completely
	// printable--subtract the nonprintable area from it.

	m_nPageWidth = pDC->GetDeviceCaps(PHYSICALWIDTH)
			- 2*(pDC->GetDeviceCaps(PHYSICALOFFSETX));
	m_nPageHeight = pDC->GetDeviceCaps(PHYSICALHEIGHT)
			- 2*(pDC->GetDeviceCaps(PHYSICALOFFSETY));

	// find out how high our font is
	// figure out how many lines of that font fit on a page

	int nHeight = MeasureFontHeight(m_pPrintFont, pDC);
 	int nPages;
	nPages = (pDoc->m_lFileSize/16*nHeight + (m_nPageHeight-1)) / m_nPageHeight;

	// set up printing info structure

	pInfo->SetMinPage(1);
	pInfo->SetMaxPage(nPages);
		
	return;
}

int CHexViewView::MeasureFontHeight(CFont* pFont, CDC* pDC)
{ 
	// how tall is the identified font in the identified DC?

	CFont* pOldFont;
	pOldFont = pDC->SelectObject(pFont);

	CRect rectDummy;
 	CString strRender = _T("1234567890ABCDEF- ");
	int nHeight = pDC->DrawText(strRender, -1, rectDummy,
		DT_TOP | DT_SINGLELINE | DT_CALCRECT);
	pDC->SelectObject(pOldFont);

	return nHeight;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av亚洲一区中文字幕| 色婷婷av一区二区三区gif| 麻豆高清免费国产一区| 久久66热re国产| 国产精品18久久久久| 波多野结衣在线一区| 色综合亚洲欧洲| 欧美男人的天堂一二区| 日韩视频在线观看一区二区| 国产婷婷色一区二区三区在线| 久久精品视频免费观看| 亚洲天堂a在线| 亚洲成人精品一区| 丝袜美腿亚洲一区二区图片| 久久爱另类一区二区小说| 成人午夜电影网站| 欧美美女视频在线观看| 精品91自产拍在线观看一区| 最新国产の精品合集bt伙计| 天堂久久久久va久久久久| 国产激情偷乱视频一区二区三区| 在线中文字幕不卡| 国产亚洲va综合人人澡精品 | 欧美性生活影院| 欧美成人激情免费网| 国产精品无码永久免费888| 亚洲专区一二三| 国产suv精品一区二区6| 欧美日韩五月天| 欧美激情一区三区| 久久精品免费观看| 欧美性色综合网| 国产精品欧美久久久久一区二区| 日韩精品亚洲一区二区三区免费| 波多野结衣中文字幕一区| 日韩欧美亚洲国产另类| 亚洲自拍都市欧美小说| 成人性生交大片免费看中文| 欧美一区二区三区视频在线| 亚洲美女一区二区三区| 国产.欧美.日韩| 欧美xxx久久| 国产精品久久久爽爽爽麻豆色哟哟| 蜜桃精品在线观看| 色偷偷一区二区三区| 国产欧美一区二区三区沐欲| 洋洋成人永久网站入口| 国产91精品精华液一区二区三区 | 色婷婷久久一区二区三区麻豆| 日韩午夜在线观看| 亚洲18女电影在线观看| 91电影在线观看| 亚洲精品五月天| 久久99精品久久久久| 欧美高清hd18日本| 五月天一区二区| 欧美少妇bbb| 欧美成人一区二区三区在线观看 | 丝袜国产日韩另类美女| 色94色欧美sute亚洲线路二 | 欧美日韩一区二区在线观看| 国产精品看片你懂得| 国产精品中文字幕一区二区三区| 日韩欧美第一区| 亚洲午夜免费福利视频| 在线亚洲欧美专区二区| 亚洲一区在线电影| 欧美日韩精品欧美日韩精品一综合| 精品国产a毛片| 国产一区二区三区黄视频 | 91麻豆免费看片| 亚洲另类在线制服丝袜| 91老师国产黑色丝袜在线| 亚洲人成人一区二区在线观看| 91视频91自| 无吗不卡中文字幕| 国产蜜臀av在线一区二区三区| 欧美视频中文字幕| 丁香另类激情小说| 日韩影院精彩在线| 国产精品久久国产精麻豆99网站| 欧美日韩国产在线播放网站| 国产精品资源在线观看| 亚洲成人动漫av| 久久久噜噜噜久久中文字幕色伊伊 | 日韩国产欧美三级| 欧美国产国产综合| 日韩一区二区电影在线| 91免费看片在线观看| 韩国成人精品a∨在线观看| 日韩国产高清在线| 亚洲一二三四在线| 2020国产成人综合网| 欧美无乱码久久久免费午夜一区| 国产老妇另类xxxxx| 五月天中文字幕一区二区| 亚洲精品一二三区| 欧美国产日本韩| 久久久夜色精品亚洲| 91精品欧美久久久久久动漫| 在线观看欧美日本| 福利一区福利二区| 久久99久久久久| 日韩精品亚洲一区| 亚洲动漫第一页| 亚洲乱码国产乱码精品精小说| 日本一区二区综合亚洲| 久久亚洲春色中文字幕久久久| 制服丝袜亚洲播放| 欧美高清一级片在线| 欧美吻胸吃奶大尺度电影 | 国产片一区二区| 欧美电影免费观看完整版| 欧美日韩视频一区二区| 日本韩国精品一区二区在线观看| 99精品视频在线免费观看| 国产成人午夜精品影院观看视频| 国产一区久久久| 国内精品伊人久久久久av影院 | 老司机免费视频一区二区| 午夜亚洲福利老司机| 午夜激情综合网| 婷婷久久综合九色综合绿巨人| 午夜精品aaa| 美女脱光内衣内裤视频久久网站 | 欧美一区二视频| 欧美一区二区三区免费观看视频| 91精品国产综合久久婷婷香蕉| 在线电影国产精品| 日韩欧美一二三区| 日韩成人一级大片| 国产日韩欧美高清| 国产欧美日韩三级| 中文字幕一区二区三区蜜月| 国产精品私人影院| 亚洲你懂的在线视频| 一区二区高清视频在线观看| 亚洲成人在线免费| 老司机精品视频一区二区三区| 国产乱色国产精品免费视频| 成人性视频免费网站| 色88888久久久久久影院野外| 欧美怡红院视频| 91精品国产欧美一区二区成人| 欧美成人三级电影在线| 国产精品美女久久久久久久网站| 亚洲男同性恋视频| 日韩中文字幕亚洲一区二区va在线| 九九视频精品免费| av动漫一区二区| 这里只有精品99re| 国产肉丝袜一区二区| 一区二区三区美女视频| 免费观看在线综合色| 成人免费视频国产在线观看| 在线精品国精品国产尤物884a| 欧美α欧美αv大片| 亚洲免费观看在线视频| 青青草97国产精品免费观看无弹窗版| 国产激情一区二区三区桃花岛亚洲| 色94色欧美sute亚洲13| 精品国产一区二区精华| 亚洲视频狠狠干| 久久99精品国产麻豆婷婷| 99久久婷婷国产| 精品国产1区二区| 亚洲一区二区在线播放相泽| 国产在线不卡一卡二卡三卡四卡| 91免费国产在线观看| 精品人在线二区三区| 亚洲精品中文在线观看| 国产精品一级在线| 欧美卡1卡2卡| 中文字幕一区av| 男女男精品视频网| 一本久久a久久免费精品不卡| 精品对白一区国产伦| 亚洲国产视频直播| 99视频一区二区三区| 久久亚洲二区三区| 日韩av电影免费观看高清完整版| 色系网站成人免费| 国产精品理伦片| 国产精品一色哟哟哟| 欧美一级黄色录像| 亚洲成人av中文| 日本高清不卡一区| 亚洲欧美经典视频| 成人18精品视频| 中文字幕成人网| 粉嫩av亚洲一区二区图片| 精品精品国产高清a毛片牛牛| 午夜欧美视频在线观看| 91久久精品国产91性色tv| 国产精品动漫网站| 国产精品12区| 久久精品欧美一区二区三区不卡| 久久精品国产久精国产爱| 91精品国产福利在线观看| 亚洲1区2区3区视频|