📄 texteditor.cpp
字号:
// TextEditor.cpp : implementation file
//
#include "stdafx.h"
#include "PPPClient.h"
#include "TextEditor.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CList<LOGFONT,LOGFONT&> m_all_logfont;
extern int m_edit_type;//-1:无效,0-Append ,1-Insert(Before),Modify:2
extern CPlayTableData m_cur_data;
/////////////////////////////////////////////////////////////////////////////
// CTextEditor dialog
CTextEditor::CTextEditor(CWnd* pParent /*=NULL*/)
: CDialog(CTextEditor::IDD, pParent)
{
//{{AFX_DATA_INIT(CTextEditor)
m_edit_filename = _T("");
m_fontheight = 0;
m_fontwidth = 0;
m_startx = 0;
m_starty = 0;
m_auto_return = FALSE;
//}}AFX_DATA_INIT
}
void CTextEditor::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTextEditor)
DDX_Control(pDX, IDC_SETFC_BUTTON, m_SetfcButton);
DDX_Control(pDX, IDC_SETBC_BUTTON, m_SetbcButton);
DDX_Control(pDX, IDC_SAVEAS_BUTTON, m_SaveAsButton);
DDX_Control(pDX, IDC_SAVE_BUTTON, m_SaveButton);
DDX_Control(pDX, IDC_OPEN_BUTTON, m_OpenButton);
DDX_Control(pDX, IDC_OK_BUTTON, m_OkButton);
DDX_Control(pDX, IDC_NEW_BUTTON, m_NewButton);
DDX_Control(pDX, IDC_CANCEL_BUTTON, m_CancelButton);
DDX_Control(pDX, IDC_TEXTEDITOR_EDIT, m_text_editor);
DDX_Control(pDX, IDC_FONTLIST_COMBO, m_fontlist_combobox);
DDX_Control(pDX, IDC_FC_STATIC, m_fc_static);
DDX_Control(pDX, IDC_BC_STATIC, m_bc_static);
DDX_Text(pDX, IDC_EDITFILENAME_EDIT, m_edit_filename);
DDX_Text(pDX, IDC_FONTHEIGHT_EDIT, m_fontheight);
DDV_MinMaxLong(pDX, m_fontheight, 8, 256);
DDX_Text(pDX, IDC_FONTWIDTH_EDIT, m_fontwidth);
DDV_MinMaxLong(pDX, m_fontwidth, 8, 256);
DDX_Text(pDX, IDC_SX_EDIT, m_startx);
DDV_MinMaxInt(pDX, m_startx, 0, 1024);
DDX_Text(pDX, IDC_SY_EDIT, m_starty);
DDV_MinMaxInt(pDX, m_starty, 0, 768);
DDX_Check(pDX, IDC_AUTO_RETURN_CHECK, m_auto_return);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTextEditor, CDialog)
//{{AFX_MSG_MAP(CTextEditor)
ON_BN_CLICKED(IDC_NEW_BUTTON, OnNewButton)
ON_BN_CLICKED(IDC_OPEN_BUTTON, OnOpenButton)
ON_BN_CLICKED(IDC_SAVE_BUTTON, OnSaveButton)
ON_BN_CLICKED(IDC_SAVEAS_BUTTON, OnSaveasButton)
ON_BN_CLICKED(IDC_SETFC_BUTTON, OnSetfcButton)
ON_BN_CLICKED(IDC_SETBC_BUTTON, OnSetbcButton)
ON_BN_CLICKED(IDC_CANCEL_BUTTON, OnCancelButton)
ON_BN_CLICKED(IDC_OK_BUTTON, OnOkButton)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTextEditor message handlers
BOOL CTextEditor::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//load fc param
//...........
m_fontlist_combobox.ResetContent();
POSITION pos;
LOGFONT lg;
for(int i=0;i<m_all_logfont.GetCount();i++)
{
pos=m_all_logfont.FindIndex(i);
if(pos)
{
lg=m_all_logfont.GetAt(pos);
m_fontlist_combobox.AddString(lg.lfFaceName);
}///????
}
//
if(m_fontlist_combobox.GetCount()>0)
m_fontlist_combobox.SetCurSel(m_cur_data.tp.m_text_font_name);
//width
m_fontwidth=m_cur_data.tp.m_text_font_width;
//height
m_fontheight=m_cur_data.tp.m_text_font_height;
//width
CSpinButtonCtrl *pwSpin=(CSpinButtonCtrl *)GetDlgItem(IDC_FONTWIDTH_SPIN);
ASSERT(pwSpin!=NULL);
pwSpin->SetBuddy(GetDlgItem(IDC_FONTWIDTH_EDIT));
pwSpin->SetRange(8,256);
pwSpin->SetPos(m_fontwidth);
//height
CSpinButtonCtrl *phSpin=(CSpinButtonCtrl *)GetDlgItem(IDC_FONTHEIGHT_SPIN);
ASSERT(phSpin!=NULL);
phSpin->SetBuddy(GetDlgItem(IDC_FONTHEIGHT_EDIT));
phSpin->SetRange(8,256);
phSpin->SetPos(m_fontheight);
/////////
//startx
m_startx=m_cur_data.tp.startx;
//starty
m_starty=m_cur_data.tp.starty;
//startx
CSpinButtonCtrl *pxSpin=(CSpinButtonCtrl *)GetDlgItem(IDC_SX_SPIN);
ASSERT(pxSpin!=NULL);
pxSpin->SetBuddy(GetDlgItem(IDC_SX_EDIT));
pxSpin->SetRange(0,1024);
pxSpin->SetPos(m_startx);
//starty
CSpinButtonCtrl *pySpin=(CSpinButtonCtrl *)GetDlgItem(IDC_SY_SPIN);
ASSERT(pySpin!=NULL);
pySpin->SetBuddy(GetDlgItem(IDC_SY_EDIT));
pySpin->SetRange(0,768);
pySpin->SetPos(m_starty);
//auto return
if(m_cur_data.tp.return_flag==1)
m_auto_return=TRUE;
else
m_auto_return=FALSE;
//..
//fc color
m_fc_static.SetBkColor(m_cur_data.tp.m_text_fc_color);
//bk color
m_bc_static.SetBkColor(m_cur_data.tp.m_text_bc_color);
//
m_edit_filename=m_cur_data.filename;//_T("");
//load data...
m_text_editor.SetWindowText(_T(""));
m_text_editor.LimitText(256*1024);//128
//load data to texteditor
// READ FILE
CFile m_file;
if(m_file.Open(m_edit_filename,CFile::modeRead|CFile::shareDenyNone)==0)
{
//MessageBox(L"Open file failed",L"System error!",MB_OK|MB_ICONERROR);
//return;
}
else
{
DWORD len;
DWORD uTmp;
len=m_file.GetLength();
if(len>=256*1024)
{
len=256*1024;
}
TCHAR *buff=new TCHAR[len+1];//64*1024+1];//ANSI :UNICODE len/2
if(buff==NULL)
{
m_file.Close();
MessageBox(TEXT("Not more memory"),TEXT("System error!"),MB_OK|MB_ICONERROR);
//return FALSE;
goto exit_init;
}
uTmp=m_file.Read(buff,len);
if(uTmp!=len)
{
delete[] buff;
m_file.Close();
MessageBox(TEXT("read file failed"),TEXT("System error!"),MB_OK|MB_ICONERROR);
//return FALSE;
goto exit_init;
}
buff[len]='\0';//NULL;//len/2
//
m_text_editor.SetWindowText(buff);
delete[] buff;
m_file.Close();
}
exit_init:
if(m_edit_type==0)//append
{
SetWindowText(TEXT("Append Text item"));
}
else if(m_edit_type==1)//insert text
{
SetWindowText(TEXT("Insert Text item"));
}
else if(m_edit_type==2)//modify text
{
SetWindowText(TEXT("Modify Text item"));
}
else
{
SetWindowText(TEXT("Text Editor"));
}
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CTextEditor::OnNewButton()
{
// TODO: Add your control notification handler code here
CFileDialog filedlg(TRUE,_T("TXT"),NULL,OFN_HIDEREADONLY,TEXT("Text Files(*.txt)|*.txt|All Files(*.*)|*.*||"));
// filedlg.m_ofn.lpstrInitialDir=_T("\\");
if(filedlg.DoModal()==IDOK)
{
m_edit_filename=filedlg.GetPathName();
m_text_editor.SetWindowText(_T(""));
UpdateData(FALSE);
}
}
void CTextEditor::OnOpenButton()
{
// TODO: Add your control notification handler code here
TCHAR chFilter[]=TEXT("Text Files(*.txt)|*.txt|All Files(*.*)|*.*||");
CFileDialog filedlg(TRUE,_T("*.TXT"),NULL,OFN_HIDEREADONLY,chFilter);
// filedlg.m_ofn.lpstrInitialDir=_T("\\");
if(filedlg.DoModal()==IDOK)
{
m_edit_filename=filedlg.GetPathName();
// READ FILE
CFile m_file;
if(m_file.Open(m_edit_filename,CFile::modeRead|CFile::shareDenyNone)==0)
{
MessageBox(TEXT("Open file failed"),TEXT("System error!"),MB_OK|MB_ICONERROR);
return;
}
DWORD len;
len=m_file.GetLength();
if(len>=256*1024)
{
len=256*1024;
}
TCHAR *buff=new TCHAR[len+1];//256*1024+1];//ANSI
if(buff==NULL)
{
m_file.Close();
MessageBox(TEXT("Not more memory"),TEXT("System error!"),MB_OK|MB_ICONERROR);
return;
}
DWORD uTmp=m_file.Read(buff,len);
if(uTmp!=len)
{
delete[] buff;
m_file.Close();
MessageBox(TEXT("read file failed"),TEXT("System error!"),MB_OK|MB_ICONERROR);
return;
}
buff[len]=NULL;//len/2
//
m_text_editor.SetWindowText(buff);
delete[] buff;
m_file.Close();
UpdateData(FALSE);
}
}
void CTextEditor::OnSaveButton()
{
// TODO: Add your control notification handler code here
UpdateData();
//1.save file and save
//wcscpy(m_cur_data.filename,m_edit_filename);
TCHAR *buff=new TCHAR[256*1024+1];
if(buff==NULL)
{
AfxMessageBox(TEXT("Not More Memory !!!"));
return;
}
CString str;
m_text_editor.GetWindowText(str);
_tcscpy(buff,str);
if(m_edit_filename!=_T(""))
{
// READ FILE
CFile m_file;
if(m_file.Open(m_edit_filename,CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone)==0)
{
delete [] buff;
MessageBox(TEXT("save file failed"),TEXT("System error!"),MB_OK|MB_ICONERROR);
return;
}
//
//m_file.SetLength(0);
m_file.Write(buff,str.GetLength()); //str.GetLength()*2
m_file.Close();
}
delete[] buff;
}
void CTextEditor::OnSaveasButton()
{
// TODO: Add your control notification handler code here
UpdateData();
TCHAR *buff=new TCHAR[256*1024+1];
if(buff==NULL)
{
AfxMessageBox(TEXT("Not More Memory !!!"));
return;
}
CString str;
m_text_editor.GetWindowText(str);
_tcscpy(buff,str);//
TCHAR chFilter[]=TEXT("Text Files(*.txt)|*.txt|All Files(*.*)|*.*||");
CFileDialog filedlg(FALSE,_T("TXT"),NULL,OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY,chFilter);
//filedlg.m_ofn.lpstrInitialDir=_T("\\");
if(filedlg.DoModal()==IDOK)
{
m_edit_filename=filedlg.GetPathName();
// READ FILE
CFile m_file;
if(m_file.Open(m_edit_filename,CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone )==0)
{
delete [] buff;
MessageBox(TEXT("save as file failed"),TEXT("System error!"),MB_OK|MB_ICONERROR);
return;
}
//
// m_file.SetLength(0);
m_file.Write(buff,str.GetLength()); //str.GetLength()*2
m_file.Close();
// this->SetWindowText(filedlg.GetFileTitle());
UpdateData(FALSE);
}
delete[] buff;
}
void CTextEditor::OnSetfcButton()
{
// TODO: Add your control notification handler code here
CColorDialog dlg(m_fc_static.m_bkcolor, CC_FULLOPEN);
if(dlg.DoModal()==IDOK)
{
m_fc_static.SetBkColor(dlg.GetColor());
}
}
void CTextEditor::OnSetbcButton()
{
// TODO: Add your control notification handler code here
CColorDialog dlg(m_bc_static.m_bkcolor, CC_FULLOPEN);
if(dlg.DoModal()==IDOK)
{
m_bc_static.SetBkColor(dlg.GetColor());
}
}
void CTextEditor::OnCancelButton()
{
// TODO: Add your control notification handler code here
EndDialog(1);
}
void CTextEditor::OnOkButton()
{
// TODO: Add your control notification handler code here
UpdateData();
//1.save file and save
_tcscpy(m_cur_data.filename,m_edit_filename);
//2.SAVE text property....
m_cur_data.tp.m_text_font_name=m_fontlist_combobox.GetCurSel();
m_cur_data.tp.m_text_font_width=m_fontwidth;
m_cur_data.tp.m_text_font_height =m_fontheight;
m_cur_data.tp.m_text_fc_color=m_fc_static.m_bkcolor;
m_cur_data.tp.m_text_bc_color=m_bc_static.m_bkcolor;
m_cur_data.tp.startx=m_startx;
m_cur_data.tp.starty=m_starty;
if(m_auto_return)
m_cur_data.tp.return_flag=1;
else
m_cur_data.tp.return_flag=0;
EndDialog(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -