📄 readtxtview.cpp
字号:
// ReadTxtView.cpp : implementation of the CReadTxtView class
//
#include "stdafx.h"
#include "ReadTxt.h"
#include "ReadTxtDoc.h"
#include "ReadTxtView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WM_TTS_ATTRCHANGE WM_USER + 0
#define WM_TTS_PROGRESS WM_USER + 1
/////////////////////////////////////////////////////////////////////////////
// CReadTxtView
IMPLEMENT_DYNCREATE(CReadTxtView, CView)
BEGIN_MESSAGE_MAP(CReadTxtView, CView)
//{{AFX_MSG_MAP(CReadTxtView)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/*
ON_COMMAND(ID_SYNTH_PLAY_ALL, OnSynthPlayAll)
ON_UPDATE_COMMAND_UI(ID_SYNTH_PLAY_ALL, OnUpdateSynthPlayAll)
ON_COMMAND(ID_SYNTH_PAUSE, OnSynthPause)
ON_UPDATE_COMMAND_UI(ID_SYNTH_PAUSE, OnUpdateSynthPause)
ON_COMMAND(ID_SYNTH_PLAY, OnSynthPlay)
ON_UPDATE_COMMAND_UI(ID_SYNTH_PLAY, OnUpdateSynthPlay)
ON_COMMAND(ID_SYNTH_STOP, OnSynthStop)
ON_UPDATE_COMMAND_UI(ID_SYNTH_STOP, OnUpdateSynthStop)
ON_MESSAGE(WM_TTS_ATTRCHANGE, OnSynthAttrChange)
ON_MESSAGE(WM_TTS_PROGRESS, OnSynthProgress)
*/
/////////////////////////////////////////////////////////////////////////////
// CReadTxtView construction/destruction
CReadTxtView::CReadTxtView()
{
// m_nState = TTSSTATE_STOP;
m_pText = NULL;
}
CReadTxtView::~CReadTxtView()
{
if ( m_pText )
delete[] m_pText;
}
BOOL CReadTxtView::PreCreateWindow(CREATESTRUCT& cs)
{
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CReadTxtView drawing
void CReadTxtView::OnDraw(CDC* pDC)
{
}
/////////////////////////////////////////////////////////////////////////////
// CReadTxtView diagnostics
#ifdef _DEBUG
void CReadTxtView::AssertValid() const
{
CView::AssertValid();
}
void CReadTxtView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CReadTxtDoc* CReadTxtView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CReadTxtDoc)));
return (CReadTxtDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CReadTxtView message handlers
void CReadTxtView::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{ // storing code
}
else
{ // loading code
}
}
BOOL CReadTxtView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
/*
void CReadTxtView::LockText()
{
theApp.EditList.SetReadOnly();
if ( m_pText )
delete[] m_pText;
int nLength = theApp.EditList.GetWindowTextLength() + 1;
m_pText = new TCHAR[nLength];
theApp.EditList.GetWindowText(m_pText, nLength);
}
void CReadTxtView::UnlockText()
{
delete[] m_pText;
m_pText = NULL;
theApp.EditList.SetReadOnly(FALSE);
}
void CReadTxtView::OnSynthPlayAll()
{
LockText();
m_nStart = 0;
SynthText(m_pText);
}
void CReadTxtView::OnUpdateSynthPlayAll(CCmdUI* pCmdUI)
{
pCmdUI->Enable(TTSSTATE_STOP == m_nState && theApp.EditList.GetWindowTextLength());
}
void CReadTxtView::OnSynthPause()
{
Pause();
}
void CReadTxtView::OnUpdateSynthPause(CCmdUI* pCmdUI)
{
pCmdUI->Enable(TTSSTATE_PLAY == m_nState);
}
void CReadTxtView::OnSynthPlay()
{
if ( TTSSTATE_STOP == GetState() )
{
LockText();
DWORD dwSel =theApp.EditList.GetSel();
m_nStart = LOWORD(dwSel);
WORD nLength = HIWORD(dwSel) - m_nStart;
if ( nLength == 0 )
SynthText(m_pText + m_nStart);
else
SynthText(m_pText + m_nStart, nLength);
}
else
Resume();
}
void CReadTxtView::OnUpdateSynthPlay(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_nState != TTSSTATE_PLAY && theApp.EditList.GetWindowTextLength());
}
void CReadTxtView::OnSynthStop()
{
Cancel();
}
void CReadTxtView::OnUpdateSynthStop(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_nState != TTSSTATE_STOP);
}
LRESULT CReadTxtView::OnSynthAttrChange(WPARAM wParam, LPARAM lParam)
{
if ( TTSATTR_STATE == wParam )
{
m_nState = lParam;
if ( TTSSTATE_STOP == lParam )
UnlockText();
}
return 0;
}
TTSERROR CReadTxtView::OnAttrChange(TTSDWORD dwAttrId, TTSVAR varAttrValue)
{
PostMessage(WM_TTS_ATTRCHANGE, (WPARAM)dwAttrId, (LPARAM)varAttrValue);
return CIsPlayer4::OnAttrChange(dwAttrId, varAttrValue);
}
LRESULT CReadTxtView::OnSynthProgress(WPARAM wParam, LPARAM lParam)
{
theApp.EditList.SetSel(m_nStart + (int)wParam, m_nStart + (int)lParam);
return 0;
}
TTSERROR CReadTxtView::OnProgress(TTSDWORD dwProcPos, TTSDWORD dwProcLen)
{
PostMessage(WM_TTS_PROGRESS, dwProcPos / sizeof(TCHAR), (dwProcPos + dwProcLen) / sizeof(TCHAR));
return CIsPlayer4::OnProgress(dwProcPos, dwProcLen);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -