Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
QZVDemoView.cpp
Package: qzoomview.zip [view]
Upload User: xp9161
Upload Date: 2009-12-21
Package Size: 70k
Code Size: 7k
Category:
Windows Develop
Development Platform:
Visual C++
- // QZVDemoView.cpp
- #include "stdafx.h"
- #include "QZoomViewDemo.h"
- #include "QZVDemoView.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- #define ID_ZOOM_FIRST ID_ZOOM_01
- #define ID_ZOOM_LAST ID_ZOOM_10
- IMPLEMENT_DYNCREATE(CQZVDemoView, QZoomView)
- BEGIN_MESSAGE_MAP(CQZVDemoView, QZoomView)
- ON_COMMAND(ID_TOOL_ZOOMIN, OnToolZoomin)
- ON_COMMAND(ID_TOOL_ZOOMOUT, OnToolZoomout)
- ON_COMMAND(ID_TOOL_HAND, OnToolHand)
- ON_UPDATE_COMMAND_UI(ID_TOOL_ZOOMIN, OnUpdateToolZoomin)
- ON_UPDATE_COMMAND_UI(ID_TOOL_ZOOMOUT, OnUpdateToolZoomout)
- ON_UPDATE_COMMAND_UI(ID_TOOL_HAND, OnUpdateToolHand)
- ON_COMMAND(ID_ZOOM_ZOOMIN, OnZoomZoomin)
- ON_COMMAND(ID_ZOOM_ZOOMOUT, OnZoomZoomout)
- ON_COMMAND(ID_VIEW_ZOOMTOWINDOW, OnViewZoomtowindow)
- ON_COMMAND_RANGE(ID_ZOOM_FIRST, ID_ZOOM_LAST, OnZoom)
- ON_UPDATE_COMMAND_UI_RANGE(ID_ZOOM_FIRST, ID_ZOOM_LAST, OnUpdateZoom)
- ON_UPDATE_COMMAND_UI(ID_INDICATOR_ZOOM, OnUpdateIndicatorZoom)
- ON_COMMAND(ID_ZOOM_OTHER, OnZoomOther)
- ON_UPDATE_COMMAND_UI(ID_ZOOM_ZOOMIN, OnUpdateZoomZoomin)
- ON_UPDATE_COMMAND_UI(ID_ZOOM_ZOOMOUT, OnUpdateZoomZoomout)
- END_MESSAGE_MAP()
- CQZVDemoView::CQZVDemoView()
- : m_CurrentMode(ZoomViewOff)
- {
- }
- CQZVDemoView::~CQZVDemoView()
- {
- }
- void CQZVDemoView::OnDraw(CDC* pDC)
- {
- CSize szDoc(GetTotalSize());
- pDC->SetWindowOrg(0, szDoc.cy);
- CRect rcDoc(0, 0, szDoc.cx, szDoc.cy);
- pDC->Rectangle(rcDoc);
- CBrush brYellow(RGB(255, 255, 64));
- CBrush brSienna(RGB(128, 0, 0));
- CPen pen(PS_SOLID, 10, RGB(128, 0, 0));
- LOGFONT lf;
- ::ZeroMemory(& lf, sizeof(LOGFONT));
- _tcscpy(lf.lfFaceName, _T("Georgia"));
- lf.lfHeight = 60;
- lf.lfWeight = FW_BOLD;
- CFont font;
- font.CreateFontIndirect(& lf);
- CBrush * pOldBrush = (CBrush *) pDC->SelectObject(& brYellow);
- CPen * pOldPen = (CPen *) pDC->SelectObject(& pen);
- CFont * pOldFont = (CFont *) pDC->SelectObject(& font);
- pDC->Ellipse(200, 350, 600, 750);
- pDC->SelectObject(& brSienna);
- CRect rcEye(0, 0, 0, 0);
- rcEye.InflateRect(10, 10);
- rcEye.OffsetRect(330, 570);
- pDC->Ellipse(rcEye);
- rcEye.OffsetRect(140, 0);
- pDC->Ellipse(rcEye);
- CRect rcMouth(0, 0, 0, 0);
- rcMouth.InflateRect(60, 60);
- rcMouth.OffsetRect(400, 520);
- pDC->Arc(rcMouth, CPoint(340, 480), CPoint(460, 480));
- CString sHello(_T("Hello world!"));
- pDC->SetTextAlign(TA_CENTER);
- pDC->SetTextColor(RGB(192, 64, 0));
- pDC->TextOut(400, 280, sHello);
- lf.lfHeight = 36;
- lf.lfWeight = FW_NORMAL;
- CFont fontZoom;
- fontZoom.CreateFontIndirect(& lf);
- pDC->SelectObject(& fontZoom);
- pDC->SetTextColor(RGB(0, 0, 0));
- CString sZoom;
- sZoom.Format(_T("Zoom factor: %.2f"), GetZoom());
- pDC->TextOut(400, 180, sZoom);
- if (pOldFont) pDC->SelectObject(pOldFont);
- if (pOldPen) pDC->SelectObject(pOldPen);
- if (pOldBrush) pDC->SelectObject(pOldBrush);
- }
- void CQZVDemoView::OnInitialUpdate()
- {
- // Initialize QZoomView
- // Be a good programmer and call the base class.
- QZoomView::OnInitialUpdate();
- // Load the cursors. If you don't, QZoomView will display only the normal
- // arrow cursor.
- // The cursor loading might as well (or even preferably) be done in the
- // InitInstance() function of the application class, as it should be done only
- // once per program instance. But this doesn't hurt.
- UINT idCursors[] =
- {
- IDC_LOUPE, IDC_LOUPEPLUS, IDC_LOUPEMINUS, IDC_GRIPOPEN, IDC_GRIPCLOSED
- };
- for (int i = 0; i < sizeof(idCursors) / sizeof(UINT); i++)
- VERIFY(LoadCursor(i, idCursors[i]));
- // Optionally, set another list of zoom presets than the default.
- float PresetZoomFactors[] =
- {
- 0.35f, 0.5f, 0.7f, 1.0f, 1.4f, 2.0f, 2.8f, 4.0f, 5.6f, 8.0f
- };
- int nPresets(sizeof(PresetZoomFactors) / sizeof(float));
- SetPresets(PresetZoomFactors, nPresets);
- // Set the document size as you would do for a normal CScrollView and use
- // any fixed scale mapping mode (MM_ISOTROPIC and MM_ANISOTROPIC are not allowed).
- // Here we choose MM_LOMETRIC and a document size of 80 x 100 millimeters.
- CSize sizeTotal(800, 1000);
- SetScrollSizes(MM_LOMETRIC, sizeTotal);
- // For demonstration purposes, start with Zoom In tool activated.
- OnToolZoomin();
- }
- void CQZVDemoView::OnToolZoomin()
- {
- SetZoomMode(ZoomViewZoomIn);
- m_CurrentMode = ZoomViewZoomIn;
- }
- void CQZVDemoView::OnToolZoomout()
- {
- SetZoomMode(ZoomViewZoomOut);
- m_CurrentMode = ZoomViewZoomOut;
- }
- void CQZVDemoView::OnToolHand()
- {
- SetZoomMode(ZoomViewDrag);
- m_CurrentMode = ZoomViewDrag;
- }
- void CQZVDemoView::OnUpdateToolZoomin(CCmdUI *pCmdUI)
- {
- pCmdUI->SetCheck(m_CurrentMode == ZoomViewZoomIn);
- }
- void CQZVDemoView::OnUpdateToolZoomout(CCmdUI *pCmdUI)
- {
- pCmdUI->SetCheck(m_CurrentMode == ZoomViewZoomOut);
- }
- void CQZVDemoView::OnUpdateToolHand(CCmdUI *pCmdUI)
- {
- pCmdUI->SetCheck(m_CurrentMode == ZoomViewDrag);
- }
- void CQZVDemoView::OnZoomZoomin()
- {
- ZoomIn();
- }
- void CQZVDemoView::OnZoomZoomout()
- {
- ZoomOut();
- }
- void CQZVDemoView::OnViewZoomtowindow()
- {
- ZoomToWindow();
- }
- void CQZVDemoView::OnZoom(UINT nID)
- {
- ZoomToPreset(nID - ID_ZOOM_FIRST);
- }
- void CQZVDemoView::OnUpdateZoom(CCmdUI *pCmdUI)
- {
- pCmdUI->SetCheck(pCmdUI->m_nID - ID_ZOOM_FIRST == (UINT) GetPresetZoom());
- }
- void CQZVDemoView::OnZoomOther()
- {
- CZoomLevelDlg dlg;
- dlg.m_ZoomPercentage = (int)(100.0f * GetZoom());
- if (dlg.DoModal() == IDOK)
- {
- ZoomTo((float) dlg.m_ZoomPercentage / 100.0f);
- CSize szDocument = GetTotalSize();
- ScrollToCenter(CPoint(szDocument.cx / 2, - szDocument.cy / 2));
- }
- }
- void CQZVDemoView::OnUpdateIndicatorZoom(CCmdUI *pCmdUI)
- {
- // Indicate the zoom level on the status bar.
- // See the MFC documentation for CStatusBar and the global variable
- // 'indicators' in MainFrm.cpp if this looks unfamiliar.
- CString sZoom;
- sZoom.Format(_T("%.2f%%"), 100.0f * GetZoom());
- pCmdUI->SetText(sZoom);
- pCmdUI->Enable();
- }
- //===========================
- // CZoomLevelDlg dialog
- IMPLEMENT_DYNAMIC(CZoomLevelDlg, CDialog)
- BEGIN_MESSAGE_MAP(CZoomLevelDlg, CDialog)
- END_MESSAGE_MAP()
- CZoomLevelDlg::CZoomLevelDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CZoomLevelDlg::IDD, pParent)
- , m_ZoomPercentage(0)
- {
- }
- CZoomLevelDlg::~CZoomLevelDlg()
- {
- }
- void CZoomLevelDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- DDX_Text(pDX, IDC_ZOOMEDIT, m_ZoomPercentage);
- DDV_MinMaxInt(pDX, m_ZoomPercentage, 3, 2000);
- DDX_Control(pDX, IDC_ZOOMSPIN, m_ZoomSpin);
- }
- BOOL CZoomLevelDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- m_ZoomSpin.SetRange(3, 2000);
- return TRUE;
- }
- void CQZVDemoView::OnUpdateZoomZoomin(CCmdUI *pCmdUI)
- {
- pCmdUI->Enable(CanZoomIn());
- }
- void CQZVDemoView::OnUpdateZoomZoomout(CCmdUI *pCmdUI)
- {
- pCmdUI->Enable(CanZoomOut());
- }