root/RulerView.cpp

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. IMPLEMENT_DYNCREATE
  2. CRulerView
  3. BEGIN_MESSAGE_MAP
  4. AssertValid
  5. Dump
  6. OnInitialUpdate
  7. PreCreateWindow
  8. OnSetFocus
  9. SetRulerSel
  10. OnLButtonDblClk
  11. OnLButtonDown
  12. OnLButtonUp
  13. OnRButtonDblClk
  14. OnRButtonDown
  15. OnRButtonUp
  16. OnKeyDown
  17. OnKeyUp
  18. OnChar
  19. OnCancelMode

/*
 * Copyright (C) 2002-2003 chik, s.hiranaka
 * For license terms, see the file COPYING in this directory.
 */

// RulerView.cpp : インプリメンテーション ファイル
//

#include "stdafx.h"
#include "Pochy.h"
#include "RulerView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CRulerView

IMPLEMENT_DYNCREATE(CRulerView, CRichEditView)

CRulerView::CRulerView()
{
}

CRulerView::~CRulerView()
{
}


BEGIN_MESSAGE_MAP(CRulerView, CRichEditView)
        //{{AFX_MSG_MAP(CRulerView)
        ON_WM_SETFOCUS()
        ON_WM_LBUTTONDBLCLK()
        ON_WM_LBUTTONDOWN()
        ON_WM_LBUTTONUP()
        ON_WM_RBUTTONDBLCLK()
        ON_WM_RBUTTONDOWN()
        ON_WM_RBUTTONUP()
        ON_WM_KEYDOWN()
        ON_WM_KEYUP()
        ON_WM_CHAR()
        ON_WM_CANCELMODE()
        //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRulerView 描画

void CRulerView::OnDraw(CDC* pDC)
{
        CDocument* pDoc = GetDocument();
        // TODO: この位置に描画用のコードを追加してください
}

/////////////////////////////////////////////////////////////////////////////
// CRulerView 診断

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

void CRulerView::Dump(CDumpContext& dc) const
{
        CView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CRulerView メッセージ ハンドラ

void CRulerView::OnInitialUpdate() 
{

        // デフォルトの文字属性設定
        CHARFORMAT2 cf;
        CRichEditCtrl& r = GetRichEditCtrl();
        r.GetDefaultCharFormat(cf);

        cf.dwMask = CFM_COLOR | CFM_PROTECTED | CFM_FACE | CFM_SIZE | CFM_CHARSET | CFM_SUBSCRIPT;
        cf.crTextColor = RGB(50, 30, 150);
        cf.dwEffects = CFE_PROTECTED | CFE_SUBSCRIPT;

        // フォントを変える
        m_font_size = 8;
        strncpy(cf.szFaceName,"FixedSys",8);
        cf.szFaceName[8]='\0';
        cf.bPitchAndFamily=FIXED_PITCH;
        cf.bCharSet=SHIFTJIS_CHARSET;
        cf.yHeight=280;
        r.SetDefaultCharFormat(cf);
        cf.cbSize=sizeof(cf);
        r.SendMessage(EM_SETCHARFORMAT,(WPARAM)SCF_ALL,(LPARAM)&cf);

        // 行間を調整する
        PARAFORMAT2 pf;
        pf.cbSize = sizeof(pf);
        pf.dwMask = PFM_LINESPACING | PFM_SPACEAFTER;
        pf.dySpaceAfter = 0;
        pf.bLineSpacingRule = 4;
        pf.dyLineSpacing = 280;
        r.SendMessage(EM_SETPARAFORMAT,0,(LPARAM)&pf);  

        // オートスクロールの扱いについて
        m_nWordWrap = WrapNone;
        WrapChanged(); // 折り返しなし
        r.SetOptions(ECOOP_OR, ECO_AUTOHSCROLL);
//      r.SendMessage(EM_SETEVENTMASK, 0, ENM_SCROLL);
 
        CString ruler;
        ruler = "----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0";
        SetWindowText(ruler);
        r.SetReadOnly();

        CRichEditView::OnInitialUpdate();
}

BOOL CRulerView::PreCreateWindow(CREATESTRUCT& cs) 
{
        BOOL bPreCreated = CRichEditView::PreCreateWindow(cs);
        cs.style &= ~(WS_VSCROLL | WS_HSCROLL |ES_MULTILINE);// | ES_AUTOVSCROLL); //| ES_AUTOVSCROLL WS_VSCROLL | 
        cs.style |= ES_AUTOHSCROLL;
        return bPreCreated;
}

void CRulerView::OnSetFocus(CWnd* pOldWnd) 
{
//      CRichEditView::OnSetFocus(pOldWnd);     
}

void CRulerView::SetRulerSel(int p)
{
/*      CRect rect1;
        this->GetWindowRect(rect1);
        ScreenToClient(&rect1);*/

        CRichEditCtrl& r = GetRichEditCtrl();
                r.SetSel(p, p+1);


}

void CRulerView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{       
//      CRichEditView::OnLButtonDblClk(nFlags, point);
}

void CRulerView::OnLButtonDown(UINT nFlags, CPoint point) 
{
/*              CRichEditCtrl& r = GetRichEditCtrl();
                r.LineScroll(-1,0);
        SendMessage(EM_SCROLLCARET , 0, 0);
        CRichEditView::OnLButtonDown(nFlags, point);*/
}

void CRulerView::OnLButtonUp(UINT nFlags, CPoint point) 
{       
//      CRichEditView::OnLButtonUp(nFlags, point);
}

void CRulerView::OnRButtonDblClk(UINT nFlags, CPoint point) 
{
//      CRichEditView::OnRButtonDblClk(nFlags, point);
}

void CRulerView::OnRButtonDown(UINT nFlags, CPoint point) 
{       
//      CRichEditView::OnRButtonDown(nFlags, point);
}

void CRulerView::OnRButtonUp(UINT nFlags, CPoint point) 
{       
//      CRichEditView::OnRButtonUp(nFlags, point);
}

void CRulerView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{       
        CDraftFrame* df = (CDraftFrame*)GetParentFrame();
        df->KeyDown(nChar,this);
        
//      CRichEditView::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CRulerView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{       
//      CRichEditView::OnKeyUp(nChar, nRepCnt, nFlags);
}

void CRulerView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
        TRACE("char=%d\n",nChar);
        CDraftFrame* df = (CDraftFrame*)GetParentFrame();
        df->Char(nChar,this);
//      CRichEditView::OnChar(nChar, nRepCnt, nFlags);
}

void CRulerView::OnCancelMode() 
{
        CRichEditView::OnCancelMode();
        
}

/* [<][>][^][v][top][bottom][index][help] */