操作系統(tǒng)課程設計---文本編輯器_第1頁
已閱讀1頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  福建農林大學計算機與信息學院</p><p><b>  課程設計報告</b></p><p><b>  年 月 日</b></p><p>  課程設計報告結果評定</p><p><b>  目 錄</b></p><p&

2、gt;  采用技術----------------------------------------------------------</p><p>  1、visual studio 2005編輯環(huán)境-------------------------------</p><p>  2、C#的窗體編程-------------------------------------------

3、-------</p><p>  二、選題說明------------------------------------------------------------ 三、總體說明-----------------------------------------------------</p><p>  1、程序的基本結構------------------------------

4、-----------------</p><p>  程序的主要技術---------------------------------------------</p><p>  四、詳細設計------------------------------------------------------------</p><p>  1、文件操作----------

5、----------------------------------------------</p><p>  編輯操作-------------------------------------------------------</p><p>  工具操作-------------------------------------------------------</p>

6、<p>  關于操作-------------------------------------------------------</p><p>  五、編碼與調試分析--------------------------------------------------</p><p>  六、運行結果-------------------------------------

7、-----------------------</p><p>  七、課程設計心得體會----------------------------------------------</p><p>  八、部分程序代碼-----------------------------------------------------</p><p><b>  一、

8、采用技術</b></p><p>  1. visual studio 2005編輯環(huán)境</p><p>  Visual Studio 是微軟公司推出的開發(fā)環(huán)境。是目前最流行的 Windows 平臺應用程序開發(fā)環(huán)境。目前已經開發(fā)到 8.0 版本,也就是 Visual Studio 2005。 Visual Studio 可以用來創(chuàng)建 Windows 平臺下的 Win

9、dows 應用程序和網絡應用程序,也可以用來創(chuàng)建網絡服務、智能設備應用程序和 Office 插件。</p><p>  Visual Studio 是一套完整的開發(fā)工具集,用于生成 ASP.NET Web 應用程序、XML Web Services、桌面應用程序和移動應用程序。Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成開發(fā)環(huán)境 (IDE),利用此

10、 IDE 可以共享工具且有助于創(chuàng)建混合語言解決方案。另外,這些語言利用了 .NET Framework 的功能,通過此框架可使用簡化 ASP Web 應用程序和 XML Web Services 開發(fā)的關鍵技術。</p><p><b>  2.C#的窗體編程</b></p><p>  Windows 窗體是用于 Microsoft Windows 應用程序開發(fā)的、

11、基于 .NET Framework 的新平臺。此框架提供一個有條理的、面向對象的、可擴展的類集,使您能夠開發(fā)功能豐富的 Windows 應用程序。另外,Windows 窗體可作為多層分布式解決方案中的本地用戶界面。</p><p>  窗體是一種文檔,可以用來收集信息。它包括兩部分,一部分是由窗體設計者輸入的,填寫窗體的人無法更改的文字或圖形。窗體設計者可以插入希望得到回答的問題、選項列表、信息表格等。另一部分是

12、由窗體填寫者輸入的,用于從填寫窗體者處收集信息并進行整理的空白區(qū)域。窗體設計者可以在文檔中插入窗體域或 ActiveX 控件,為窗體填寫者提供用于收集數據的位置。</p><p><b>  二、選題說明</b></p><p>  隨著科技的發(fā)展,人們對精神生活要求的越來越高,紙質的手動式的書寫方式已經不是能夠代表新世紀的生活需要了,所以現在各種不同功能的文本編輯器

13、已經悄悄走進我們的生活和學習中,像簡單的就有記事本。 但是一個簡單的文本編輯器也是很重要的,是基礎。所以在結合自己的一個學期的很認真的學習c#后,決定自己編譯一個類似與記事本的,但功能比記事本強大的文本編輯器。</p><p>  文本編輯器的基本功能: </p><p>  該文本編輯器是用windows編寫的一個程序,運行后彈出文本編輯器的主界面,由鍵盤輸入或以打開的方式輸入或顯示文本

14、文件內容。其中程序的編輯項可對當前的文本進行撤銷、刪除、剪切、復制、粘貼、在文本里顯示當前時間、全選、清除、查找、替換、統(tǒng)計等功能。程序的文件項可以對電腦上txt,c++等格式文件的打開、對當前文本的保存和另存、對當前文本的的新建以及退出文本編輯系統(tǒng)。程序的工具項為背景音樂,為用戶提供了優(yōu)美動聽的音樂,僅在用戶編輯疲憊乏力的時候盡情的享用。最后在程序的幫助項有對該小型文本編輯器的關于,用來介紹該程序,還有訪問鏈接百度,訪問114網頁大全

15、,為用戶提供查找資料等功能服務。</p><p><b>  輸入形式:</b></p><p> ?、僦苯釉谖谋揪庉嬁蛑休斎胛谋緝热荩?lt;/p><p> ?、谝源蜷_的方式打開并在文本框中顯示電腦的上文本。</p><p><b>  輸出形式:</b></p><p>  

16、①對編輯框中尚無文本內容時進行查找、替換、統(tǒng)計等,程序會彈出一個提示尚無文本信息的小對話框,需輸入文本后再進行以上操作。</p><p> ?、趯庉嬁蛑幸延形谋緝热莺筮M行查找、替換、統(tǒng)計操作,程序將彈出與之對應的對話框,根據所彈出的對話框的按鍵要求進行之后的操作就可以。保存文件,另存為等功能都異曲同工,撤銷、刪除、剪切、復制、 粘貼、等就直接在主文本編輯框中操作,直接在其顯示操作后的文本信 息。</p&

17、gt;<p>  測試數據要求:任意一文本文件。</p><p><b>  三.總體說明</b></p><p><b>  程序的基本結構</b></p><p>  操作界面的主窗口為文本編輯器的主入口,類似于記事本的形式,菜單欄要如下的幾項(),另外還有兩個簡單的toolstripe式的圖片按鈕,分別

18、是新建和保存。當點擊新建的時候,會彈出我們將要編輯的文檔文本窗口,這是我們編寫文字的地方。書寫完畢后,要先確認是否保存此文件夾,這樣就不會發(fā)生自己所編輯的內容會丟失。</p><p><b>  程序的主要技術</b></p><p>  (1)編寫要先新建,編寫之后要有保存功能; </p><p>  (2)基本的操作功能如,復制、粘貼、剪切

19、、撤銷等;</p><p> ?。?)還可以設置文字的字體字形和字體的顏色。</p><p><b>  四、詳細設計</b></p><p><b>  〔1〕、文件操作:</b></p><p>  1、文件的新建的實現:</p><p>  int ret=Messag

20、eBox(NULL,TEXT("是否把更改保存到新建的文本文檔!!!"),TEXT("溫馨提示"),MB_YESNO | MB_ICONQUESTION);</p><p>  if(ret==IDYES) //根據選擇如果保存</p><p><b>  {</b></p><p>  OPENFIL

21、ENAME ofn; //文件對象</p><p>  char szFile[MAX_PATH]; //文件的大小,最大</p><p>  ZeroMemory(&ofn,sizeof(ofn)); //文件的初始化</p><p>  ofn.lStructSize = sizeof(ofn);</p><p>  ofn.

22、lpstrFile = szFile;</p><p>  ofn.lpstrFile[0] = TEXT('\0');</p><p>  ofn.nMaxFile = sizeof(szFile);</p><p>  ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0C++\0*.cpp\0

23、"); //保存的文件類型</p><p>  ofn.nFilterIndex = 1;</p><p>  ofn.lpstrFileTitle = NULL;</p><p>  ofn.nMaxFileTitle = 0;</p><p>  ofn.lpstrInitialDir = NULL;</p>&

24、lt;p>  ofn.hwndOwner = hwnd;</p><p>  ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;</p><p>  ofn.lpstrTitle=TEXT("保存");</p><p>  if (GetSaveFileName(

25、&ofn)) </p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  fp=fopen(szFile,"w"); //打開文件</p><p>  if(fp==NULL)</p><p&

26、gt;<b>  {</b></p><p>  MessageBox(NULL,TEXT("文件無法保存"),TEXT("嗚嗚"),MB_OK);</p><p><b>  }</b></p><p>  TCHAR str[10000];</p><p>

27、;  TCHAR end[10000];</p><p>  memset(end,0,10000);</p><p>  GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));</p><p>  fputs(str,fp);</p><p>  fclose(fp);</p><

28、p><b>  }</b></p><p>  SetDlgItemText(hwnd,IDC_EDIT1,"");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {<

29、/b></p><p>  SetDlgItemText(hwnd,IDC_EDIT1,"");</p><p><b>  }</b></p><p>  2、文件打開的實現:</p><p>  case ID_MENUITEMOPEN: //文本的打開</p>

30、<p><b>  {</b></p><p>  OPENFILENAME ofn;</p><p>  char szFile[MAX_PATH]; //保存路徑變量</p><p>  ZeroMemory(&ofn,sizeof(ofn));</p><p>  在這里我們使用ZeroMem

31、ory“函數”,ZeroMemory其實并不是函數,看一下ZeroMemory的定義:</p><p>  ofn.lStructSize = sizeof(ofn);</p><p>  ofn.lpstrFile = szFile; </p><p>  //szFile是一個字符數組,那么szFile這個名字就代表這個字符數組的首地址</p>

32、<p>  這是一個指針的應用,把接收選擇文件名的數組的地址傳遞到GetOpenFileName函數中。 ofn.lpstrFile[0] = TEXT('\0');</p><p>  ofn.lpstrFile[0] = TEXT('\0');效果等價于ZeroMemory(szFile,sizeof(szFile)/sizeof(char));&l

33、t;/p><p>  ofn.nMaxFile = sizeof(szFile);</p><p>  ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.txt\0");</p><p><b>  文件過濾器</b></p><p>  *.*就表示所有文件*.tx

34、t就表示所有文本文件abc*.*就表示所有以abc開頭的文件abc*.txt就表示所有以abc開頭的文本文件(txt) </p><p>  ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0");用“\0”分割出幾個段,每兩段是一組過濾器,每組的第一個段代表過濾器的顯示的值,而第二段表示真正的過濾器</p><p> 

35、 ofn.nFilterIndex = 1; //選擇一個過濾器</p><p>  ofn.lpstrFileTitle = NULL;</p><p>  windows的一個慣例:結構體的指針類型別名一般是LP+結構體的名字GetOpenFileName(&ofn)而不是GetOpenFileName(ofn),因為GetOpenFileName函數要的是OPENFILE

36、NAME的指針(8)只要用戶還沒關閉對話框,那么GetOpenFileName函數是停住的,同步模式的PlaySound以及getchar、scanf是一樣的。用戶關閉對話框,GetOpenFileName函數返回,返回值是BOOL,等于TRUE表示用戶選擇了文件,如果等于FALSE就表示用戶選擇了【取消】按鈕</p><p>  ofn.nMaxFileTitle = 0;</p><p

37、>  ofn.lpstrInitialDir = NULL;</p><p>  ofn.hwndOwner = hwnd;</p><p>  ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;</p><p>  if(GetOpenFileName(&ofn)) <

38、;/p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  fp=fopen(szFile,"r");</p><p>  if(fp==NULL)</p><p><b>  {</b&

39、gt;</p><p>  MessageBox(NULL,TEXT("文件打開錯誤!"),TEXT("記事本"),MB_OK);</p><p><b>  }</b></p><p>  TCHAR line[256];</p><p>  TCHAR end[10000];&

40、lt;/p><p>  memset(line,0,256);</p><p>  memset(end,0,256);</p><p>  while(!feof(fp))</p><p><b>  {</b></p><p>  fgets(line,sizeof(line),fp);</

41、p><p>  lstrcat(end,line);</p><p>  int w=strlen(end);</p><p>  end[w-1]='\0';</p><p>  lstrcat(end,"\r\n");</p><p><b>  }</b>&l

42、t;/p><p>  SetDlgItemText(hwnd,IDC_RICHEDIT1,end);</p><p>  fclose(fp); //關閉文件</p><p><b>  }</b></p><p><b>  break;</b></p><p><

43、b>  }</b></p><p><b>  break;</b></p><p>  3、文件保存的實現:</p><p>  case ID_MENUITEMSAVE: //文本的保存</p><p><b>  {</b></p><p&

44、gt;  OPENFILENAME ofnb;</p><p>  char bcFile[MAX_PATH];</p><p>  ZeroMemory(&ofnb,sizeof(ofnb));</p><p>  ofnb.lStructSize = sizeof(ofnb);</p><p>  ofnb.lpstrFile =

45、 bcFile;</p><p>  ofnb.lpstrFile[0] = TEXT('\0');</p><p>  ofnb.nMaxFile = sizeof(bcFile);</p><p>  ofnb.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.txt\0");</p>

46、<p>  ofnb.nFilterIndex = 1;</p><p>  ofnb.lpstrFileTitle = NULL;</p><p>  ofnb.nMaxFileTitle = 0;</p><p>  ofnb.lpstrInitialDir = NULL;</p><p>  ofnb.hwndOwner =

47、hwnd;</p><p>  ofnb.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST|OFN_OVERWRITEPROMPT;</p><p>  if (GetSaveFileName(&ofnb))</p><p><b>  {</b></p>

48、<p>  FILE * fp = fopen (".txt","w"); //保存所有文件都為txt格式</p><p>  TCHAR baoc [100000]; //保存的最大容量為100000</p><p>  GetDlgItemText(hwnd,IDC_RICHEDIT1,baoc,sizeof(baoc))

49、;</p><p>  fputs(baoc,fp);</p><p>  fclose(fp);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p>&

50、lt;p>  退出文本編輯器的實現:</p><p>  int ret=MessageBox(NULL,TEXT("是否把更改保存到新建的文本文檔!!!"),TEXT("溫馨提示"),MB_YESNO | MB_ICONQUESTION);</p><p>  if(ret==IDYES)</p><p><b&

51、gt;  {</b></p><p>  OPENFILENAME ofn;</p><p>  char szFile[MAX_PATH];</p><p>  ZeroMemory(&ofn,sizeof(ofn));</p><p>  ofn.lStructSize = sizeof(ofn);</p>

52、<p>  ofn.lpstrFile = szFile;</p><p>  ofn.lpstrFile[0] = TEXT('\0');</p><p>  ofn.nMaxFile = sizeof(szFile);</p><p>  ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.

53、TXT\0C++\0*.cpp\0");</p><p>  ofn.nFilterIndex = 1;</p><p>  ofn.lpstrFileTitle = NULL;</p><p>  ofn.nMaxFileTitle = 0;</p><p>  ofn.lpstrInitialDir = NULL;</p&

54、gt;<p>  ofn.hwndOwner = hwnd;</p><p>  ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;</p><p>  ofn.lpstrTitle=TEXT("保存");</p><p>  if (GetSaveFil

55、eName(&ofn)) </p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  fp=fopen(szFile,"w");</p><p>  if(fp==NULL)</p><p>

56、;<b>  {</b></p><p>  MessageBox(NULL,TEXT("文件無法保存"),TEXT("嗚嗚"),MB_OK);</p><p><b>  }</b></p><p>  TCHAR str[10000];</p><p> 

57、 TCHAR end[10000];</p><p>  memset(end,0,10000);</p><p>  GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));</p><p>  fputs(str,fp);</p><p>  fclose(fp);</p><p&

58、gt;<b>  }</b></p><p>  MessageBox(NULL,TEXT("文件保存成功!放心關閉!!!"),TEXT("嘻嘻"),MB_OK);</p><p><b>  }</b></p><p>  EndDialog(hwnd, 0);</p>

59、<p><b>  〔2〕、編輯操作:</b></p><p><b>  1、剪切的實現:</b></p><p>  case ID_MENUITEMCUT: //剪切</p><p>  {SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_CUT,0,0);<

60、;/p><p>  //傳遞對話框中的內容首先獲取RichEdit中的內容,WM_CUT,傳遞要進行操作的內容,0,0為兩個WPARAM和LPARAM是約定的消息參數類型。</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  2

61、、復制的實現:</b></p><p>  case ID_MENUITEMCOPY: //復制</p><p>  {SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_COPY,0,0);</p><p>  //傳遞對話框中的內容首先獲取RichEdit中的內容,WM_COPY,,傳遞要進行操作的內容,0,0

62、為兩個WPARAM和LPARAM是約定的消息參數類型。</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  3、粘貼的實現:</b></p><p>  case ID_MENUITEMPASTE: //粘貼

63、</p><p>  { SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_PASTE,0,0);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  4、清除的實現:</b>

64、;</p><p>  case ID_MENUITEMEMPTY: //清除</p><p><b>  {</b></p><p>  SetDlgItemText(hwnd,IDC_RICHEDIT1,"");</p><p><b>  break;</b><

65、/p><p><b>  }</b></p><p><b>  5、撤銷的實現:</b></p><p>  case ID_MENUITEMUNDO: //“撤銷”菜單</p><p><b>  {</b></p><p>  SendD

66、lgItemMessage(hwnd,IDC_RICHEDIT1, EM_UNDO, 0, 0);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  6、刪除的實現:</b></p><p>  case ID

67、_MENUITEMDELETE: //刪除</p><p><b>  {</b></p><p>  SendMessage(GetDlgItem(hwnd, IDC_RICHEDIT1), WM_CLEAR, 0, 0);</p><p><b>  }</b></p><p><

68、b>  break;</b></p><p><b>  7、全選的實現:</b></p><p>  case ID_MENUITEMSELECTALL: //全選</p><p><b>  {</b></p><p>  SendMessage(GetDlgItem(hw

69、nd, IDC_RICHEDIT1), EM_SETSEL, 0, -1);</p><p><b>  }</b></p><p><b>  break;</b></p><p>  8、系統(tǒng)時間的實現:</p><p>  VOID CALLBACK MyTimerFun(HWND hwnd,

70、 UINT message, UINT iTimerID, DWORD dwTime)</p><p><b>  { </b></p><p>  SYSTEMTIME strLocal; //當前時間</p><p>  GetLocalTime(&strLocal);</p><p>  TCHAR

71、 str[256];</p><p>  wsprintf(str,"%04d-%02d-%02d %02d:%02d:%02d",strLocal.wYear,strLocal.wMonth,</p><p>  strLocal.wDay,strLocal.wHour,strLocal.wMinute,strLocal.wSecond);</p>&l

72、t;p>  SetDlgItemText(hwnd,IDC_EDIT2,str);</p><p><b>  }</b></p><p>  9、查找功能的實現:</p><p>  int count=0;</p><p>  int Line_count=1;</p><p>  in

73、t Row_count=1;</p><p>  int num=0;</p><p>  int flag=0;</p><p>  TCHAR str1[256];</p><p>  TCHAR temp1[5000];</p><p>  TCHAR temp2[5000];</p><p&

74、gt;  memset(temp1,0,5000);</p><p>  memset(temp2,0,5000);</p><p>  memset(str1,0,256);</p><p>  GetDlgItemText(hwnd,IDC_EDIT_FINDWORD,str1,sizeof(str1));</p><p>  if(st

75、rlen(str1)==0)</p><p><b>  {</b></p><p>  MessageBox(NULL,TEXT("查找的內容為空,請輸入內容后再查找!!!"),TEXT("嗚嗚"),MB_OK);</p><p><b>  }</b></p>&l

76、t;p><b>  else</b></p><p><b>  {</b></p><p><b>  int i=0;</b></p><p><b>  int j=0;</b></p><p>  while(str2[i]!='\0

77、' )</p><p><b>  {</b></p><p>  if((str2[i]=='\n') || (Row_count==63))</p><p><b>  {</b></p><p>  Line_count++;</p><p> 

78、 Row_count=0;</p><p><b>  }</b></p><p>  if(str2[i]==str1[j])</p><p>  { </p><p><b>  i++;</b></p><p><b>  j++;&l

79、t;/b></p><p>  Row_count++;</p><p>  if(str1[j]=='\0')</p><p><b>  {</b></p><p><b>  j=0;</b></p><p><b>  count++;

80、</b></p><p>  wsprintf(temp2,"<%i>你要尋找的內容在第:%i 行,第:%i 列至第:%i 列!!!",count,Line_count,(Row_count-strlen(str1)),(Row_count-1));</p><p>  strcat(temp1,temp2);</p><p&

81、gt;  strcat(temp1,"\r\n"); </p><p><b>  flag=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b>&l

82、t;/p><p><b>  {</b></p><p><b>  i=i-j+1;</b></p><p><b>  j=0;</b></p><p>  Row_count++; </p><p><b>  }</b>&l

83、t;/p><p>  if(str2[i]=='\0' && flag==1)</p><p><b>  {</b></p><p>  SetDlgItemText(hwnd,IDC_EDIT2,temp1);</p><p>  MessageBox(NULL,temp1,TEXT(&q

84、uot;嘿嘿"),MB_OK);</p><p><b>  }</b></p><p>  if(str2[i]=='\0' && flag==0)</p><p><b>  { </b></p><p>  MessageBox(NULL,TEXT(&

85、quot;沒有你想要找的內容,請重新輸入查找的內容"),TEXT("嗚嗚"),MB_OK);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  } </b></p><p>&

86、lt;b>  }</b></p><p><b>  } </b></p><p><b>  break;</b></p><p>  通過簡單的字符串比配算法實現其功能。</p><p>  9、替換功能的實現:</p><p>  TCHAR *cha

87、nge::D_change(TCHAR S[], TCHAR T1[] ,TCHAR T2[]) //替換功能的主算法</p><p><b>  {</b></p><p><b>  int i=0;</b></p><p><b>  int j=0;</b></p><p

88、><b>  int k=0;</b></p><p><b>  int l=0;</b></p><p>  TCHAR *S1;</p><p>  while((S[i]!='\0'))</p><p><b>  {</b></p>

89、<p>  if(S[i]==T1[j])</p><p><b>  {</b></p><p><b>  i++;</b></p><p><b>  j++;</b></p><p><b>  count1=i;</b></p&

90、gt;<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  i=i-j+1;</b></p><p><b>  j=0;</b>

91、;</p><p><b>  count1=i;</b></p><p><b>  }</b></p><p>  if(T1[j]=='\0')</p><p><b>  {</b></p><p><b>  i=i-

92、j;</b></p><p>  if(strlen(T1)==strlen(T2))</p><p><b>  {</b></p><p>  int num1=strlen(T1);</p><p>  for(k=i;k<i+num1;k++)</p><p><b

93、>  {</b></p><p>  S[k]=T2[l];</p><p><b>  l++;</b></p><p><b>  }</b></p><p><b>  j=0;</b></p><p><b>  l=

94、0;</b></p><p><b>  }</b></p><p>  else if(strlen(T1)>strlen(T2))</p><p><b>  {</b></p><p>  int num2=strlen(T1)-strlen(T2);</p>

95、<p>  int lengthT2=strlen(T2);</p><p>  for(k=i;k<strlen(S)-num2;k++)</p><p><b>  {</b></p><p>  S[k]=S[k+num2];</p><p><b>  }</b></p

96、><p>  for(k=(strlen(S)-num2);k<=strlen(S);k++)</p><p><b>  {</b></p><p>  S[k]='\0';</p><p><b>  } </b></p><p>  for(k=i;k

97、<(i+lengthT2);k++)</p><p><b>  {</b></p><p>  S[k]=T2[l];</p><p><b>  l++;</b></p><p><b>  }</b></p><p><b>  j

98、=0;</b></p><p><b>  l=0;</b></p><p><b>  }</b></p><p>  else if(strlen(T1)<strlen(T2))</p><p><b>  {</b></p><p&g

99、t;  int num3=strlen(T2)-strlen(T1);</p><p>  S1=new TCHAR[strlen(S)+num3];</p><p>  for(int k=0;k<i;k++)</p><p><b>  {</b></p><p>  S1[k]=S[k];</p>

100、<p><b>  }</b></p><p>  for(int k2=i;k2<strlen(T2)+i;k2++)</p><p><b>  {</b></p><p>  S1[k2]=T2[k2-i];</p><p><b>  }</b>&l

101、t;/p><p>  for(int k3=i+strlen(T1);k3<strlen(S);k3++)</p><p><b>  {</b></p><p>  S1[k3+num3]=S[k3];</p><p><b>  }</b></p><p>  S1[k

102、3+num3]='\0';</p><p>  if(S[i]=='\0')</p><p><b>  {</b></p><p>  return S1;</p><p><b>  }</b></p><p><b>  els

103、e</b></p><p><b>  {</b></p><p>  strcpy(S,S1);</p><p><b>  j=0;</b></p><p><b>  }</b></p><p><b>  }</b&g

104、t;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return S;</b></p><p><b>  }</b></p><p>  也通過字符算的比配,一一找到后

105、,一一替換,最后返回替換后的文本內容;</p><p>  9、統(tǒng)計功能的實現:</p><p>  void Total_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)</p><p><b>  {</b></p><p>  int Line

106、_count=1;</p><p>  int Row_count=0;</p><p>  int Total_count=0;</p><p>  int English_count=0;</p><p>  int math_count=0;</p><p>  int other_count=0;</p&

107、gt;<p>  int space_count=0;</p><p>  int punct_count=0;</p><p>  TCHAR temp1[256];</p><p>  TCHAR temp2[256];</p><p>  memset(temp1,0,256);</p><p> 

108、 memset(temp2,0,256);</p><p><b>  int i=0;</b></p><p>  while(total2[i]!='\0')</p><p><b>  {</b></p><p>  if((total2[i]!=' ') &a

109、mp;& (total2[i]!='\r') && (total2[i]!='\n'))</p><p><b>  {</b></p><p>  Total_count++;</p><p><b>  }</b></p><p>  if

110、((total2[i]>='a' && total2[i]<='z') || (total2[i]>='A' && total2[i]<='Z'))</p><p><b>  {</b></p><p>  English_count++;<

111、/p><p><b>  }</b></p><p>  if(total2[i]>='0' && total2[i]<='9')</p><p><b>  {</b></p><p>  math_count++;</p>&

112、lt;p><b>  }</b></p><p>  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)</p><p><b>

113、  {</b></p><p>  punct_count++;</p><p><b>  }</b></p><p>  if(total2[i]==' ')</p><p><b>  {</b></p><p>  space_count+

114、+;</p><p><b>  }</b></p><p>  if((total2[i]=='\n') || (Row_count==62))</p><p><b>  {</b></p><p>  Line_count++;</p><p>  Ro

115、w_count=0;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  Row_count++; </p><p><b>  }</b&

116、gt;</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  other_count=Total_count-English_count-math_count-punct_count;</p><p>  wsprintf(temp2,"

117、<1>文本的行數為:%i !",Line_count-1);</p><p>  strcat(temp1,temp2);</p><p>  strcat(temp1,"\r\n");</p><p>  memset(temp2,0,256);</p><p>  wsprintf(temp2,&

118、quot;<2>文本的總字符數為:%i !",Total_count);</p><p>  strcat(temp1,temp2);</p><p>  strcat(temp1,"\r\n");</p><p>  memset(temp2,0,256);</p><p>  wsprintf(t

119、emp2,"<3>文本的英文字符數為:%i !",English_count);</p><p>  strcat(temp1,temp2);</p><p>  strcat(temp1,"\r\n");</p><p>  memset(temp2,0,256);</p><p>  w

120、sprintf(temp2,"<4>文本的數字字符數為:%i !",math_count);</p><p>  strcat(temp1,temp2);</p><p>  strcat(temp1,"\r\n");</p><p>  memset(temp2,0,256);</p><p&

121、gt;  wsprintf(temp2,"<5>文本的空格數為:%i !",space_count);</p><p>  strcat(temp1,temp2);</p><p>  strcat(temp1,"\r\n");</p><p>  memset(temp2,0,256);</p>&

122、lt;p>  wsprintf(temp2,"<6>文本的標點符號數為:%i !",punct_count);</p><p>  strcat(temp1,temp2);</p><p>  strcat(temp1,"\r\n");</p><p>  memset(temp2,0,256);</p

123、><p>  wsprintf(temp2,"<7>文本的其它字符數為:%i !",other_count);</p><p>  strcat(temp1,temp2);</p><p>  strcat(temp1,"\r\n");</p><p>  memset(temp2,0,256)

124、;</p><p>  SetDlgItemText(hwnd,IDC_EDIT1,temp1);</p><p><b>  }</b></p><p>  通過傳參,把文本信息傳到副對話框中。然后對文本進行各項簡單的統(tǒng)計</p><p><b>  〔3〕、工具操作:</b></p>

125、<p><b>  北京音樂的實現:</b></p><p>  case ID_MENU_MUSIC:</p><p><b>  {</b></p><p>  TCHAR shortPath[MAX_PATH];</p><p>  GetShortPathName("

126、C:\\Documents and Settings\\user\\桌面\\edit\\鄧紫棋 - 寂寞星球的玫瑰.mp3",shortPath,sizeof(shortPath)); //獲取音樂的途徑</p><p>  TCHAR cmd[MAX_PATH+10];</p><p>  wsprintf(cmd,"play %s",shortPath)

127、;</p><p>  mciSendString(cmd," ",0,NULL);</p><p>  int ret = MessageBox(NULL,TEXT("你當前正在享受音樂!!!是否要退出"),TEXT("嘻嘻"),MB_YESNO | MB_ICONQUESTION);</p><p> 

128、 if(ret==IDYES)</p><p><b>  {</b></p><p>  MessageBox(NULL,TEXT("還好聽吧!歡迎再欣賞!再見!!!"),TEXT("嘿嘿"),MB_OK);</p><p>  mciSendString("CLOSE cmd",&

129、quot; ",0,NULL);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p&g

130、t;<b>  break;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  主要是通過mciSendString()API函數的使用。</

131、p><p><b>  〔4〕、關于操作:</b></p><p>  1、關于對話框的彈出實現:</p><p>  case ID_MENU_ABOUT:</p><p><b>  {</b></p><p>  HINSTANCE hInstance=(HINSTANCE

132、)GetWindowLong(hwnd,GWL_HINSTANCE);</p><p>  DialogBox(hInstance, MAKEINTRESOURCE(IDD_ABOUT), NULL, Main_Proc);</p><p><b>  break;</b></p><p><b>  }</b></

133、p><p>  用DialogBox()函數實現對話框的彈出。</p><p><b>  2、訪問百度實現:</b></p><p>  case IDM_BAIDU: //訪問百度網</p><p><b>  {</b></p><p>  ShellExecute

134、(hwnd,TEXT("open"),TEXT("www.baidu.com"),NULL,NULL,SW_SHOWNORMAL);</p><p><b>  break;</b></p><p><b>  }</b></p><p>  3、訪問114實現:</p>

135、<p>  case IDM_GOOGLE:</p><p><b>  {</b></p><p>  ShellExecute(hwnd,TEXT("open"),TEXT("www.114la.com"),NULL,NULL,SW_SHOWNORMAL);</p><p><b&

136、gt;  break;</b></p><p><b>  }</b></p><p>  都是ShellExecute()函數的使用。</p><p><b>  五、編碼與調試分析</b></p><p>  1.確定好語言后,設計主界面,參考windows自帶的記事本開始設計,需要

137、實現的各個功能現在主界面的下拉菜單中顯示,還有時間的顯示框的設計,關于對話框的設計,替換對話框的設計,查找對話框的設計,以及統(tǒng)計對話框的設計。接下來開始一一實現其功能。</p><p>  2. 編碼與調試過程中遇到的問題及解決辦法:</p><p>  問題1:未考慮到生成文檔窗體在主窗體中的顯示</p><p>  解決辦法:在參照樣例程序的時候,發(fā)現文檔是顯示

138、在主窗體內部,結合自己的所學,發(fā)現設置主窗體的屬性記事本 f = new 記事本();</p><p>  f.MdiParent = this;</p><p><b>  count++;</b></p><p>  f.Text = "新建文本" + count;</p><p>  設置成Md

139、iparent屬性即可。</p><p>  問題2:不知到什么屬性被修改,導致主窗體關閉失效</p><p>  解決辦法:在菜單文件中設置關閉程序的命令,并申請了菜單合并,不需要在新建文檔的情況下就能關閉主窗體,現在仍然留下一個讓人深究的問題,究竟是什么樣的屬性才是控制最大化,最小化,以及關閉的顯隱性,有待繼續(xù)學習。這是自己在程序完成的時候出現的意外,但是確是我在編寫過程中遇到的最大難

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論