用VC++做一个象模象样的记事本(文本编辑器)请高手帮忙完成
用VC++做一个象模象样的记事本(文本编辑器)1.新建.工程.MFCAppWizard(exe),(名字定一个.例如:TextEdit)。2.工程选择采用对话框模式。3....
用VC++做一个象模象样的记事本(文本编辑器)
1.新建.工程.MFC AppWizard(exe),(名字定一个.例如:TextEdit)。
2.工程选择采用对话框模式。
3.把对话框上的按钮全部删除.并添加一个RICHEDIT控件。
4.打开TextEdit.cpp文件.在“BOOL CTextEditApp::InitInstance()”函数的第一行添加一行:“::AfxInitRichEdit();”
5.打开MFC ClassWizard 的 MemberVariables.为IDC_RICHEDIT1添加一个控件名“m_MyRichEdit”
6.运行一下.可以看到界面了。
7.点“插入”-“资源”.增加一个菜单资源(IDR_MENU1)。
8.打开菜单资源.添加菜单:
“文件”(根目录)
“新建”ID_MEMU_FILE_NEW
“打开”ID_MEMU_FILE_OPEM
“保存”ID_MEMU_FILE_SAVE
“退出”ID_MEMU_FILE_EXIT
“编辑”(根目录)
。。。等等
9.将菜单资源装入程序中.做法是在对话框类定义中添加以下代码:
class CTextEditDlg : public CDialog
{......
CMenu m_menu;
......}
然后在对话框类的初始化函数中添加代码:
BOOL CTextEditDlg::OnInitDialog()
{
CDialog::OnInitDialog();
......
//加载菜单
m_menu.LoadMenu(IDR_MENU1);
//设置当前菜单
SetMenu(&m_menu);
//当你不需要菜单时可以用 SetMenu(NULL);来取消当前菜单
......}
10.运行一下.这时候菜单应出现了。
11.然后在MFC ClassWizard 为每个菜单项目添加响应函数.具体代码如下:
void CTextEditDlg::OnMemuFileOpen(){
//显示文件打开对话框
CFileDialog dlg(TRUE, "SQL", "*.txt",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"Text Files(*.txt)|*.txt|SQL Files(*.sql)|*.sql|All Files(*.*)|*.*||");
if ( dlg.DoModal()!=IDOK ) return;
//获取文件的绝对路径
CString sFileName=dlg.GetPathName();
//打开文件
CStdioFile out;
out.Open(sFileName, CFile::modeRead);
CString sSql="",s;
//读取文件
do{
out.ReadString(s);
sSql=sSql+s+(char)10;
}
while (out.GetPosition()!=out.GetLength());
out.Close();
m_MyRichEdit.SetWindowText(sSql);
}
void CTextEditDlg::OnMemuFileNew()
{
m_MyRichEdit.SetWindowText("");
}
void CTextEditDlg::OnMemuFileSave()
{
//显示文件保存对话框
CFileDialog dlg(FALSE, "SQL", "*.txt",OFN_HIDEREADONLY
| OFN_OVERWRITEPROMPT,"Text Files(*.txt)|*.txt|SQL Files(*.sql)|*.sql|All Files(*.*)|*.*||"); if ( dlg.DoModal()!=IDOK ) return;
//获取文件的绝对路径
CString sFileName=dlg.GetPathName();
CStdioFile out;
//打开文件
out.Open(sFileName, CFile::modeCreate | CFile::modeWrite);
//保存文件
CString sSql;
m_MyRichEdit.GetWindowText(sSql);
out.WriteString(sSql);
out.Close();
}
void CTextEditDlg::OnMemuFileExit()
{
exit(0);
}
void CTextEditDlg::OnSize(UINT nType, int cx, int cy) //让RICHEDIT自动填满窗体
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRect rect;
if (m_MyRichEdit.GetSafeHwnd())
{
GetClientRect(&rect);
//rect.top += 5;
//rect.DeflateRect(5,5);
m_MyRichEdit.MoveWindow(rect);
}
}
8.记得把RICHEDIT的属性中构选Multiline.对话框的属性中构选Title bar、System menu、Minimize box、Maxmize box。
9.再运行一次.文本编辑器做完....
我的邮箱,282046194@.qq.com 展开
1.新建.工程.MFC AppWizard(exe),(名字定一个.例如:TextEdit)。
2.工程选择采用对话框模式。
3.把对话框上的按钮全部删除.并添加一个RICHEDIT控件。
4.打开TextEdit.cpp文件.在“BOOL CTextEditApp::InitInstance()”函数的第一行添加一行:“::AfxInitRichEdit();”
5.打开MFC ClassWizard 的 MemberVariables.为IDC_RICHEDIT1添加一个控件名“m_MyRichEdit”
6.运行一下.可以看到界面了。
7.点“插入”-“资源”.增加一个菜单资源(IDR_MENU1)。
8.打开菜单资源.添加菜单:
“文件”(根目录)
“新建”ID_MEMU_FILE_NEW
“打开”ID_MEMU_FILE_OPEM
“保存”ID_MEMU_FILE_SAVE
“退出”ID_MEMU_FILE_EXIT
“编辑”(根目录)
。。。等等
9.将菜单资源装入程序中.做法是在对话框类定义中添加以下代码:
class CTextEditDlg : public CDialog
{......
CMenu m_menu;
......}
然后在对话框类的初始化函数中添加代码:
BOOL CTextEditDlg::OnInitDialog()
{
CDialog::OnInitDialog();
......
//加载菜单
m_menu.LoadMenu(IDR_MENU1);
//设置当前菜单
SetMenu(&m_menu);
//当你不需要菜单时可以用 SetMenu(NULL);来取消当前菜单
......}
10.运行一下.这时候菜单应出现了。
11.然后在MFC ClassWizard 为每个菜单项目添加响应函数.具体代码如下:
void CTextEditDlg::OnMemuFileOpen(){
//显示文件打开对话框
CFileDialog dlg(TRUE, "SQL", "*.txt",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"Text Files(*.txt)|*.txt|SQL Files(*.sql)|*.sql|All Files(*.*)|*.*||");
if ( dlg.DoModal()!=IDOK ) return;
//获取文件的绝对路径
CString sFileName=dlg.GetPathName();
//打开文件
CStdioFile out;
out.Open(sFileName, CFile::modeRead);
CString sSql="",s;
//读取文件
do{
out.ReadString(s);
sSql=sSql+s+(char)10;
}
while (out.GetPosition()!=out.GetLength());
out.Close();
m_MyRichEdit.SetWindowText(sSql);
}
void CTextEditDlg::OnMemuFileNew()
{
m_MyRichEdit.SetWindowText("");
}
void CTextEditDlg::OnMemuFileSave()
{
//显示文件保存对话框
CFileDialog dlg(FALSE, "SQL", "*.txt",OFN_HIDEREADONLY
| OFN_OVERWRITEPROMPT,"Text Files(*.txt)|*.txt|SQL Files(*.sql)|*.sql|All Files(*.*)|*.*||"); if ( dlg.DoModal()!=IDOK ) return;
//获取文件的绝对路径
CString sFileName=dlg.GetPathName();
CStdioFile out;
//打开文件
out.Open(sFileName, CFile::modeCreate | CFile::modeWrite);
//保存文件
CString sSql;
m_MyRichEdit.GetWindowText(sSql);
out.WriteString(sSql);
out.Close();
}
void CTextEditDlg::OnMemuFileExit()
{
exit(0);
}
void CTextEditDlg::OnSize(UINT nType, int cx, int cy) //让RICHEDIT自动填满窗体
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRect rect;
if (m_MyRichEdit.GetSafeHwnd())
{
GetClientRect(&rect);
//rect.top += 5;
//rect.DeflateRect(5,5);
m_MyRichEdit.MoveWindow(rect);
}
}
8.记得把RICHEDIT的属性中构选Multiline.对话框的属性中构选Title bar、System menu、Minimize box、Maxmize box。
9.再运行一次.文本编辑器做完....
我的邮箱,282046194@.qq.com 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询