📄 texteditor.cpp
字号:
// TextEditor.cpp : implementation file
//
#include "stdafx.h"
#include "PPPServer.h"
#include "TextEditor.h"
#include "pppserverdlg.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_auto_return = FALSE;
m_edit_filename = _T("");
m_fontheight = 0;
m_fontwidth = 0;
m_startx = 0;
m_starty = 0;
//}}AFX_DATA_INIT
}
void CTextEditor::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTextEditor)
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_Check(pDX, IDC_AUTO_RETURN_CHECK, m_auto_return);
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_MinMaxLong(pDX, m_startx, 0, 1024);
DDX_Text(pDX, IDC_SY_EDIT, m_starty);
DDV_MinMaxLong(pDX, m_starty, 0, 768);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTextEditor, CDialog)
//{{AFX_MSG_MAP(CTextEditor)
ON_BN_CLICKED(IDC_OK_BUTTON, OnOkButton)
ON_BN_CLICKED(IDC_CANCEL_BUTTON, OnCancelButton)
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)
//}}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(128*1024);//
//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>=128*1024)
{
len=128*1024;
}
WCHAR *buff=new WCHAR[len/2+1];//64*1024+1];//UNICODE
if(buff==NULL)
{
m_file.Close();
MessageBox(L"Not more memory",L"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(L"read file failed",L"System error!",MB_OK|MB_ICONERROR);
//return FALSE;
goto exit_init;
}
buff[len/2]=NULL;
//
m_text_editor.SetWindowText(buff);
delete[] buff;
m_file.Close();
}
exit_init:
if(m_edit_type==0)//append
{
SetWindowText(L"Append Text item");
}
else if(m_edit_type==1)//insert text
{
SetWindowText(L"Insert Text item");
}
else if(m_edit_type==2)//modify text
{
SetWindowText(L"Modify Text item");
}
else
{
SetWindowText(L"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::OnOkButton()
{
// TODO: Add your control notification handler code here
UpdateData();
//1.save file and save
wcscpy(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);
}
void CTextEditor::OnCancelButton()
{
// TODO: Add your control notification handler code here
EndDialog(1);
}
void CTextEditor::OnNewButton()
{
// TODO: Add your control notification handler code here
CFileDialog filedlg(TRUE,_T("TXT"),NULL,OFN_HIDEREADONLY,L"Unicode 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
WCHAR chFilter[]=L"Unicode 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(L"Open file failed",L"System error!",MB_OK|MB_ICONERROR);
return;
}
DWORD len;
len=m_file.GetLength();
if(len>=128*1024)
{
len=128*1024;
}
WCHAR *buff=new WCHAR[len/2+1];//64*1024+1];//UNICODE
if(buff==NULL)
{
m_file.Close();
MessageBox(L"Not more memory",L"System error!",MB_OK|MB_ICONERROR);
return;
}
DWORD uTmp=m_file.Read(buff,len);
if(uTmp!=len)
{
delete[] buff;
m_file.Close();
MessageBox(L"read file failed",L"System error!",MB_OK|MB_ICONERROR);
return;
}
buff[len/2]=NULL;
//
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);
//WCHAR *
buff=new WCHAR[64*1024+1];
if(buff==NULL)
{
AfxMessageBox(L"Not More Memory !!!");
return;
}
CString str;
m_text_editor.GetWindowText(str);
wcscpy(buff,str);
if(m_edit_filename!=L"")
{
// READ FILE
CFile m_file;
if(m_file.Open(m_edit_filename,CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone)==0)
{
delete [] buff;
MessageBox(L"save file failed",L"System error!",MB_OK|MB_ICONERROR);
return;
}
//
//m_file.SetLength(0);
m_file.Write(buff,str.GetLength()*2);
m_file.Close();
}
delete[] buff;
//
}
void CTextEditor::OnSaveasButton()
{
// TODO: Add your control notification handler code here
UpdateData();
//WCHAR *
buff=new WCHAR[64*1024+1];
if(buff==NULL)
{
AfxMessageBox(L"Not More Memory !!!");
return;
}
CString str;
m_text_editor.GetWindowText(str);
wcscpy(buff,str);
WCHAR chFilter[]=L"Unicode 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(L"save as file failed",L"System error!",MB_OK|MB_ICONERROR);
return;
}
//
// m_file.SetLength(0);
m_file.Write(buff,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());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -