📄 txteditview.cpp
字号:
// TxtEditView.cpp : implementation of the CTxtEditView class
//
#include "stdafx.h"
#include "TxtEdit.h"
#include "TxtEditDoc.h"
#include "TxtEditView.h"
#include "myfindreplacedlg.h"
#include "myfinddlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTxtEditView
IMPLEMENT_DYNCREATE(CTxtEditView, CEditView)
BEGIN_MESSAGE_MAP(CTxtEditView, CEditView)
//{{AFX_MSG_MAP(CTxtEditView)
ON_COMMAND(ID_FILE_SAVE, OnFileSave)
ON_COMMAND(ID_EDIT_FIND, OnEditFind)
ON_COMMAND(ID_EDIT_REPLACE, OnEditReplace)
ON_UPDATE_COMMAND_UI(ID_EDIT_REPLACE, OnUpdateFileReplace)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTxtEditView construction/destruction
CTxtEditView::CTxtEditView()
{
// TODO: add construction code here
}
CTxtEditView::~CTxtEditView()
{
}
BOOL CTxtEditView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
BOOL bPreCreated = CEditView::PreCreateWindow(cs);
cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL); // Enable word-wrapping
return bPreCreated;
}
/////////////////////////////////////////////////////////////////////////////
// CTxtEditView drawing
void CTxtEditView::OnDraw(CDC* pDC)
{
CTxtEditDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CTxtEditView printing
BOOL CTxtEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default CEditView preparation
return CEditView::OnPreparePrinting(pInfo);
}
void CTxtEditView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView begin printing.
CEditView::OnBeginPrinting(pDC, pInfo);
}
void CTxtEditView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView end printing
CEditView::OnEndPrinting(pDC, pInfo);
}
/////////////////////////////////////////////////////////////////////////////
// CTxtEditView diagnostics
#ifdef _DEBUG
void CTxtEditView::AssertValid() const
{
CEditView::AssertValid();
}
void CTxtEditView::Dump(CDumpContext& dc) const
{
CEditView::Dump(dc);
}
CTxtEditDoc* CTxtEditView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTxtEditDoc)));
return (CTxtEditDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CTxtEditView message handlers
void CTxtEditView::OnFileSave()
{
CString sFileName,sContent;
GetWindowText(sContent);
CDocument* pDoc = GetDocument();
sFileName = pDoc->GetPathName();
if (sFileName.GetLength() == 0)
{
CFileDialog dlg(FALSE,NULL,NULL,OFN_CREATEPROMPT|OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT);
if (dlg.DoModal() == IDOK)
{
sFileName = dlg.GetPathName();
// AfxMessageBox(sFileName);
}
}
CStdioFile f;
if(f.Open(sFileName,CFile::modeCreate|CFile::modeReadWrite))
{
f.WriteString(sContent);
f.Close();
pDoc->SetModifiedFlag(FALSE);
pDoc->SetPathName(sFileName);
}
}
void CTxtEditView::OnEditFind()
{
//m_iFindIndex = 0;
CMyFindDlg dlg;
dlg.m_sFind = m_sFindContent;
if (dlg.DoModal() == IDOK)
{
if (m_sFindContent.Compare(dlg.m_sFind) != 0)
{
m_sFindContent = dlg.m_sFind;
m_iFindIndex = -1;
}
CString sContent;
GetWindowText(sContent);
m_iFindIndex = sContent.Find(dlg.m_sFind, m_iFindIndex+1);
if ( m_iFindIndex > -1)
{
CEdit& e = GetEditCtrl();
e.SetSel(m_iFindIndex, m_iFindIndex + dlg.m_sFind.GetLength());
}
else
{
AfxMessageBox("没有找到要搜索的内容,请从头开始搜索.",IDOK|IDCANCEL);
}
}
}
void CTxtEditView::OnEditReplace()
{
CMyFindReplaceDlg dlg;
dlg.m_sFind = m_sFindContent;
dlg.m_sReplace = m_sReplaceContent;
if (dlg.DoModal() == IDOK)
{
if (m_sFindContent.Compare(dlg.m_sFind) != 0)
{
m_sFindContent = dlg.m_sFind;
m_sReplaceContent = dlg.m_sReplace;
m_iFindIndex = -1;
}
if (m_sReplaceContent.Compare(dlg.m_sReplace) != 0)
{
m_sFindContent = dlg.m_sFind;
m_sReplaceContent = dlg.m_sReplace;
m_iFindIndex = -1;
}
CString sContent;
GetWindowText(sContent);
sContent.Replace(dlg.m_sFind,dlg.m_sReplace);
SetWindowText(sContent);
}
}
void CTxtEditView::OnUpdateFileReplace(CCmdUI* pCmdUI)
{
pCmdUI->Enable(TRUE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -