RULER.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:6k
源码类别:
Windows编程
开发平台:
Visual C++
- // riched.h : header file
- //
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
- #ifndef __RULER_H__
- #define __RULER_H__
- class CWordPadView;
- class CWordPadDoc;
- class CRulerBar;
- // ruler items include left margin, right margin, indent, and tabs
- // horz positions in twips -- necessary to avoid rounding errors
- // vertical position in pixels
- class CRulerItem
- {
- public:
- CRulerItem(UINT nBitmapID = 0);
- ~CRulerItem();
- virtual BOOL HitTestPix(CPoint pt) { return GetHitRectPix().PtInRect(pt); }
- virtual void Draw(CDC& dc);
- virtual void SetHorzPosTwips(int nXPos);
- virtual void TrackHorzPosTwips(int nXPos, BOOL bOnRuler = TRUE);
- virtual void SetVertPos(int nYPos) { m_nYPosPix = nYPos; }
- virtual void SetAlignment(int nAlign) {m_nAlignment = nAlign;}
- virtual void SetRuler(CRulerBar* pRuler) {m_pRuler = pRuler;}
- virtual void SetBounds(int nMin, int nMax) { m_nMin = nMin; m_nMax = nMax; }
- int GetMin() { return m_nMin;}
- int GetMax() { return m_nMax;}
- void Invalidate();
- int GetVertPosPix() { return m_nYPosPix;}
- int GetHorzPosTwips() { return m_nXPosTwips;}
- int GetHorzPosPix();
- CRect GetHitRectPix();
- void DrawFocusLine();
- void SetTrack(BOOL b);
- HBITMAP m_hbm;
- HBITMAP m_hbmMask;
- CSize m_size; // size of item in pixels
- // Operations
- BOOL LoadMaskedBitmap(LPCTSTR lpszResourceName);
- protected:
- int m_nYPosPix;
- int m_nXPosTwips;
- int m_nAlignment;
- BOOL m_bTrack;
- CRulerBar* m_pRuler;
- CRect m_rcTrack;
- CDC* m_pDC; // dc used for drawing tracking line
- int m_nMin, m_nMax;
- };
- class CComboRulerItem : public CRulerItem
- {
- public:
- CComboRulerItem(UINT nBitmapID1, UINT nBitmapID2, CRulerItem& item);
- virtual BOOL HitTestPix(CPoint pt);
- virtual void Draw(CDC& dc);
- virtual void SetHorzPosTwips(int nXPos);
- virtual void TrackHorzPosTwips(int nXPos, BOOL bOnRuler = TRUE);
- virtual void SetVertPos(int nYPos);
- virtual void SetAlignment(int nAlign);
- virtual void SetRuler(CRulerBar* pRuler);
- virtual void SetBounds(int nMin, int nMax);
- int GetMin();
- int GetMax();
- protected:
- CRulerItem m_secondary;
- CRulerItem& m_link;
- BOOL m_bHitPrimary;
- };
- class CTabRulerItem : public CRulerItem
- {
- public:
- CTabRulerItem() { SetAlignment(TA_LEFT); }
- virtual void Draw(CDC& dc) {if (GetHorzPosTwips() != 0) CRulerItem::Draw(dc);}
- virtual void TrackHorzPosTwips(int nXPos, BOOL bOnRuler = TRUE);
- virtual BOOL HitTestPix(CPoint pt) { return (GetHorzPosTwips() != 0) ? CRulerItem::HitTestPix(pt) : FALSE;}
- };
- /////////////////////////////////////////////////////////////////////////////
- // CRulerBar
- class CRulerBar : public CControlBar
- {
- // Construction
- public:
- CRulerBar(BOOL b3DExt = TRUE);
- ~CRulerBar();
- // Operations
- public:
- virtual BOOL Create(CWnd* pParentWnd, DWORD dwStyle, UINT nID);
- protected:
- void Update(const PARAFORMAT& pf);
- void Update(CSize sizePaper, const CRect& rectMargins);
- // Attributes
- public:
- BOOL m_bDeferInProgress;
- BOOL m_bDraw3DExt;
- CUnit m_unit;
- CRulerItem* m_pSelItem;
- CFont fnt;
- CSize GetBaseUnits();
- CComboRulerItem m_leftmargin;
- CRulerItem m_indent;
- CRulerItem m_rightmargin;
- CRulerItem m_tabItem;
- CTabRulerItem m_pTabItems[MAX_TAB_STOPS];
- CSize m_sizePaper;
- CRect m_rectMargin;
- int PrintWidth() {return m_sizePaper.cx - m_rectMargin.left -
- m_rectMargin.right;}
- int m_nTabs;
- int m_logx;
- int m_nLinePos;
- int m_nScroll; // in pixels
- CPen penFocusLine;
- CPen penBtnHighLight;
- CPen penBtnShadow;
- CPen penWindowFrame;
- CPen penBtnText;
- CPen penBtnFace;
- CPen penWindowText;
- CPen penWindow;
- CBrush brushWindow;
- CBrush brushBtnFace;
- // Implementation
- public:
- virtual void DoPaint(CDC* pDC);
- virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
- void ClientToRuler(CPoint& pt) {pt.Offset(-m_cxLeftBorder+m_nScroll, -m_cyTopBorder);}
- void ClientToRuler(CRect& rect) {rect.OffsetRect(-m_cxLeftBorder+m_nScroll, -m_cyTopBorder);}
- void RulerToClient(CPoint& pt) {pt.Offset(m_cxLeftBorder-m_nScroll, m_cyTopBorder);}
- void RulerToClient(CRect& rect) {rect.OffsetRect(m_cxLeftBorder-m_nScroll, m_cyTopBorder);}
- int XTwipsToClient(int nT) {return MulDiv(nT, m_logx, 1440) + m_cxLeftBorder - m_nScroll;}
- int XClientToTwips(int nC) {return MulDiv(nC - m_cxLeftBorder + m_nScroll, 1440, m_logx);}
- int XTwipsToRuler(int nT) {return MulDiv(nT, m_logx, 1440);}
- int XRulerToTwips(int nR) {return MulDiv(nR, 1440, m_logx);}
- int XRulerToClient(int nR) {return nR + m_cxLeftBorder - m_nScroll;}
- int XClientToRuler(int nC) {return nC - m_cxLeftBorder + m_nScroll;}
- protected:
- virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
- void CreateGDIObjects();
- void DrawFace(CDC& dc);
- void DrawTickMarks(CDC& dC);
- void DrawNumbers(CDC& dc, int nInc, int nTPU);
- void DrawDiv(CDC& dc, int nInc, int nLargeDiv, int nLength);
- void DrawTabs(CDC& dc);
- void FillInParaFormat(PARAFORMAT& pf);
- void SortTabs();
- void SetMarginBounds();
- CRulerItem* GetFreeTab();
- CView* GetView()
- {
- ASSERT(GetParent() != NULL);
- return ((CFrameWnd*)GetParent())->GetActiveView();
- }
- CDocument* GetDocument() { return GetView()->GetDocument(); }
- CTabRulerItem* GetHitTabPix(CPoint pt);
- // Generated message map functions
- //{{AFX_MSG(CRulerBar)
- afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
- afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
- afx_msg void OnMouseMove(UINT nFlags, CPoint point);
- afx_msg void OnSysColorChange();
- afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);
- afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
- afx_msg void OnWindowPosChanged(WINDOWPOS FAR* lpwndpos);
- //}}AFX_MSG
- afx_msg LRESULT OnSizeParent(WPARAM wParam, LPARAM lParam);
- DECLARE_MESSAGE_MAP()
- friend class CRulerItem;
- };
- inline int CRulerItem::GetHorzPosPix()
- { return m_pRuler->XTwipsToRuler(m_nXPosTwips); }
- #endif