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

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

?? imageboardview.cpp

?? 《精通 vc++ 圖像編程》的源代碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
// ImageBoardView.cpp : implementation of the CImageBoardView class
//

#include "stdafx.h"
#include "ImageBoard.h"
#include "ChildFrm.h"
#include "MainFrm.h"
#include "PenWidth.h"
#include "SelectPasteDlg.h"
#include "Scale.h"
#include "CanvasSize.h"
#include "GrayDlg.h"
#include "BCDlg.h"
#include "AdjustColorDlg.h"
#include "ColorBitsDlg.h"
#include "ConvoluteDlg.h"
#include "RotateAngle.h"
#include "ImageBoardDoc.h"
#include "ImageBoardView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CImageBoardView

IMPLEMENT_DYNCREATE(CImageBoardView, CScrollView)

BEGIN_MESSAGE_MAP(CImageBoardView, CScrollView)
	//{{AFX_MSG_MAP(CImageBoardView)
	ON_COMMAND(IDM_EAST, OnEast)
	ON_UPDATE_COMMAND_UI(IDM_EAST, OnUpdateEast)
	ON_COMMAND(IDM_HF1, OnHf1)
	ON_UPDATE_COMMAND_UI(IDM_HF1, OnUpdateHf1)
	ON_COMMAND(IDM_HF2, OnHf2)
	ON_UPDATE_COMMAND_UI(IDM_HF2, OnUpdateHf2)
	ON_COMMAND(IDM_HF3, OnHf3)
	ON_UPDATE_COMMAND_UI(IDM_HF3, OnUpdateHf3)
	ON_COMMAND(IDM_HORZ, OnHorz)
	ON_UPDATE_COMMAND_UI(IDM_HORZ, OnUpdateHorz)
	ON_COMMAND(IDM_LAP1, OnLap1)
	ON_UPDATE_COMMAND_UI(IDM_LAP1, OnUpdateLap1)
	ON_COMMAND(IDM_LAP2, OnLap2)
	ON_UPDATE_COMMAND_UI(IDM_LAP2, OnUpdateLap2)
	ON_COMMAND(IDM_LAP3, OnLap3)
	ON_UPDATE_COMMAND_UI(IDM_LAP3, OnUpdateLap3)
	ON_COMMAND(IDM_LAP4, OnLap4)
	ON_UPDATE_COMMAND_UI(IDM_LAP4, OnUpdateLap4)
	ON_COMMAND(IDM_LF1, OnLf1)
	ON_UPDATE_COMMAND_UI(IDM_LF1, OnUpdateLf1)
	ON_COMMAND(IDM_LF2, OnLf2)
	ON_UPDATE_COMMAND_UI(IDM_LF2, OnUpdateLf2)
	ON_COMMAND(IDM_LF3, OnLf3)
	ON_UPDATE_COMMAND_UI(IDM_LF3, OnUpdateLf3)
	ON_COMMAND(IDM_NORTH, OnNorth)
	ON_UPDATE_COMMAND_UI(IDM_NORTH, OnUpdateNorth)
	ON_COMMAND(IDM_NORTHEAST, OnNortheast)
	ON_UPDATE_COMMAND_UI(IDM_NORTHEAST, OnUpdateNortheast)
	ON_COMMAND(IDM_NORTHWEST, OnNorthwest)
	ON_UPDATE_COMMAND_UI(IDM_NORTHWEST, OnUpdateNorthwest)
	ON_COMMAND(IDM_SOUTH, OnSouth)
	ON_UPDATE_COMMAND_UI(IDM_SOUTH, OnUpdateSouth)
	ON_COMMAND(IDM_SOUTHEAST, OnSoutheast)
	ON_UPDATE_COMMAND_UI(IDM_SOUTHEAST, OnUpdateSoutheast)
	ON_COMMAND(IDM_SOUTHWEST, OnSouthwest)
	ON_UPDATE_COMMAND_UI(IDM_SOUTHWEST, OnUpdateSouthwest)
	ON_COMMAND(IDM_VERT, OnVert)
	ON_UPDATE_COMMAND_UI(IDM_VERT, OnUpdateVert)
	ON_COMMAND(IDM_VERTHORZ, OnVerthorz)
	ON_UPDATE_COMMAND_UI(IDM_VERTHORZ, OnUpdateVerthorz)
	ON_COMMAND(IDM_WEST, OnWest)
	ON_UPDATE_COMMAND_UI(IDM_WEST, OnUpdateWest)
	ON_COMMAND(IDM_SOBEL, OnSobel)
	ON_UPDATE_COMMAND_UI(IDM_SOBEL, OnUpdateSobel)
	ON_COMMAND(IDM_HOUGH, OnHough)
	ON_UPDATE_COMMAND_UI(IDM_HOUGH, OnUpdateHough)
	ON_COMMAND(IDM_MEDIANFILTER, OnMedianfilter)
	ON_UPDATE_COMMAND_UI(IDM_MEDIANFILTER, OnUpdateMedianfilter)
	ON_COMMAND(IDM_INCH, OnInch)
	ON_COMMAND(IDM_MM, OnMm)
	ON_COMMAND(IDM_PIXEL, OnPixel)
	ON_COMMAND(IDM_SELECT, OnSelect)
	ON_COMMAND(IDM_CURVE, OnCurve)
	ON_COMMAND(IDM_LINE, OnLine)
	ON_COMMAND(IDM_FREELINE, OnFreeline)
	ON_COMMAND(IDM_RECT_H, OnRectH)
	ON_COMMAND(IDM_RECT_F, OnRectF)
	ON_COMMAND(IDM_ELLIPSE_H, OnEllipseH)
	ON_COMMAND(IDM_ELLIPSE_F, OnEllipseF)
	ON_COMMAND(IDM_TEXT, OnText)
	ON_COMMAND(IDM_FILL, OnFill)
	ON_COMMAND(IDM_PENCOLOR, OnPencolor)
	ON_COMMAND(IDM_SOLID, OnSolid)
	ON_COMMAND(IDM_DASH, OnDash)
	ON_COMMAND(IDM_DOT, OnDot)
	ON_COMMAND(IDM_FILLCOLOR, OnFillcolor)
	ON_UPDATE_COMMAND_UI(IDM_SELECT, OnUpdateSelect)
	ON_UPDATE_COMMAND_UI(IDM_CURVE, OnUpdateCurve)
	ON_UPDATE_COMMAND_UI(IDM_LINE, OnUpdateLine)
	ON_UPDATE_COMMAND_UI(IDM_FREELINE, OnUpdateFreeline)
	ON_UPDATE_COMMAND_UI(IDM_RECT_H, OnUpdateRectH)
	ON_UPDATE_COMMAND_UI(IDM_RECT_F, OnUpdateRectF)
	ON_UPDATE_COMMAND_UI(IDM_ELLIPSE_H, OnUpdateEllipseH)
	ON_UPDATE_COMMAND_UI(IDM_ELLIPSE_F, OnUpdateEllipseF)
	ON_UPDATE_COMMAND_UI(IDM_FILL, OnUpdateFill)
	ON_UPDATE_COMMAND_UI(IDM_TEXT, OnUpdateText)
	ON_UPDATE_COMMAND_UI(IDM_DASH, OnUpdateDash)
	ON_UPDATE_COMMAND_UI(IDM_DOT, OnUpdateDot)
	ON_UPDATE_COMMAND_UI(IDM_SOLID, OnUpdateSolid)
	ON_COMMAND(IDM_PW_1, OnPw1)
	ON_UPDATE_COMMAND_UI(IDM_PW_1, OnUpdatePw1)
	ON_COMMAND(IDM_PW_2, OnPw2)
	ON_UPDATE_COMMAND_UI(IDM_PW_2, OnUpdatePw2)
	ON_COMMAND(IDM_PW_3, OnPw3)
	ON_UPDATE_COMMAND_UI(IDM_PW_3, OnUpdatePw3)
	ON_COMMAND(IDM_PW_4, OnPw4)
	ON_UPDATE_COMMAND_UI(IDM_PW_4, OnUpdatePw4)
	ON_COMMAND(IDM_PW_5, OnPw5)
	ON_UPDATE_COMMAND_UI(IDM_PW_5, OnUpdatePw5)
	ON_COMMAND(IDM_PW_6, OnPw6)
	ON_UPDATE_COMMAND_UI(IDM_PW_6, OnUpdatePw6)
	ON_COMMAND(IDM_PW_7, OnPw7)
	ON_UPDATE_COMMAND_UI(IDM_PW_7, OnUpdatePw7)
	ON_COMMAND(IDM_PW_8, OnPw8)
	ON_UPDATE_COMMAND_UI(IDM_PW_8, OnUpdatePw8)
	ON_COMMAND(IDM_PW_OTHER, OnPwOther)
	ON_UPDATE_COMMAND_UI(IDM_PW_OTHER, OnUpdatePwOther)
	ON_COMMAND(IDM_ROUNDRECT_F, OnRoundrectF)
	ON_UPDATE_COMMAND_UI(IDM_ROUNDRECT_F, OnUpdateRoundrectF)
	ON_COMMAND(IDM_ROUNDRECT_H, OnRoundrectH)
	ON_UPDATE_COMMAND_UI(IDM_ROUNDRECT_H, OnUpdateRoundrectH)
	ON_COMMAND(IDM_FONT, OnFont)
	ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
	ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)
	ON_COMMAND(ID_EDIT_CUT, OnEditCut)
	ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut)
	ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
	ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste)
	ON_COMMAND(IDM_SELECTPASTE, OnSelectpaste)
	ON_UPDATE_COMMAND_UI(IDM_SELECTPASTE, OnUpdateSelectpaste)
	ON_COMMAND(IDM_CROP, OnCrop)
	ON_UPDATE_COMMAND_UI(IDM_CROP, OnUpdateCrop)
	ON_COMMAND(IDM_ROTATE, OnRotate)
	ON_UPDATE_COMMAND_UI(IDM_ROTATE, OnUpdateRotate)
	ON_COMMAND(IDM_ROTATE180, OnRotate180)
	ON_UPDATE_COMMAND_UI(IDM_ROTATE180, OnUpdateRotate180)
	ON_COMMAND(IDM_ROTATE270, OnRotate270)
	ON_UPDATE_COMMAND_UI(IDM_ROTATE270, OnUpdateRotate270)
	ON_COMMAND(IDM_HMIRROR, OnHmirror)
	ON_UPDATE_COMMAND_UI(IDM_HMIRROR, OnUpdateHmirror)
	ON_COMMAND(IDM_VMIRROR, OnVmirror)
	ON_UPDATE_COMMAND_UI(IDM_VMIRROR, OnUpdateVmirror)
	ON_COMMAND(IDM_SCALE, OnScale)
	ON_UPDATE_COMMAND_UI(IDM_SCALE, OnUpdateScale)
	ON_COMMAND(IDM_CANVASSIZE, OnCanvassize)
	ON_UPDATE_COMMAND_UI(IDM_CANVASSIZE, OnUpdateCanvassize)
	ON_COMMAND(IDM_LEFT, OnLeft)
	ON_COMMAND(IDM_CENTER, OnCenter)
	ON_COMMAND(IDM_RIGHT, OnRight)
	ON_UPDATE_COMMAND_UI(IDM_CENTER, OnUpdateCenter)
	ON_UPDATE_COMMAND_UI(IDM_LEFT, OnUpdateLeft)
	ON_UPDATE_COMMAND_UI(IDM_RIGHT, OnUpdateRight)
	ON_COMMAND(IDM_ADJUSTCOLOR, OnAdjustcolor)
	ON_UPDATE_COMMAND_UI(IDM_ADJUSTCOLOR, OnUpdateAdjustcolor)
	ON_COMMAND(IDM_BC, OnBc)
	ON_UPDATE_COMMAND_UI(IDM_BC, OnUpdateBc)
	ON_COMMAND(IDM_COLORBITS, OnColorbits)
	ON_UPDATE_COMMAND_UI(IDM_COLORBITS, OnUpdateColorbits)
	ON_COMMAND(IDM_GRAY, OnGray)
	ON_UPDATE_COMMAND_UI(IDM_GRAY, OnUpdateGray)
	ON_WM_LBUTTONUP()
	ON_WM_DESTROY()
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	ON_WM_CTLCOLOR()
	ON_WM_CREATE()
	ON_WM_SETCURSOR()
	ON_COMMAND(ID_EDIT_CLEAR, OnEditClear)
	ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR, OnUpdateEditClear)
	ON_COMMAND(ID_EDIT_SELECT_ALL, OnEditSelectAll)
	ON_UPDATE_COMMAND_UI(ID_EDIT_SELECT_ALL, OnUpdateEditSelectAll)
	ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
	ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
	ON_COMMAND(ID_EDIT_REDO, OnEditRedo)
	ON_UPDATE_COMMAND_UI(ID_EDIT_REDO, OnUpdateEditRedo)
	ON_COMMAND(IDM_RED, OnRed)
	ON_UPDATE_COMMAND_UI(IDM_RED, OnUpdateRed)
	ON_COMMAND(IDM_GREEN, OnGreen)
	ON_UPDATE_COMMAND_UI(IDM_GREEN, OnUpdateGreen)
	ON_COMMAND(IDM_BLUE, OnBlue)
	ON_UPDATE_COMMAND_UI(IDM_BLUE, OnUpdateBlue)
	ON_COMMAND(IDM_GETBLUE, OnGetblue)
	ON_UPDATE_COMMAND_UI(IDM_GETBLUE, OnUpdateGetblue)
	ON_COMMAND(IDM_GETGREEN, OnGetgreen)
	ON_UPDATE_COMMAND_UI(IDM_GETGREEN, OnUpdateGetgreen)
	ON_COMMAND(IDM_GETRED, OnGetred)
	ON_UPDATE_COMMAND_UI(IDM_GETRED, OnUpdateGetred)
	ON_COMMAND(IDM_COPYTO, OnCopyto)
	ON_UPDATE_COMMAND_UI(IDM_COPYTO, OnUpdateCopyto)
	ON_COMMAND(IDM_PASTEFROM, OnPastefrom)
	ON_UPDATE_COMMAND_UI(IDM_PASTEFROM, OnUpdatePastefrom)
	ON_COMMAND(IDM_ERASER, OnEraser)
	ON_UPDATE_COMMAND_UI(IDM_ERASER, OnUpdateEraser)
	ON_COMMAND(IDM_PICKER, OnPicker)
	ON_UPDATE_COMMAND_UI(IDM_PICKER, OnUpdatePicker)
	ON_COMMAND(IDM_CLOSE_H, OnCloseH)
	ON_UPDATE_COMMAND_UI(IDM_CLOSE_H, OnUpdateCloseH)
	ON_COMMAND(IDM_CLOSE_V, OnCloseV)
	ON_UPDATE_COMMAND_UI(IDM_CLOSE_V, OnUpdateCloseV)
	ON_COMMAND(IDM_DILATION_H, OnDilationH)
	ON_UPDATE_COMMAND_UI(IDM_DILATION_H, OnUpdateDilationH)
	ON_COMMAND(IDM_DILATION_V, OnDilationV)
	ON_UPDATE_COMMAND_UI(IDM_DILATION_V, OnUpdateDilationV)
	ON_COMMAND(IDM_EROSION_H, OnErosionH)
	ON_UPDATE_COMMAND_UI(IDM_EROSION_H, OnUpdateErosionH)
	ON_COMMAND(IDM_EROSION_V, OnErosionV)
	ON_UPDATE_COMMAND_UI(IDM_EROSION_V, OnUpdateErosionV)
	ON_COMMAND(IDM_OPEN_H, OnOpenH)
	ON_UPDATE_COMMAND_UI(IDM_OPEN_H, OnUpdateOpenH)
	ON_COMMAND(IDM_OPEN_V, OnOpenV)
	ON_UPDATE_COMMAND_UI(IDM_OPEN_V, OnUpdateOpenV)
	ON_COMMAND(IDM_THIN, OnThin)
	ON_UPDATE_COMMAND_UI(IDM_THIN, OnUpdateThin)
	ON_COMMAND(IDM_FFT, OnFft)
	ON_UPDATE_COMMAND_UI(IDM_FFT, OnUpdateFft)
	ON_COMMAND(IDM_DCT, OnDct)
	ON_UPDATE_COMMAND_UI(IDM_DCT, OnUpdateDct)
	ON_COMMAND(IDM_WALH, OnWalh)
	ON_UPDATE_COMMAND_UI(IDM_WALH, OnUpdateWalh)
	ON_COMMAND(IDM_REVERSE, OnReverse)
	ON_UPDATE_COMMAND_UI(IDM_REVERSE, OnUpdateReverse)
	ON_COMMAND(IDM_CONTOUR_H, OnContourH)
	ON_UPDATE_COMMAND_UI(IDM_CONTOUR_H, OnUpdateContourH)
	ON_COMMAND(IDM_CONTOUR_V, OnContourV)
	ON_UPDATE_COMMAND_UI(IDM_CONTOUR_V, OnUpdateContourV)
	ON_COMMAND(IDM_ROTATE_ANGLE, OnRotateAngle)
	ON_UPDATE_COMMAND_UI(IDM_ROTATE_ANGLE, OnUpdateRotateAngle)
	//}}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)
	ON_COMMAND(IDC_PEN_COLOR, OnPencolor1)
	ON_COMMAND(IDC_FILL_COLOR, OnFillcolor1)
	ON_COMMAND_RANGE(IDC_COLORTABLE_BASE, IDC_COLORTABLE_BASE+256, OnPenColorGrid)
	ON_MESSAGE(WM_REALIZEPAL, OnRealizePal)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CImageBoardView construction/destruction

CImageBoardView::CImageBoardView()
{
	m_nLengthUnit = MM_TEXT;
	m_pDib = NULL;
	m_pFloatWnd = NULL;
	m_bDrawingRubber = FALSE;
	m_bDrawFreeline = FALSE;
	m_bErasing = FALSE;
	m_nDrawCurveStep = -1;
	m_bDrawCurve = FALSE;
	m_nDrawType = DT_SELECT;
	m_nPenStyle = PS_SOLID;
	m_nPenWidth = 1;
	m_crPenColor = RGB(0,0,0);
	m_crFillColor = RGB(0,0,0);
	m_nTextAlign = DT_LEFT;

	m_hCursorGeneralDraw = NULL;
	m_hCursorFreeline = NULL;
	m_hCursorEraser = NULL;
	m_hCursorPicker = NULL;
	m_hCursorFill = NULL;
	m_hCursorCurve = NULL;
}

CImageBoardView::~CImageBoardView()
{
}

BOOL CImageBoardView::PreCreateWindow(CREATESTRUCT& cs)
{
	m_hCursorGeneralDraw = AfxGetApp()->LoadCursor(IDC_CURSORGENERALDRAW);
	cs.lpszClass = AfxRegisterWndClass(CS_DBLCLKS,
					m_hCursorGeneralDraw, 
					(HBRUSH)(COLOR_WINDOW-1),
					AfxGetApp()->LoadIcon(IDR_IMAGEBTYPE));
	
	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CImageBoardView drawing

void CImageBoardView::OnDraw(CDC* pDC)
{
	CImageBoardDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (! pDoc->m_pDib->IsEmpty())
		m_pDib->Display(pDC, 0, 0);

	if (::IsWindow(m_EditText.m_hWnd))
	{
		CRect rc;
		m_EditText.GetWindowRect(&rc);
		ScreenToClient(&rc);
		rc.InflateRect(2,2);

		CPen pen1(PS_SOLID,1,RGB(255,255,255));
		CPen pen2(PS_DOT,1,RGB(0,0,0));
		CBrush *pOldBrush = pDC->SelectObject(CBrush::FromHandle((HBRUSH)::GetStockObject(NULL_BRUSH)));
		CPen *pOldPen = pDC->SelectObject(&pen1);
		pDC->Rectangle(&rc);
		pDC->SelectObject(&pen2);
		pDC->Rectangle(&rc);
		pDC->SelectObject(pOldBrush);
		pDC->SelectObject(pOldPen);
	}
}

void CImageBoardView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();

	CImageBoardDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	m_pDib = pDoc->m_pDib;

	CSize sizeTotal(m_pDib->GetWidth(), m_pDib->GetHeight());
	SetScrollSizes(MM_TEXT, sizeTotal);

	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
}

/////////////////////////////////////////////////////////////////////////////
// CImageBoardView printing

BOOL CImageBoardView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CImageBoardView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CImageBoardView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CImageBoardView diagnostics

#ifdef _DEBUG
void CImageBoardView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CImageBoardView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}

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

/////////////////////////////////////////////////////////////////////////////
// CImageBoardView message handlers

void CImageBoardView::SetStatusBarBitCount(WORD wBitcount)
{
	CString str;
	switch (wBitcount)
	{
	case 1:
		str.LoadString(IDS_BITCOUNT_1);
		break;
	case 4:
		str.LoadString(IDS_BITCOUNT_4);
		break;
	case 8:
		str.LoadString(IDS_BITCOUNT_8);
		break;
	case 24:
	default:
		str.LoadString(IDS_BITCOUNT_24);
		break;
	}
	CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);
	ASSERT_KINDOF(CMainFrame, pMainFrame);
    pMainFrame->m_wndStatusBar.SetPaneText(PANE_BIT_COUNT, str);
}

void CImageBoardView::SetStatusBarLengthUnit(int nUnit)
{
	CString str;
	switch (m_nLengthUnit)
	{
	case MM_HIENGLISH:
		str.LoadString(IDS_LENGTH_UNIT_INCH);
		break;
	case MM_HIMETRIC:
		str.LoadString(IDS_LENGTH_UNIT_MM);
		break;
	case MM_TEXT:
	default:
		str.LoadString(IDS_LENGTH_UNIT_PIXEL);
		break;
	}
	CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);
	ASSERT_KINDOF(CMainFrame, pMainFrame);
    pMainFrame->m_wndStatusBar.SetPaneText(PANE_LENGTH_UNIT, str);
}

void CImageBoardView::SetStatusBarCursorPosition(CPoint point)
{
	CWindowDC dc(this);
	dc.LPtoDP(&point);
	int nOldUnit = dc.SetMapMode(m_nLengthUnit);
	dc.DPtoLP(&point);
	dc.SetMapMode(nOldUnit);

	CString msg;
	double fCX = abs(point.x), fCY = abs(point.y);
	switch (m_nLengthUnit)
	{
	case MM_TEXT:
		msg.Format("%d,%d", (int)fCX, (int)fCY);
		break;
	case MM_HIENGLISH:
		fCX /= 1000.0;
		fCY /= 1000.0;
		msg.Format("%.2f,%.2f", fCX, fCY);
		break;
	case MM_HIMETRIC:
		fCX /= 100.0;
		fCY /= 100.0;
		msg.Format("%.1f,%.1f", fCX, fCY);
		break;
	}
	CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);
	ASSERT_KINDOF(CMainFrame, pMainFrame);
    pMainFrame->m_wndStatusBar.SetPaneText(PANE_CURSOR_POSITION, msg);
}

void CImageBoardView::SetStatusBarImageSize(CSize size)
{
	CWindowDC dc(this);
	dc.LPtoDP(&size);
	int nOldUnit = dc.SetMapMode(m_nLengthUnit);
	dc.DPtoLP(&size);
	dc.SetMapMode(nOldUnit);

	CString msg;
	double fCX = abs(size.cx), fCY = abs(size.cy);
	switch (m_nLengthUnit)
	{
	case MM_TEXT:
		msg.Format("%d,%d", (int)fCX, (int)fCY);
		break;
	case MM_HIENGLISH:
		fCX /= 1000.0;
		fCY /= 1000.0;
		msg.Format("%.2f,%.2f", fCX, fCY);
		break;
	case MM_HIMETRIC:
		fCX /= 100.0;
		fCY /= 100.0;
		msg.Format("%.1f,%.1f", fCX, fCY);
		break;
	}
	CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);
	ASSERT_KINDOF(CMainFrame, pMainFrame);
    pMainFrame->m_wndStatusBar.SetPaneText(PANE_IMAGE_SIZE, msg);
}

void CImageBoardView::OnInch() 
{
	SetLengthUnit(MM_HIENGLISH);
}

void CImageBoardView::OnMm() 
{
	SetLengthUnit(MM_HIMETRIC);
}

void CImageBoardView::OnPixel() 
{
	SetLengthUnit(MM_TEXT);
}

void CImageBoardView::SetLengthUnit(int nUnit) 
{
	m_nLengthUnit = nUnit;
	SetStatusBarLengthUnit(nUnit);

	CSize sizeTotal(m_pDib->GetWidth(), m_pDib->GetHeight());
	SetStatusBarImageSize(sizeTotal);

	CMenu *pMenu =  AfxGetApp()->m_pMainWnd->GetMenu();
	switch (m_nLengthUnit)
	{
	case MM_HIENGLISH:
		pMenu->CheckMenuRadioItem(IDM_PIXEL, IDM_MM, IDM_INCH, MF_BYCOMMAND);
		break;
	case MM_HIMETRIC:
		pMenu->CheckMenuRadioItem(IDM_PIXEL, IDM_MM, IDM_MM, MF_BYCOMMAND);
		break;
	case MM_TEXT:
	default:
		pMenu->CheckMenuRadioItem(IDM_PIXEL, IDM_MM, IDM_PIXEL, MF_BYCOMMAND);
		break;
	}
}

void CImageBoardView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) 
{
	if (bActivate)
	{
		OnRealizePal((WPARAM)m_hWnd,0);  // realize the new palette
		SetLengthUnit(m_nLengthUnit);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲品质自拍视频| 欧美高清精品3d| 美女mm1313爽爽久久久蜜臀| 日韩精品专区在线影院重磅| 粉嫩av亚洲一区二区图片| 日韩一区有码在线| 中文字幕欧美国产| 久久综合色一综合色88| 欧美情侣在线播放| 91国偷自产一区二区三区观看| 九一九一国产精品| 一区二区欧美视频| 日韩精品资源二区在线| 日本久久一区二区| 欧美性生活一区| 欧美日韩高清不卡| 欧美一区二区大片| 欧美变态凌虐bdsm| 日韩欧美国产午夜精品| 在线观看一区二区视频| 成人av资源网站| 国产综合久久久久久鬼色| 午夜视频一区二区三区| 国产精品福利一区二区三区| 亚洲视频免费观看| 亚洲亚洲人成综合网络| 奇米四色…亚洲| 免费看日韩精品| 国产一区二区在线视频| 国产精品一区二区免费不卡| 免费观看一级欧美片| 三级不卡在线观看| 国产成人午夜精品5599 | 欧美日韩亚洲高清一区二区| 欧美日本一道本| 欧美日韩国产小视频在线观看| 成年人国产精品| 精品亚洲成av人在线观看| 一区av在线播放| 亚洲国产视频直播| 日韩精品一二三四| 国产成人午夜视频| 欧美日韩在线免费视频| 欧美日韩国产成人在线免费| 日韩欧美视频一区| 久久久久久久网| 午夜精品久久久| 国产麻豆成人传媒免费观看| 国产精品小仙女| 欧美一区二区在线免费观看| 精品久久久久香蕉网| 精品国产乱码久久久久久牛牛| 精品国产91乱码一区二区三区| 欧美日韩精品免费| 精品国内二区三区| 国产精品久久二区二区| 亚洲高清三级视频| 麻豆精品一二三| 成人黄色综合网站| 色综合天天综合给合国产| 从欧美一区二区三区| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 日韩欧美一二区| 日一区二区三区| 91麻豆高清视频| 亚洲成人av电影| 色综合久久久久久久久久久| 日韩欧美中文字幕制服| 欧美成人一区二区三区| 26uuu亚洲综合色欧美| 亚洲一级在线观看| 美女一区二区视频| 国产精品一区久久久久| 337p亚洲精品色噜噜| 精品久久久久av影院| 亚洲免费伊人电影| 99国产精品久| 久久日一线二线三线suv| 精品国产乱码久久久久久老虎| 中文字幕亚洲欧美在线不卡| 国产日韩欧美电影| 国产精品久久久久毛片软件| 国产精品的网站| 一区二区三区精品久久久| 成人午夜精品在线| 亚洲国产电影在线观看| 亚洲mv在线观看| 欧美大片拔萝卜| 亚洲成人av免费| 一本大道av伊人久久综合| 亚洲第一av色| 欧美精品v国产精品v日韩精品| 亚洲图片激情小说| 暴力调教一区二区三区| 亚洲色图都市小说| 麻豆国产欧美日韩综合精品二区 | 一个色综合网站| 色老综合老女人久久久| 国产精品毛片高清在线完整版| 国产91精品免费| 久久久久久久电影| 成人免费视频一区二区| 免费观看在线综合| 一区二区欧美视频| 久久综合999| 欧美精品成人一区二区三区四区| 国产成a人亚洲精品| 国产精品你懂的| 99国产精品视频免费观看| 久久精品网站免费观看| 国产精品性做久久久久久| 一区二区三区自拍| 欧美不卡在线视频| 欧美日韩视频第一区| 精品综合久久久久久8888| 久久久久久久电影| 欧美性受xxxx| 久久av资源站| 天堂一区二区在线免费观看| 国产精品国产a| 亚洲三级在线播放| 调教+趴+乳夹+国产+精品| 图片区小说区区亚洲影院| 日韩成人午夜精品| 国模冰冰炮一区二区| 日本韩国一区二区三区| 91免费视频大全| 一本大道av一区二区在线播放| 欧美美女bb生活片| 久久影院视频免费| 亚洲女女做受ⅹxx高潮| 日本欧美加勒比视频| 美腿丝袜在线亚洲一区| 成人一区二区视频| 欧美精品色综合| 国产午夜亚洲精品不卡| 日韩av一级片| 日韩二区三区四区| 国产精品二区一区二区aⅴ污介绍| 亚洲一区在线播放| 一区二区三区日韩在线观看| 国产精品系列在线| 亚洲美女淫视频| 亚洲免费av高清| 久久精品国产在热久久| 成人国产视频在线观看| 色一区在线观看| 99re这里只有精品6| 这里只有精品电影| 天天综合日日夜夜精品| 99久久99久久免费精品蜜臀| 欧美一区二区免费视频| 国产精品午夜电影| 日本视频一区二区三区| 国产成人8x视频一区二区| 日韩欧美国产系列| 蜜桃av一区二区| 欧美日韩一区高清| 最新国产の精品合集bt伙计| 91蜜桃视频在线| 国产天堂亚洲国产碰碰| 国产乱码精品1区2区3区| 精品成人一区二区| 亚洲自拍偷拍网站| 777精品伊人久久久久大香线蕉| 国产精品情趣视频| 色悠久久久久综合欧美99| 国产精品久久夜| 裸体一区二区三区| 久久亚洲二区三区| 国内外成人在线| 国产精品视频看| av一区二区三区在线| 久久综合九色综合欧美就去吻| 美女在线观看视频一区二区| 91精品久久久久久久99蜜桃 | 欧美在线小视频| 亚洲成人精品影院| 欧美午夜一区二区| 男人的天堂久久精品| 色乱码一区二区三区88| 国产清纯在线一区二区www| 成人在线视频一区二区| 亚洲精品中文字幕在线观看| 欧美精品久久天天躁| 国产精品一区一区| 亚洲第一会所有码转帖| 久久久综合精品| 国产精品综合二区| 美日韩一级片在线观看| 国产精品女同一区二区三区| 色噜噜夜夜夜综合网| 裸体在线国模精品偷拍| 亚洲综合视频在线观看| 国产精品毛片无遮挡高清| 91福利国产成人精品照片| 免费成人小视频| 亚洲与欧洲av电影| 欧美一区二区二区| 在线观看视频一区二区|