


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号1408010126
2014-2015学年第2学期《高级语言程序设计》课程设计报告题目: 文本编辑器的设计专业: 计算机科学与技术班级: 14计科一班姓名: 彭鑫指导教师: 王峻成绩:计算机学院2015年4月24日1设计容及要求1.1设计容 错误..未定义书签 错误.1未定义书签1.2具体要求 2 2概要设计 2 2.1系统的功能简介 3 2.2系统功能模块图 错误丄未定义书签TOC\o"1-5"\h\z\o"CurrentDocument"2.3各个模块之间的主要关系 3\o"CurrentDocument"3详细设计 43.1文件操作 4 3.2编辑操作 9 \o"CurrentDocument"3.3工具操作 17\o"CurrentDocument"4程序运行结果与调试 19\o"CurrentDocument"4.1在调试过程中出现的一些问题 194.2实验结果 20\o"CurrentDocument"5课程设计总结与感想 24\o"CurrentDocument"参考文献 2425源代码251设计容及要求1.1设计容该文本编辑器运行后弹出文本编辑器的主界面,由键盘输入或以打开的方式输入或显示文本文件容。其中程序的编辑项可对当前的文本进行撤销、删除、剪切、复制、粘贴、在文本里显示当前时间、全选、清除、查找、替换、统计等功能。程序的文件项可以对电脑上txt,c++等格式文件的打开、对当前文本的保存和另存、对当前文本的的新建以及退出文本编辑系统。程序的工具项为背景音乐,为用户提供了优美动听的音乐,仅在用户编辑疲惫乏力的时候尽情的享用。最后在程序的帮助项有对该小型文本编辑器的关于,用来介绍该程序,还有访问百度,访问114网页大全,为用户提供查找资料等功能服务。1.2具体要求基本要求:编辑器应具备对文本文件的打开、保存、新建、查找、插人、删除、修改、字符串替换、统计字数,统计行数等功能,对于超过一屏的长文件,应能够分页显示。设计用户接口命令,实现对文本的编辑2概要设计2.1系统的功能简介输入一页文字,程序实现文字、数字、空格的统计;可以删除一行信息;查找定位单词;定行位置插入;文件存盘;装入文件;并能显示输入及其他功能。2.2系统功能模块图运行所需环境:win7及以下各版本windows,visualC++6.0。2.3各个模块之间的主要关系该系统的功能主要是实现文本的输入,并对文本的相应信息进行的操作。各个模块之间的关系是相互联系的。首先,主函数包含了所有的子函数。主函数是整个系统的核心。子函数之间也是有联系的,对文本信息的显示、删除、统计、查找、插入,存储,装入,必须是在文本信息输入的情况下进行的。因此对文本的输入是非常重要的。在文本的删除、统计、查找、插入、存储、装入、保存所有的子函数之间是没有多大联系的。3详细设计3.1文件操作文件的新建的实现:intret=MessageBox(NULL,TEXT('是否把更改保存到新建的文本文档 川"),TEXT('温馨提示"),MB_YESNO|MB」CONQUESTION);if(ret==IDYES)//根据选择如果保存{OPENFILENAMEofn;//文件对象charszFile[MAX_PATH];〃文件的大小,最大ZeroMemory(&ofn,sizeof(ofn));//文件的初始化ofn.lStructSize=sizeof(ofn);ofn.lpstrFile=szFile;ofn.lpstrFile[0]=TEXT('\0');ofn.nMaxFile=sizeof(szFile);ofn.lpstrFilter=TEXT("ALL\0**\0Text\0*TXT\0C++\0*cpp\0"); //保存的文件类型ofn.nFilterlndex=1;ofn.lpstrFileTitle=NULL;ofn.nMaxFileTitle=0;ofn.lpstrInitialDir=NULL;ofn.hwndOwner=hwnd;ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;ofn.lpstrTitle=TEXT("保存");if(GetSaveFileName(&ofn))FILE*fp;fp=fopen(szFile,"w");//打开文件if(fp==NULL){MessageBox(NULL,TEXT文件无法保存"),TEXT(呜呜"),MBOK);}TCHARstr[10000];TCHARend[10000];memset(end,0,10000);GetDlgltemText(hwnd,IDC_EDIT1,str,sizeof(str));fputs(str,fp);fclose(fp);}SetDlgltemText(hwnd,IDC_EDIT1,"");}else{SetDlgItemText(hwnd,IDC_EDIT1,"");}文件打开的实现:caseID_MENUITEMOPEN: //文本的打开{OPENFILENAMEofn;charszFile[MAX_PATH];//保存路径变量ZeroMemory(&ofn,sizeof(ofn));在这里我们使用ZeroMemory函数”ZeroMemory其实并不是函数,看一下ZeroMemory的定义:ofn.lStructSize=sizeof(ofn);ofn.lpstrFile=szFile;//szFile是一个字符数组,那么szFile这个名字就代表这个字符数组的首地址这是一个指针的应用,把接收选择文件名的数组的地址传递到 GetOpenFileName函数中。ofn.lpstrFile[0]=TEXT('\0');ofn.lpstrFile[0]=TEXT('\0');效果等价于ZeroMemory(szFile,sizeof(szFile)/sizeof(char));ofn.nMaxFile=sizeof(szFile);ofn.lpstrFilter=TEXT("ALL\0**\0Text\0*txt\0");文件过滤器**就 表示所有文件*.txt就 表 示所有文本文件abc*.*就 表 示 所有 以abc开头的 文件abc*txt就表示所有以abc开头的文本文件(txt)ofn.lpstrFilter=TEXT("ALL\0*.*\0Text\0*.TXT\0");用\0”分割出几个段,每两段是一组过滤器,每组的第一个段代表过滤器的显示的值,而第二段表示真正的过滤器ofn.nFilterlndex=1; //选择一个过滤器ofn.lpstrFileTitle=NULL;windows的一个惯例:结构体的指针类型别名一般是LP+结构体的名字GetOpenFileName(&ofn)而不是GetOpenFileName(ofn),因为GetOpenFileName函数要的是OPENFILENAME 的 指 针(8)只要用户还没关闭对话框,那么GetOpenFileName函数是停住的,同步模式的PlaySound以及 getchar、 scanf 是一样的 。用户关闭对话框,GetOpenFileName函数返回,返回值是BOOL,等于TRUE表示用户选择了文件,如果等于FALSE就表示用户选择了【取消】按钮ofn.nMaxFileTitle=0;ofn.lpstrInitialDir=NULL;ofn.hwndOwner=hwnd;ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;if(GetOpenFileName(&ofn)){FILE*fp;fp=fopen(szFile,"r");if(fp==NULL){MessageBox(NULL,TEXT(文件打开错误门,TEXT(记事本"),MBOK);}TCHARline[256];TCHARend[10000];memset(line,0,256);memset(end,0,256);while(!feof(fp)){fgets(line,sizeof(line),fp);lstrcat(end,line);intw=strlen(end);end[w-1]='\0';lstrcat(end,"\r\n");}SetDlgltemText(hwnd,IDC_RICHEDIT1,end);fclose(fp);//关闭文件}break;}break;(3)文件保存的实现:caseIDMENUITEMSAVE://文本的保存{OPENFILENAMEofnb;charbcFile[MAX_PATH];ZeroMemory(&ofnb,sizeof(ofnb));ofnb.lStructSize=sizeof(ofnb);ofnb.lpstrFile=bcFile;ofnb.lpstrFile[0]=TEXT('\0');ofnb.nMaxFile=sizeof(bcFile);ofnb.lpstrFilter=TEXT("ALL\0**\0Text\0*txt\0");ofnb.nFilterlndex=1;ofnb.lpstrFileTitle=NULL;ofnb.nMaxFileTitle=0;ofnb.lpstrInitialDir=NULL;ofnb.hwndOwner=hwnd;OFNEXPLORERofnb.FlagsOFN_FILEMUSTEXIST|OFN_OVERWRITEPROMPT;
if(GetSaveFileName(&ofnb))|OFNPATHMUSTEXISTFILE*fp=fopen(".txt","w"); //保存所有文件都为txt格式TCHARbaoc[100000]; //保存的最大容量为100000GetDlgltemText(hwnd,IDC_RICHEDIT1,baoc,sizeof(baoc));fputs(baoc,fp);fclose(fp);}}break;(4)退出文本编辑器的实现:intret=MessageBox(NULL,TEXT('是否把更改保存到新建的文本文档 川"),TEXT('温馨提示"),MB_YESNO|MB」CONQUESTION);if(ret==IDYES){OPENFILENAMEofn;charszFile[MAX_PATH];ZeroMemory(&ofn,sizeof(ofn));ofn.lStructSize=sizeof(ofn);ofn.lpstrFile=szFile;ofn.lpstrFile[0]=TEXT('\0');ofn.nMaxFile=sizeof(szFile);ofn.lpstrFilter=TEXT("ALL\0**\0Text\0*TXT\0C++\0*cpp\0");ofn.nFilterlndex=1;ofn.lpstrFileTitle=NULL;ofn.nMaxFileTitle=0;ofn.lpstrInitialDir=NULL;ofn.hwndOwner=hwnd;ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;ofn.lpstrTitle=TEXT("保存");if(GetSaveFileName(&ofn)){FILE*fp;fp=fopen(szFile,"w");if(fp==NULL)MessageBox(NULL,TEXT文件无法保存"),TEXT(鸣呜"),MB_OK);}TCHARstr[10000];TCHARend[10000];memset(end,0,10000);GetDlgltemText(hwnd,IDC_EDIT1,str,sizeof(str));fputs(str,fp);fclose(fp);}MessageBox(NULL,TEXT(文件保存成功!放心关闭川"),TEXT('嘻嘻"),MB_OK);}EndDialog(hwnd,0);3.2编辑操作:剪切的实现:caseID_MENUITEMCUT://剪切{ SendDlgltemMessage(hwnd,IDC_RICHEDIT1,WM_CUT,0,0);//传递对话框中的容首先获取RichEdit中的容,WM_CUT传递要进行操作的容,0,0为两个WPARAM和LPARAM是约定的消息参数类型。break;}复制的实现:caseID_MENUITEMCOPY://复制9{ SendDlgltemMessage(hwnd,IDC_RICHEDIT1,WM_COPY,0,0);//传递对话框中的容首先获取RichEdit中的容,WM_COPY,传递要进行操作的容,0,0为两个WPARAM和LPARAM是约定的消息参数类型。break;}粘贴的实现:caseID_MENUITEMPASTE://粘贴{ SendDlgltemMessage(hwnd,IDC_RICHEDIT1,WM_PASTE,0,0);break;L清除的实现:caseID_MENUITEMEMPTY://清除{SetDlgltemText(hwnd,IDC_RICHEDIT1,"");break;}撤销的实现:caseID_MENUITEMUNDO: //撤销”菜单{SendDlgltemMessage(hwnd,IDC_RICHEDIT1,EM_UNDO,0,0);break;}删除的实现:caseID_MENUITEMDELETE: //删除{SendMessage(GetDlgltem(hwnd,IDC_RICHEDIT1),WM_CLEAR,0,0);}break;全选的实现:caseID_MENUITEMSELECTALL://全选{SendMessage(GetDlgltem(hwnd,IDC_RICHEDIT1),EM_SETSEL,0,-1);}break;系统时间的实现:VOIDCALLBACKMyTimerFun(HWNDhwnd,UINTmessage,UINTiTimerID,DWORDdwTime){SYSTEMTIMEstrLocal;//当前时间GetLocalTime(&strLocal);TCHARstr[256];wsprintf(str,"%04d-%02d-%02d%02d:%02d:%02d",strLocal.wYear,strLocal.wMonth,strLocal.wDay,strLocal.wHour,strLocal.wMinute,strLocal.wSecond);SetDlgltemText(hwnd,IDC_EDIT2,str);查找功能的实现:intcount=0;intLine_count=1;intRow_count=1;intnum=0;intflag=0;TCHARstr1[256];TCHARtemp1[5000];TCHARtemp2[5000];memset(temp1,0,5000);memset(temp2,0,5000);memset(str1,0,256);GetDlgltemText(hwnd,IDC_EDIT_FINDWORD,str1,sizeof(str1));if(strlen(str1)==0){MessageBox(NULL,TEXT查找的容为空,请输入容后再查找川"),TEXT「呜呜"),MB_OK);}else{inti=0;intj=0;while(str2[i]!='\0'){if((str2[i]=='\n')||(Row_count==63)){Line_count++;Rowcount=0;}if(str2[i]==str1[j]){i++;j++; Row_count++;if(str1[j]=='\0'){j=0;count++;wsprintf(temp2,"v%i>你要寻找的容在第:%i行,第:%i列至第:%i列!!!",count,Line_count,(Row_count-strlen(str1)),(Row_count-1));strcat(temp1,temp2);strcat(temp1,"\r\n");flag=1;}}else{i=i-j+1;j=0;Row_count++;}if(str2[i]=='\0'&&flag==1){SetDlgltemText(hwnd,IDC_EDIT2,temp1);MessageBox(NULL,temp1,TEXT(嘿嘿"),MB_OK);}if(str2[i]=='\0'&&flag==0){MessageBox(NULL,TEXT(没有你想要找的容,请重新输入查找的容"),TEXT(呜呜"),MB_OK);break;}}}}break;通过简单的字符串比配算法实现其功能(10)替换功能的实现:TCHAR*changeBlchange(TCHARSFTCHAR一CHART2=)—«>&黑至卅w幷宀infno八infli-o八IinfkHO八infllo八TCHAR*S1・wh=e((smHs))count・II IIo工+=h(T二IT2Q)li-p
llpSSHT2N}elseif(strlen(T1)>strlen(T2)){intnum2=strlen(T1)-strlen(T2);intlengthT2=strlen(T2);for(k=i;k<strlen(S)-num2;k++){|S[k]=S[k+num2];}for(k=(strlen(S)-num2);k<=strlen(S);k++){S[k]='\0';}for(k=i;k<(i+lengthT2);k++){S[k]=T2[l];l++;}j=0;l=0;}elseif(strlen(T1)<strlen(T2)){intnum3=strlen(T2)-strlen(T1);S1=newTCHAR[strlen(S)+num3];for(intk=0;k<i;k++){S1[k]=S[k];}for(intk2=i;k2<strlen(T2)+i;k2++){ S1[k2]=T2[k2-i];}for(intk3=i+strlen(T1);k3<strlen(S);k3++){S1[k3+num3]=S[k3];}S1[k3+num3]='\0';if(S[i]=='\0'){returnS1;}else{strcpy(S,S1);j=0;}}}}returnS;}也通过字符算的比配,一一找到后,一一替换,最后返回替换后的文本容;统计功能的实现:voidTotal_OnCommand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify){intLine_count=1;intRow_count=0;intTotal_count=0;intEnglish_count=0;intmath_count=0;intother_count=0;intspace_count=0;intpunct_count=0;TCHARtemp1[256];
TCHARtemp2[256];memset(temp1,0,256);memset(temp2,0,256);inti=0;while(total2[i]!='\0'){if((total2[i]!='')&&(total2[i]!='\r')&&(total2[i]!='\n')){Total_count++;}if((total2[i]>='a'&&total2[i]v='z')||(total2[i]>='A'&&total2[i]v='Z')){English_count++;}if(total2[i]>='0'&&total2[i]v=9){:math_count++;}||total2[i]==46 ||if(total2[i]==33||total2[i]==34 ||total2[i]==39 ||total2[i]==44||total2[i]==46 ||total2[i]==58||total2[i]==59||total2[i]==63){punct_count++;}if(total2[i]==''){spacecount++;}if((total2[i]=='\n')||(Rowcount==62)){Line_count++;Row_count=0;}else{Row_count++;}i++;}other_count=Total_count-English_count-math_count-punct_count;wsprintf(temp2,"<1>文本的行数为:%i!",Line_count-1);strcat(temp1,temp2);strcat(temp1,"\r\n");memset(temp2,0,256);wsprintf(temp2,"<2>文本的总字符数为:%i!",Total_count);strcat(temp1,temp2);strcat(temp1,"\r\n");memset(temp2,0,256);wsprintf(temp2,"<3>文本的英文字符数为:%i!",English_count);strcat(temp1,temp2);strcat(temp1,"\r\n");memset(temp2,0,256);wsprintf(temp2,"<4>文本的数字字符数为:%i!",math_count);strcat(temp1,temp2);strcat(temp1,"\r\n");memset(temp2,0,256);wsprintf(temp2,"<5>文本的空格数为:%i!",space_count);strcat(temp1,temp2);strcat(temp1,"\r\n");memset(temp2,0,256);wsprintf(temp2,"<6>文本的标点符号数为:%i!",punct_count);strcat(temp1,temp2);strcat(temp1,"\r\n");memset(temp2,0,256);wsprintf(temp2,"<7>文本的其它字符数为:%i!",other_count);strcat(temp1,temp2);strcat(temp1,"\r\n");memset(temp2,0,256);SetDlgltemText(hwnd,IDC_EDIT1,temp1)}通过传参,把文本信息传到副对话框中。然后对文本进行各项简单的统计3.3工具操作:北京音乐的实现:caseID_MENU_MUSIC:{TCHARshortPath[MAX_PATH];GetShortPathName("C:\\Documentsand 桌面 邓紫棋-寂寞星球的玫瑰.mp3",shortPath,sizeof(shortPath));//获取音乐的途径TCHARcmd[MAX_PATH+10];wsprintf(cmd,"play%s",shortPath);mciSendString(cmd,"",O,NULL);intret=MessageBox(NULL,TEXT你当前正在享受音乐!!!是否要退出"),TEXT("嘻嘻"),MB_YESNO|MB」CONQUESTION);if(ret==IDYES){MessageBox(NULL,TEXT(还好听吧!欢迎再欣赏!再见!!!"),TEXT("嘿嘿"),MB_OK)mciSendString("CLOSEcmd","",0,NULL);break;主要是通过mciSendString()API函数的使用3.4关于操作:(1)关于对话框的弹出实现:caseID_MENU_ABOUT:{HINSTANCEhlnstance=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);DialogBox(hlnstanee,MAKEINTRESOURCE(IDD_ABOUT),NULL,Main_Proc);break;}用DialogBox()函数实现对话框的弹出。访问百度实现:caseIDM_BAIDU: //访问百度网{ShellExecute(hwnd,TEXT("open"),TEXT(".baidu."),NULL,NULL,SW_SHOWNORMAL);break;}访问114实现:caseIDM_GOOGLE:{ShellExecute(hwnd,TEXT("open"),TEXT(".114la."),NULL,NULL,SW_SHOWNORMAL);break;}都是ShellExecute()函数的使用。4程序运行结果与调试4.1在调试过程中出现的一些问题(1)输入语句中没有加取地址符号&误把取地址运算符&当作逻辑与&&误把赋值二当恒等二二条件语句(if)后误加分号循环语句中改变了循环变量作为输出结果的变量没有赋初值4.2实验结果(1)记事本的主界面(2)编辑器中的操作项(3)编辑器中的编辑项编辑器中的工具项(5)编辑器中的帮助项|kr小型文聿輪辗霁文件®编辑②工貝⑴m00犬于®访1可日度Q)访问口4⑥1(6)打开文件测试_/&4itIT-」复徉Debug卫89H4760^&C^211&1£O4955&_2ud.lW592437n&9&9[1]_iUtacld.JQtgclfiS査吃范凰(ITRectut呈面我的文裆我的电脑我的酷盘h哄zchchch話ei文件名®:文件类型⑴:E一®®T画T同站NaiiiDlgHginDlhresource.h斶EtlKH[S|StdAfx.hw^TotiL|S|Total.l^TotalDlg世|TotiLDlg丘邸紫棋-『耳悴M尝型:CTF文件修改日ffi;2012-3-1512;18大水:12.1EB厂UL只i委方式打开观)(7)查找项测试(8)替换项测试(9)替换项测试5课程设计总结与感想通过本次课程设计,我学到了很多:增强了查阅相关参考资料的能力;独立分析解决问题的能力;创新精神;自己的上机动手的能力;自己对课程设计的理解,得到很多启示,知道了以后要加强哪一方面,还有哪一方面有用,课程设计为我们提供了一个即动手又动脑、独立实践的机会,将课本上的知识理论和实际有机的结合起来,锻炼了我们的分析解决实际问题的能力。提高离我们适应实际,实践编程的能力。参考文献:
[3]如鹏网[3]如鹏网《c语言也能看大事》如鹏网源代码intret=MessageBox(NULL,TEXT('是否把更改保存到新建的文本文档 川"),TEXT('温馨提示"),MB_YESNO|MB」CONQUESTION);if(ret==IDYES)//根据选择如果保存{OPENFILENAMEofn;//文件对象charszFile[MAX_PATH];〃文件的大小,最大ZeroMemory(&ofn,sizeof(ofn));//文件的初始化ofn.lStructSize=sizeof(ofn);ofn.lpstrFile=szFile;ofn.lpstrFile[0]=TEXT('\0');ofn.nMaxFile=sizeof(szFile);ofn.lpstrFilter=TEXT("ALL\0**\0Text\0*TXT\0C++\0*cpp\0"); //保存的文件类型ofn.nFilterlndex=1;ofn.lpstrFileTitle=NULL;ofn.nMaxFileTitle=0;ofn.lpstrInitialDir=NULL;ofn.hwndOwner=hwnd;ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;ofn.lpstrTitle=TEXT("保存");if(GetSaveFileName(&ofn)){FILE*fp;fp=fopen(szFile,"w");//打开文件if(fp==NULL){ MessageBox(NULL,TEXT(文件无法保存"),TEXT(呜呜"),MB_OK);TCHARstr[10000]TCHARend[10000];memset(end,0,10000);GetDlgltemText(hwnd,IDC_EDIT1,str,sizeof(str));fputs(str,fp);fclose(fp);}SetDlgltemText(hwnd,IDC_EDIT1,"");}else{SetDlgItemText(hwnd,IDCEDIT1,"");}caseID_MENUITEMOPEN: //文本的打开{OPENFILENAMEofn;charszFile[MAX_PATH];//保存路径变量ZeroMemory(&ofn,sizeof(ofn))ofn.lStructSize=sizeof(ofn);ofn.lpstrFile=szFile;//szFile是一个字符数组,那么szFile这个名字就代表这个字符数组的首地址这是一个指针的应用,把接收选择文件名的数组的地址传递到 GetOpenFileName函数中ofn.lpstrFile[0]=TEXT('\0');ofn.lpstrFile[0]=TEXT('\0');ofn.nMaxFile=sizeof(szFile);ofn.lpstrFilter=TEXT("ALL\0**\0Text\0*txt\0");ofn.nFilterlndex=1; //选择一个过滤器ofn.lpstrFileTitle=NULL;ofn.nMaxFileTitle=0;ofn.lpstrInitialDir=NULL;ofn.hwndOwner=hwnd;ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;if(GetOpenFileName(&ofn)){FILE*fp;fp=fopen(szFile,"r");if(fp==NULL){MessageBox(NULL,TEXT文件打开错误门,TEXT(记事本"),MBOK);}TCHARline[256];TCHARend[10000];memset(line,0,256);memset(end,0,256);while(!feof(fp)){fgets(line,sizeof(line),fp);lstrcat(end,line);intw=strlen(end);end[w-1]='\0';lstrcat(end,"\r\n");}SetDlgltemText(hwnd,IDC_RICHEDIT1,end)fclose(fp);//关闭文件}break;}break;caseID_MENUITEMSAVE: //文本的保存{OPENFILENAMEofnb;charbcFile[MAX_PATH];ofnb.lStructSize=sizeof(ofnb);ofnb.lpstrFile=bcFile;ofnb.lpstrFile[0]=TEXT('\0');ofnb.nMaxFile=sizeof(bcFile);ofnb.lpstrFilter=TEXT("ALL\0*.*\0Text\0*.txt\0");ofnb.nFilterlndex=1;ofnb.lpstrFileTitle=NULL;ofnb.nMaxFileTitle=0;ofnb.lpstrlnitialDir=NULL;ofnb.hwndOwner=hwnd;ofnb.Flags = OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST|OFN_OVERWRITEPROMPT;if(GetSaveFileName(&ofnb)){FILE*fp=fopen(".txt","w"); //保存所有文件都为txt格式TCHARbaoc[100000]; //保存的最大容量为100000GetDlgltemText(hwnd,IDC_RICHEDIT1,baoc,sizeof(baoc));fputs(baoc,fp);fclose(fp);}}break;intret=MessageBox(NULL,TEXT('是否把更改保存到新建的文本文档 川"),TEXT('温馨提示"),MB_YESNO|MB」CONQUESTION);if(ret==IDYES){OPENFILENAMEofn;charszFile[MAX_PATH];ZeroMemory(&ofn,sizeof(ofn));ofn.lStructSize=sizeof(ofn);ofn.lpstrFile=szFile;ofn.lpstrFile[0]=TEXT('\0');ofn.nMaxFile=sizeof(szFile);ofn.lpstrFilter=TEXT("ALL\0**\0Text\0*TXT\0C++\0*cpp\0");ofn.nFilterlndex=1;ofn.lpstrFileTitle=NULL;ofn.nMaxFileTitle=0;ofn.lpstrInitialDir=NULL;ofn.hwndOwner=hwnd;ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;ofn.lpstrTitle=TEXT("保存");if(GetSaveFileName(&ofn)){FILE*fp;fp=fopen(szFile,"w");if(fp==NULL){MessageBox(NULL,TEXT(文件无法保存"),TEXT(鸣呜"),MBOK);}TCHARstr[1OOOO];TCHARend[10000];memset(end,0,10000);GetDlgltemText(hwnd,IDC_EDIT1,str,sizeof(str));fputs(str,fp);fclose(fp);}MessageBox(NULL,TEXT(文件保存成功!放心关闭川"),TEXT('嘻嘻"),MB_OK);}EndDialog(hwnd,0);caseID_MENUITEMCUT://剪切{ SendDlgltemMessage(hwnd,IDC_RICHEDIT1,WM_CUT,0,0);//传递对话框中的容首先获取RichEdit中的容,WM_CUT传递要进行操作的容,0,0为两个WPARAM和LPARAM是约定的消息参数类型。break;} caseID_MENUITEMCOPY: //复希9{ SendDlgltemMessage(hwnd,IDC_RICHEDIT1,WM_COPY,0,0);//传递对话框中的容首先获取RichEdit中的容,WM_COPY,传递要进行操作的容,0,0为两个WPARAM和LPARAM是约定的消息参数类型。break;}caseID_MENUITEMPASTE://粘贴{ SendDlgltemMessage(hwnd,IDC_RICHEDIT1,WM_PASTE,0,0);break;}caseID_MENUITEMEMPTY://清除{SetDlgltemText(hwnd,IDC_RICHEDIT1,"");break;}caseID_MENUITEMUNDO: //撤销”菜单{SendDlgltemMessage(hwnd,IDC_RICHEDIT1,EM_UNDO,0,0);break;}caseID_MENUITEMDELETE: //删除{SendMessage(GetDlgltem(hwnd,IDC_RICHEDIT1),WM_CLEAR,0,0);}break;caseID_MENUITEMSELECTALL://全选{SendMessage(GetDlgltem(hwnd,IDC_RICHEDIT1),EM_SETSEL,0,-1);}break;VOIDCALLBACKMyTimerFun(HWNDhwnd,UINTmessage,UINTiTimerlD,DWORDdwTime){ SYSTEMTIMEstrLocal; //当前时间GetLocalTime(&strLocal);TCHARstr[256];wsprintf(str,"%04d-%02d-%02d%02d:%02d:%02d",strLocal.wYear,strLocal.wMonth,strLocal.wDay,strLocal.wHour,strLocal.wMinute,strLocal.wSecond);SetDlgItemText(hwnd,IDC_EDIT2,str);}intcount=0;intLine_count=1;intRow_count=1;intnum=O;intflag=O;TCHARstr1[256];TCHARtemp1[5000];TCHARtemp2[5000];memset(temp1,0,5000);memset(temp2,0,5000);memset(str1,0,256);GetDlgltemText(hwnd,IDC_EDIT_FINDWORD,str1,sizeof(str1));if(strlen(str1)==0){MessageBox(NULL,TEXT查找的容为空,请输入容后再查找川"),TEXT「呜呜"),MB_OK);}intj=0;while(str2[i]!='\0'){if((str2[i]=='\n')||(Row_count==63)){Line_count++;Rowcount=0;}if(str2[i]==str1[j]){i++;j++;Row_count++;if(str1[j]=='\0'){j=0;count++;wsprintf(temp2,"v%i>你要寻找的容在第:%i行,第:%i列至第:%i列!!!",count,Line_count,(Row_count-strlen(str1)),(Row_count-1));strcat(temp1,temp2);strcat(temp1,"\r\n");flag=1;}}else{i=i-j+1;j=0;Row_count++;}if(str2[i]=='\0'&&flag==1){SetDlgltemText(hwnd,IDC_EDIT2,temp1)MessageBox(NULL,temp1,TEXT(嘿嘿"),MBOK);}if(str2[i]=='\0'&&flag==0){MessageBox(NULL,TEXT(没有你想要找的容,请重新输入查找的容"),TEXT(呜呜"),MB_OK);break;}}}}rbreak;TCHAR*change::D_change(TCHARS[],TCHART1[],TCHART2[])//替换功能的主算法{ inti=0;intj=0;intk=0;intl=0;TCHAR*S1;while((S[i]!='\0')){if(S[i]==T1[j]){i++;j++;count1=i;}else{i=i-j+1;j=0;count1=i;}if(T1[j]=='\0'){i=i-j;if(strlen(T1)==strlen(T2)){intnum仁strlen(T1);for(k=i;k<i+num1;k++){S[k]=T2[l];l++;}j=0;l=0;}elseif(strlen(T1)>strlen(T2)){ intnum2=strlen(T1)-strlen(T2);intlengthT2=strlen(T2);for(k=i;k<strlen(S)-num2;k++){S[k]=S[k+num2];}for(k=(strlen(S)-num2);k<=strlen(S);k++){S[k]='\0';}for(k=i;k<(i+lengthT2);k++){S[k]=T2[l];l++;}j=0;l=0;}elseif(strlen(T1)<strlen(T2)){intnum3=strlen(T2)-strlen(T1);S1=newTCHAR[strlen(S)+num3];for(intk=0;k<i;k++){S1[k]=S[k];}for(intk2=i;k2<strlen(T2)+i;k2++){S1[k2]=T2[k2-i];} for(intk3=i+strlen(T1);k3<strlen(S);k3++){S1[k3+num3]=S[k3];}S1[k3+num3]='\0';if(S[i]=='\O')j=0;}}}}returnS;}voidTotal_OnCommand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify){intLine_count=1;intRow_count=0;intTotal_count=0;intEnglish_count=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年03月四川达州市综合应急救援支队公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年03月天台经济开发区事务中心选聘工作人员笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 甲基六氢苯酐项目风险分析和评估报告
- 环型荧光灯管项目安全评估报告
- 机载检测设备项目安全评估报告
- 浙江省嵊州市谷来镇中学2025届初三下-第四次月考物理试题试卷含解析
- 华北水利水电大学《日语报刊阅读》2023-2024学年第一学期期末试卷
- 武汉纺织大学《体育教育学》2023-2024学年第二学期期末试卷
- 水处理絮凝剂TXY-1TXY-3项目安全评估报告
- 临夏现代职业学院《环境保护与建筑节能》2023-2024学年第二学期期末试卷
- 粤教版四年级劳动与技术 第二单元 小泥巴变变变 活动2 泥塑杯子 教案
- 2024-2030年中国骆驼奶制造市场销售格局与发展趋势前景分析研究报告
- 2024年实验室保密规定
- 2024年广东省广州市市中考英语试卷真题(含答案解析)
- 2024年国家林业和草原局华东调查规划设计院招聘高校毕业生10人历年(高频重点复习提升训练)共500题附带答案详解
- 2023年拉萨市“一考三评”备考试题库-下(多选、判断题部分)
- 资产评估收费管理办法(2009)2914
- 2024-2029全球及中国柚子果实提取物行业市场发展分析及前景趋势与投资发展研究报告
- 公共部位装修合同
- 2024年广东省惠州市惠城区中考二模物理试卷
- 2024年山东省青岛市部分学校九年级中考二模数学试题(含答案)
评论
0/150
提交评论