2025-11-27 16:46:48 +09:00

133 lines
3.4 KiB
C++

// WorkspaceLengthView.cpp : implementation file
//
#include "stdafx.h"
#include "WorkspaceDemo.h"
#include "WorkspaceTextDoc.h"
#include "WorkspaceLengthView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceLengthView
IMPLEMENT_DYNCREATE(CWorkspaceLengthView, CFormView)
CWorkspaceLengthView::CWorkspaceLengthView()
: CFormView(CWorkspaceLengthView::IDD)
{
//{{AFX_DATA_INIT(CWorkspaceLengthView)
m_sLength = _T("");
//}}AFX_DATA_INIT
}
CWorkspaceLengthView::~CWorkspaceLengthView()
{
}
void CWorkspaceLengthView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWorkspaceLengthView)
DDX_Control(pDX, IDC_LENGTH_SPIN, m_wndLengthSpin);
DDX_Text(pDX, IDC_LENGTH, m_sLength);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWorkspaceLengthView, CFormView)
//{{AFX_MSG_MAP(CWorkspaceLengthView)
ON_COMMAND(ID_WINDOW_NEWTEXTWINDOW, OnWindowNewtextwindow)
ON_COMMAND(ID_WINDOW_NEWLENGTHWINDOW, OnWindowNewlengthwindow)
ON_EN_CHANGE(IDC_LENGTH, OnChangeLength)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceLengthView diagnostics
#ifdef _DEBUG
void CWorkspaceLengthView::AssertValid() const
{
CFormView::AssertValid();
}
void CWorkspaceLengthView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CWorkspaceTextDoc* CWorkspaceLengthView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CWorkspaceTextDoc)));
return (CWorkspaceTextDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceLengthView message handlers
void CWorkspaceLengthView::OnChangeLength()
{
// ... Check whether we have already passed OnInitialUpdate
if (m_wndLengthSpin.m_hWnd == NULL)
return;
if (!UpdateData(TRUE))
return;
int nNewLength = _ttoi(m_sLength);
CString sText = GetDocument()->GetText();
int nLength = sText.GetLength();
if (nLength < nNewLength)
sText += CString(_T('.'), nNewLength - nLength);
else
sText = sText.Left(nNewLength);
GetDocument()->SetText(sText);
m_sLength.Format(_T("%i"), nNewLength);
UpdateData(FALSE);
GetDocument()->UpdateAllViews(this);
}
void CWorkspaceLengthView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
m_wndLengthSpin.SetRange(0, UD_MAXVAL);
// Fit frame around view
ResizeParentToFit(FALSE);
}
void CWorkspaceLengthView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
UNREFERENCED_PARAMETER(pSender);
UNREFERENCED_PARAMETER(lHint);
UNREFERENCED_PARAMETER(pHint);
CString sText = GetDocument()->GetText();
m_sLength.Format(_T("%i"), sText.GetLength());
UpdateData(FALSE);
}
void CWorkspaceLengthView::OnWindowNewtextwindow()
{
CFrameWnd * pFrame =
((CWorkspaceDemoApp*)AfxGetApp())->m_pTextDocTemplate->CreateNewFrame(GetDocument(), GetParentFrame());
((CWorkspaceDemoApp*)AfxGetApp())->m_pTextDocTemplate->InitialUpdateFrame(pFrame, GetDocument());
}
void CWorkspaceLengthView::OnWindowNewlengthwindow()
{
CFrameWnd * pFrame =
((CWorkspaceDemoApp*)AfxGetApp())->m_pLengthDocTemplate->CreateNewFrame(GetDocument(), GetParentFrame());
((CWorkspaceDemoApp*)AfxGetApp())->m_pLengthDocTemplate->InitialUpdateFrame(pFrame, GetDocument());
}