正文

用VC++做一个象模象样的记事本(文本编辑器)2006-12-25 14:43:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/otot/21912.html

分享到:

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,再运行一次,文本编辑器做完....

阅读(10484) | 评论(9)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册