2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告</p><p> ?。?011/2012學(xué)年第二學(xué)期)</p><p>  題目名稱 簡單文本編輯器的設(shè)計(jì) </p>&

2、lt;p>  系 部 </p><p>  專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)

3、 </p><p>  班 級(jí) </p>

4、<p>  學(xué) 生 </p><p>  完成時(shí)間 2012年 6 月 </p><p>  指導(dǎo)老師 </p><p><b>  引 言

5、</b></p><p>  在文本編輯器出現(xiàn)前,人們用打孔機(jī)把計(jì)算機(jī)文字打到穿孔卡片上。文字存放于一個(gè)裝著這樣的薄卡片的盒子里,可以用讀卡器來閱讀它。</p><p>  第一個(gè)文本編輯器是一種行編輯器,它運(yùn)行在打字機(jī)型的終端上,這種編輯器并不具備在窗口和屏幕中顯示的功能。它包含了一些非常短的命令(為了減少打字量)。其中一個(gè)命令能夠把文件的指定部分通過打字機(jī)打印出來。編輯光標(biāo)

6、是想象中的一個(gè)插入點(diǎn),通過特殊命令,可以把它移動(dòng)到特定內(nèi)容字符串所在的行。隨后,內(nèi)容字符串又被擴(kuò)展成正則表達(dá)式。如果想看到文件的變化,你需要把它打印出來。相對(duì)于穿孔機(jī)來說,人們認(rèn)為這種基于行的文本編輯器具有革命性的進(jìn)步。如果沒有它,用戶就需要把那些處理文本的命令打成專用的卡片,并在編輯文件時(shí)使用這些卡片。</p><p>  當(dāng)帶有顯示屏的計(jì)算機(jī)終端出現(xiàn)后,基于顯示屏的文本編輯器開始流行起來。最早的全屏編輯器中,

7、有一種叫做O26,它是于1967年為CDC 6000系列機(jī)器的操作控制臺(tái)而作的。另外一個(gè)早期的全屏編輯器是vi。vi誕生于20世紀(jì)70年代,至今,它仍是Unix和Linux的標(biāo)準(zhǔn)編輯器。全屏編輯器對(duì)視頻終端的銷售起到了促進(jìn)的作用。</p><p>  文本編輯器在Windows的應(yīng)用中是一個(gè)非常重要的項(xiàng)目,在過去十?dāng)?shù)年中,微軟對(duì)windows文本編輯器有多個(gè)版本的升級(jí)改進(jìn),而基于其他的編程環(huán)境的文本編輯器也是多如

8、牛毛,今天我們用MFC可視化編譯環(huán)境做一個(gè)簡易的文本編輯器。</p><p><b>  目 錄</b></p><p><b>  引 言2</b></p><p>  1.課程設(shè)計(jì)目的和意義4</p><p><b>  2.詳細(xì)設(shè)計(jì)4</b></p>

9、<p><b>  2.1需求描述4</b></p><p>  2.1.1文件4</p><p>  2.1.2編輯4</p><p>  2.1.3應(yīng)用4</p><p>  2.1.4幫助5</p><p>  2.1.5高級(jí)5</p><

10、p><b>  2.2功能描述5</b></p><p>  2.2.1文本編輯區(qū)5</p><p>  2.2.2文件6</p><p>  2.2.3編輯12</p><p>  2.2.4應(yīng)用13</p><p>  2.2.5幫助16</p>&l

11、t;p>  2.2.6高級(jí)17</p><p>  2.2.7菜單欄19</p><p>  2.2.7圖標(biāo)19</p><p>  2.3程序運(yùn)行說明19</p><p>  3.課程設(shè)計(jì)總結(jié)19</p><p>  3.1編程日志19</p><p>  3.3測試報(bào)

12、告20</p><p><b>  4.心得體會(huì)20</b></p><p><b>  5.參考文獻(xiàn)20</b></p><p>  1.課程設(shè)計(jì)目的和意義</p><p>  《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)是實(shí)踐性教學(xué)環(huán)節(jié)之一,是《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程的輔助教學(xué)課程。該課程設(shè)計(jì)要求學(xué)生綜合

13、運(yùn)用在《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程中學(xué)到的面向?qū)ο蠹夹g(shù)與實(shí)際編程相結(jié)合,獨(dú)立完成一項(xiàng)較為完整、并具有一定實(shí)際功能的課程設(shè)計(jì)任務(wù),同時(shí)加深學(xué)生對(duì)面向?qū)ο蠛虲++編程技術(shù)的理解和掌握,培養(yǎng)實(shí)際的應(yīng)用程序開發(fā)能力。在課程設(shè)計(jì)過程中,使學(xué)生養(yǎng)成良好的程序設(shè)計(jì)風(fēng)格,并掌握C++應(yīng)用程序的設(shè)計(jì)開發(fā)過程和編程方法、測試方法</p><p><b>  2.詳細(xì)設(shè)計(jì)</b></p><p&g

14、t;<b>  2.1需求描述</b></p><p>  簡單文本編輯器的設(shè)計(jì)是基于Microsoft Visual Studio 2008開發(fā)的一款小型的軟件,主要的設(shè)計(jì)是為了滿足普通用戶對(duì)文本文檔進(jìn)行一般的簡單操作,通過MFC可視化編程環(huán)境,直接生成一個(gè)友好的用戶操作界面,通過這個(gè)窗口,用戶可以對(duì)文本進(jìn)行如下的基本操作。</p><p><b>  2

15、.1.1文件</b></p><p>  新建:創(chuàng)建一篇空白文檔,從“工具欄”或“文件下拉菜單”中創(chuàng)建</p><p> ?、?打開:打開文本(.txt)文件,從“工具欄”或“文件下拉菜單”中打開;或?qū)⑽谋荆?txt)文件拖入程序界面打開或應(yīng)用程序圖標(biāo)上打開;或右鍵單擊文本文件,在“打開方式”中選擇本程序打開</p><p>  保存:保存文檔,從“工

16、具欄”或“文件下拉菜單”中打開</p><p>  ④ 另存為:保存文件副本,在不同位置或以不同文件名保存文檔,從“工具欄”或“文件下拉菜單”中另存</p><p><b>  2.1.2編輯</b></p><p> ?、?撤銷:撤銷前一步所進(jìn)行的操作,從“編輯下拉菜單”或“右鍵菜單”中撤銷</p><p>  刪除

17、:刪除當(dāng)前選定字符(串),從“編輯下拉菜單”或“右鍵菜單”中刪除</p><p>  剪切:復(fù)制并刪除選定字符(串),從“編輯下拉菜單”或“右鍵菜單”中剪切</p><p>  復(fù)制:復(fù)制選定字符(串),“編輯下拉菜單”或“右鍵菜單”中復(fù)制</p><p>  粘貼:對(duì)粘貼內(nèi)容進(jìn)行粘貼,從“編輯下拉菜單”或“右鍵菜單”中粘貼</p><p>

18、  全選:對(duì)文本編輯框中文本全部選定,從“編輯下拉菜單”或“右鍵菜單”中全</p><p><b>  2.1.3應(yīng)用</b></p><p> ?、?查找/替換:輸入查找內(nèi)容(和替換內(nèi)容),可從光標(biāo)位置逐個(gè)查找(或替換)相應(yīng)內(nèi)容,也可一次性全部替換掉相應(yīng)內(nèi)容,從“工具欄”或“應(yīng)用下拉菜單”中執(zhí)行</p><p> ?、?字體設(shè)置:設(shè)置字體、

19、字形及字的大小,從“工具欄”或“應(yīng)用下拉菜單”中設(shè)置字體</p><p>  ③ 統(tǒng)計(jì)字符串:統(tǒng)計(jì)用戶輸入的字符串出現(xiàn)次數(shù),從“工具欄”或“應(yīng)用下拉菜單”中執(zhí)行</p><p> ?、?統(tǒng)計(jì)字?jǐn)?shù):統(tǒng)計(jì)所有字符數(shù)、中文字符數(shù)、英文字符數(shù)、數(shù)字字符數(shù)和空格數(shù),從“工具欄”或“應(yīng)用下拉菜單”中啟動(dòng)</p><p><b>  2.1.4幫助</b&g

20、t;</p><p>  ① 關(guān)于EasyTXT:顯示關(guān)于本程序的信息,從“幫助下拉菜單”中啟動(dòng)</p><p> ?、?幫助:顯示程序幫助文檔,包括程序功能、使用、簡要說明等各種信息,從“工具欄”或“幫助下拉菜單”中啟動(dòng)</p><p><b>  2.1.5高級(jí)</b></p><p> ?、訇P(guān)聯(lián)注冊(cè):向注冊(cè)表

21、添加SLW文件關(guān)聯(lián),改變文本(.txt)文件圖標(biāo),并使文本(.txt)文件可單擊右鍵后選擇用本程序打開(部分功能重啟或注銷后方能生效)</p><p>  ②還原注冊(cè):取消注冊(cè),文本(.txt)文件還原為默認(rèn)圖標(biāo),不能右鍵打開(部分功能重啟或注銷后方能生效)</p><p><b>  2.2功能描述</b></p><p>  2.2.1文

22、本編輯區(qū)</p><p>  本程序的編譯框架為MFC,功能的實(shí)現(xiàn)使用的是模塊化的編程方式進(jìn)行,由于使用的是MFC可視化編程,所以其中的很多過程使用的是相關(guān)的系統(tǒng)自帶函數(shù)實(shí)現(xiàn)的,其中整個(gè)編輯器的編輯區(qū)使用的是MFC自動(dòng)生成的文本框,但是這個(gè)文本框沒有插入符,不能實(shí)現(xiàn)文字編輯功能,所以需要在程序的CEasyTXTView中插入一些特定的文本編輯函數(shù),如插入符函數(shù)cwnd::createsolidcreat,這個(gè)函數(shù)

23、默認(rèn)的為隱藏,所以在后面需要showcreate()才能正常顯示,而整個(gè)編輯器的操作編輯部分使用的是一個(gè)獨(dú)立的*.CPP進(jìn)行控制的,代碼中使用的是圖形至于文本輸入的下方并設(shè)置為透明,在下面的文本編輯區(qū)下層有一張寫有內(nèi)容的圖片作為裝飾,換行等動(dòng)作惠濟(jì)路插入符位置并按照坐標(biāo)進(jìn)行繪制,文本框的大小改變等會(huì)導(dǎo)致文本編輯區(qū)的重繪,所以在改變文本框時(shí)必須調(diào)用函數(shù)對(duì)文本框中的內(nèi)容進(jìn)行保存,相關(guān)代碼如下所示:</p><p> 

24、 BOOL CBmpEdit::OnEraseBkgnd(CDC* pDC) </p><p><b>  {</b></p><p>  CDC memDC;</p><p>  memDC.CreateCompatibleDC(pDC);//創(chuàng)建內(nèi)存設(shè)備上下文</p><p>  memDC.SelectObject

25、(&m_Bitmap);//將位圖選入設(shè)備上下文</p><p>  BITMAP m_Bmp; //聲明位圖控件</p><p>  m_Bitmap.GetBitmap(&m_Bmp); //獲得位圖信息</p><p>  int x = m_Bmp.bmWidth; //獲取圖片寬度</p><p>  int y =

26、 m_Bmp.bmHeight;//獲取圖片高度</p><p>  CRect rect; //聲明矩形區(qū)域?qū)ο?lt;/p><p>  GetClientRect(rect); //獲取編輯區(qū)大小矩形框</p><p>  pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,x,y,SR

27、CCOPY); //伸展鋪上圖片</p><p>  memDC.DeleteDC();//釋放內(nèi)存設(shè)備上下文</p><p>  return TRUE;//return CEdit::OnEraseBkgnd(pDC);</p><p><b>  }</b></p><p>  void CBmpEdit::On

28、Change() </p><p><b>  {</b></p><p>  Invalidate();//刷新用戶界面</p><p><b>  }</b></p><p>  HBRUSH CBmpEdit::CtlColor(CDC* pDC, UINT nCtlColor) </

29、p><p><b>  {</b></p><p>  pDC->SetBkMode(TRANSPARENT); //設(shè)置文字背景透明</p><p>  return NULL;</p><p><b>  }</b></p><p>  void CBmpEdit::O

30、nVScroll(UINT nSBCode, UINT nPos, CScrollBar * pScrollBar) </p><p><b>  {</b></p><p>  CEdit::OnVScroll(nSBCode, nPos, pScrollBar);//判斷滾動(dòng)條是否滑動(dòng)</p><p>  Invalidate();//

31、刷新用戶界面</p><p><b>  }</b></p><p>  void CBmpEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) </p><p><b>  {</b></p><p>  int n1,n2;</p&g

32、t;<p>  n1 = GetScrollPos (SB_VERT);</p><p>  CEdit::OnKeyDown(nChar, nRepCnt, nFlags);</p><p>  n2 = GetScrollPos (SB_VERT);</p><p>  if (n1 != n2)//判斷滾動(dòng)條是否滑動(dòng)</p>&l

33、t;p><b>  {</b></p><p>  Invalidate();//刷新用戶界面</p><p><b>  }</b></p><p><b>  }</b></p><p>  BOOL CBmpEdit::OnMouseWheel(UINT nFla

34、gs, short zDelta, CPoint pt) </p><p><b>  {</b></p><p>  BOOL editS = CEdit::OnMouseWheel(nFlags, zDelta, pt);</p><p>  Invalidate();//刷新用戶界面</p><p>  retu

35、rn editS;</p><p><b>  }</b></p><p><b>  2.2.2文件</b></p><p><b>  新建</b></p><p>  新建菜單使用的是MFC自帶的系統(tǒng)函數(shù)中的FILE等函數(shù)指令在massagebox的功能實(shí)現(xiàn)模塊,其中在

36、新建文檔的時(shí)候需要對(duì)文本的編輯區(qū)進(jìn)行判斷,對(duì)文本框中存在的文本進(jìn)行存檔,而新建的文檔就是對(duì)文本編輯區(qū)進(jìn)行重繪,對(duì)原有的內(nèi)容進(jìn)行存儲(chǔ)和銷毀,詳細(xì)代碼如下所示:</p><p>  void CEasyTXTDlg::OnMenuNew()</p><p>  {//新建前對(duì)現(xiàn)有文本的的處理</p><p>  isModified = m_Edit.GetModify

37、();//獲取文本修改標(biāo)記</p><p>  CString string;</p><p>  m_Edit.GetWindowText(string);</p><p>  if (isNew && string.IsEmpty())//若是新建文本且文本無內(nèi)容內(nèi)容</p><p><b>  {</b&

38、gt;</p><p><b>  ;</b></p><p><b>  }</b></p><p>  else if(isModified) //如果文本已被修改,分情況討論</p><p><b>  {</b></p><p>  int Ch

39、oice = MessageBox("當(dāng)前文本已被修改,想保存嗎?","系統(tǒng)提示",</p><p>  MB_YESNO|MB_ICONQUESTION); //彈出消息對(duì)話框詢問</p><p>  if(Choice==IDYES) //選擇“是”</p><p><b>  {</b></p

40、><p>  OnMenuSave();//調(diào)用保存函數(shù)保存文件</p><p><b>  }</b></p><p><b>  }//新建</b></p><p>  m_Edit.SetSel(0, -1); //全部選中文本內(nèi)容</p><p>  m_Edit.Cle

41、ar();//將所有文本刪除</p><p>  isNew = TRUE; //標(biāo)記為新建文本</p><p>  m_Edit.SetModify(FALSE); //文本修改標(biāo)記設(shè)為未修改</p><p><b>  }</b></p><p><b>  打開</b></p>

42、<p>  菜單欄的打開使用的拖入和圖標(biāo)打開,其中使用了MFC中自帶的打開對(duì)話框,這樣的使用和拖入的使用均是使用了自帶的函數(shù),其中重點(diǎn)是在運(yùn)行的過程中對(duì)絕對(duì)路徑的獲取以及特定格式文件的打開和提取,對(duì)不正確的格式進(jìn)行massagebox的消息盒子提醒,詳細(xì)代碼如下:</p><p>  void CEasyTXTDlg::OnDropFiles(HDROP hDropInfo) </p>

43、;<p><b>  { </b></p><p>  char *lpszFileName=new char[512]; </p><p>  int nFileCount,i; nFileCount=::DragQueryFile (hDropInfo,0xFFFFFFFF,NULL,512); </p><p>  for

44、(i=0;i<nFileCount;i++)</p><p><b>  { </b></p><p>  UINT nChars=::DragQueryFile (hDropInfo,i,&lpszFileName[0],512); </p><p>  CString str(&lpszFileName[0],nCha

45、rs); //獲得文件路徑//打開前對(duì)現(xiàn)有文本的的處理</p><p>  isModified = m_Edit.GetModify();//獲取文本修改標(biāo)記</p><p>  CString string;</p><p>  m_Edit.GetWindowText(string);</p><p>  if (isNew &

46、& string.IsEmpty())//若是新建文本且文本無內(nèi)容內(nèi)容</p><p><b>  {</b></p><p><b>  ;</b></p><p><b>  }</b></p><p>  else if(isModified) //如果文本已被修

47、改,分情況討論</p><p><b>  {</b></p><p>  int Choice = MessageBox("當(dāng)前文本已被修改,想保存嗎?","系統(tǒng)提示",</p><p>  MB_YESNO|MB_ICONQUESTION); //彈出消息對(duì)話框詢問</p><p&

48、gt;  if(Choice==IDYES) //選擇“是”</p><p><b>  {</b></p><p>  OnMenuSave();//調(diào)用保存函數(shù)保存文件</p><p><b>  }</b></p><p><b>  }</b></p>&

49、lt;p>  CString strText="";</p><p>  SavePath = str;</p><p>  int n = SavePath.ReverseFind('.'); </p><p>  CString stl = SavePath.Right(SavePath.GetLength() -

50、n - 1);</p><p>  if (stl == "txt" || stl == "TXT" || stl == "c" || stl == "C" || stl == "cpp" || stl == "CPP"</p><p>  || stl == "

51、;h" || stl == "H" || stl == "xml" || stl == "XML" || stl == "html" || stl == "HTML")</p><p><b>  {</b></p><p>  CFile file(str,

52、CFile::modeReadWrite); //以讀與寫方式打開文件//拖入打開</p><p>  m_Edit.SetSel(0, -1); //全部選中文本內(nèi)容</p><p>  m_Edit.Clear();//將所有文本刪除</p><p>  char read[50000];</p><p>  file.Read(rea

53、d,50000); //讀取文件內(nèi)容</p><p>  for(unsigned i=0;i<file.GetLength();i++)</p><p><b>  {</b></p><p>  strText += read[i]; //把文件內(nèi)容賦值給CString變量</p><p><b> 

54、 }</b></p><p>  file.Close();//關(guān)閉文件</p><p>  m_Edit.SetWindowText(strText);</p><p>  isNew = FALSE; //標(biāo)記為打開文本</p><p>  m_Edit.SetModify(FALSE); //文本修改標(biāo)記設(shè)為修改<

55、/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  MessageBox ("不支持的文件類型!","打開錯(cuò)誤");</p><p

56、><b>  }</b></p><p><b>  } </b></p><p>  ::DragFinish (hDropInfo); //釋放內(nèi)存</p><p><b>  i=0;</b></p><p>  delete []lpszFileName; <

57、;/p><p><b>  }</b></p><p>  void CEasyTXTDlg::OpenFile()</p><p><b>  {</b></p><p>  CString strCmdLine = GetCommandLine();</p><p>  in

58、t totalLen = strCmdLine.GetLength();</p><p>  int i = 0;</p><p>  int index = 0;//循環(huán)統(tǒng)計(jì)字符個(gè)數(shù)</p><p>  for (i = 0,index = 0; i < 3; i++,index ++)</p><p><b>  {<

59、;/b></p><p>  index = strCmdLine.Find("\"", index); //查找字符串</p><p><b>  }</b></p><p>  if (index != 0)</p><p><b>  {</b></p

60、><p>  for (i = index;i < totalLen - 1;i ++)</p><p>  SavePath += strCmdLine.GetAt(i);</p><p>  int n = SavePath.ReverseFind('.'); </p><p>  CString stl = Sav

61、ePath.Right(SavePath.GetLength() - n - 1);</p><p>  if (stl == "txt" || stl == "TXT" || stl == "c" || stl == "C" || stl == "cpp" || stl == "CPP"<

62、;/p><p>  || stl == "h" || stl == "H" || stl == "xml" || stl == "XML" || stl == "html" || stl == "HTML")</p><p><b>  {</b><

63、;/p><p>  CString strText;</p><p>  CFile file(SavePath,CFile::modeReadWrite); //以讀與寫方式打開文件</p><p>  char read[50000];</p><p>  file.Read(read,50000); //讀取文件內(nèi)容</p>

64、<p>  for(unsigned i=0;i<file.GetLength();i++)</p><p><b>  {</b></p><p>  strText += read[i];//把文件內(nèi)容賦值給CString變量</p><p><b>  }</b></p><p

65、>  file.Close();//關(guān)閉文件</p><p>  m_Edit.SetWindowText(strText); //在編輯框中顯示文件內(nèi)容</p><p>  m_Edit.SetModify(FALSE); //文本修改標(biāo)記設(shè)為未修改</p><p>  isNew = FALSE;</p><p>  Invalid

66、ate();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  MessageBox ("不支持的文件類型!","打開錯(cuò)誤");</p&

67、gt;<p>  m_Edit.SetModify(FALSE); //文本修改標(biāo)記設(shè)為未修改</p><p>  isNew = TRUE;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b&g

68、t;</p><p><b>  {</b></p><p>  m_Edit.SetModify(FALSE); //文本修改標(biāo)記設(shè)為未修改</p><p>  isNew = TRUE;</p><p><b>  }</b></p><p>  m_Edit.SetSe

69、l(0,0);</p><p><b>  }</b></p><p><b>  保存</b></p><p>  保存使用的是MFC中自帶的模塊進(jìn)行的,第一次的保存即為另存為,當(dāng)文檔已經(jīng)創(chuàng)建以后,文本的保存就改變?yōu)榘盐谋揪庉媴^(qū)的內(nèi)容重新寫入同一個(gè)絕對(duì)地址的文本文檔中,其中聲明和調(diào)用的詳細(xì)代碼如下:</p>

70、<p>  void CEasyTXTDlg::OnMenuSave()</p><p><b>  {</b></p><p>  if (isNew) //對(duì)新建且未保存的文本調(diào)用“另存為”進(jìn)行保存</p><p><b>  {</b></p><p>  OnMenuSaveas

71、();//新建文本已保存</p><p><b>  }</b></p><p>  else//對(duì)打開的文件修改后進(jìn)行保存</p><p>  { </p><p>  CString strText="";</p><p>  char write[

72、50000];</p><p>  CFile file(_T(SavePath),CFile::modeCreate|CFile::modeReadWrite);//以讀與寫方式創(chuàng)建文件</p><p>  m_Edit.GetWindowText(strText); //獲取編輯框中的內(nèi)容</p><p>  strcpy(write,strText); /

73、/將編輯框中的內(nèi)容賦值給字符串?dāng)?shù)組</p><p>  file.Write(write,strText.GetLength());//把編輯框中的內(nèi)容寫入文件</p><p>  file.Close();//關(guān)閉文件</p><p>  m_Edit.SetModify(FALSE); //設(shè)置修改標(biāo)記為未修改</p><p><

74、b>  }</b></p><p>  m_Edit.SetSel(0,0);</p><p><b>  }</b></p><p><b>  另存為</b></p><p>  另存為是一種特殊的保存形式,另存為在應(yīng)用的時(shí)候是用戶用過FILE等函數(shù)尋找一個(gè)絕對(duì)地址并按照現(xiàn)有格

75、式進(jìn)行保存,在今后的另存為命令中,不會(huì)對(duì)相同絕對(duì)地址相同文件名的文件進(jìn)行保存,而是在彈出消息對(duì)話框用戶確認(rèn)覆蓋操作以后才將原有的文件進(jìn)行刪除操作然后把新內(nèi)容的文件生成在用戶選定的絕對(duì)地址下,詳細(xì)代碼如下:</p><p>  void CEasyTXTDlg::OnMenuSaveas()</p><p><b>  {</b></p><p>

76、;  CFileStatus fs; //文件存在狀態(tài)</p><p>  CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,</p><p>  "All Files(*.txt)|*.txt||",AfxGetMainWnd()); //構(gòu)造“文件另存為”對(duì)話框</p

77、><p>  CString strPath,strText="";</p><p>  char write[50000];</p><p>  if(dlg.DoModal() == IDOK) //判斷按下“另存為”</p><p><b>  {</b

78、></p><p>  strPath = dlg.GetPathName(); //獲取文件另存為路徑</p><p>  if(strPath.Right(4) != ".txt")</p><p><b>  {</b></p><p>  strPa

79、th += ".txt"; //設(shè)置文件擴(kuò)展名為txt</p><p><b>  }</b></p><p>  if(CFile::GetStatus(_T(strPath),fs))//如果文件存在</p><p><b>  { </b>

80、;</p><p>  CString info = strPath;</p><p>  info += " 已存在。\r\n要替換它嗎?";</p><p>  int nChoice = MessageBox (info,"另存為",MB_ICONWARNING|MB_YESNO);//彈出確認(rèn)替換消息</p&g

81、t;<p>  if (nChoice == IDYES)//如果確認(rèn)替換</p><p><b>  {</b></p><p>  SavePath = strPath;//獲取保存新建文本的路徑</p><p>  CFile file(_T(strPath),CFile::modeCreat

82、e|CFile::modeWrite);//以只寫方式創(chuàng)建文件</p><p>  m_Edit.GetWindowText(strText);//獲取編輯框中的內(nèi)容</p><p>  strcpy(write,strText);//將編輯框中的內(nèi)容賦值給字符串?dāng)?shù)組</p><p>  file.Write(write,strText.GetLengt

83、h());//把編輯框中的內(nèi)容寫入文件</p><p>  file.Close();//關(guān)閉文件</p><p>  isNew = FALSE;</p><p>  m_Edit.SetModify(FALSE);</p><p><b>  }</b></p><p> 

84、 else//不替換</p><p><b>  {</b></p><p>  OnMenuSaveas();//彈出另存對(duì)話框</p><p><b>  }</b></p><p><b>  }</b></p><p&g

85、t;  else//如果文件不存在</p><p><b>  {</b></p><p>  SavePath = strPath;//獲取保存新建文本的路徑</p><p>  CFile file(_T(strPath),CFile::modeCreate|CFile::modeWrite);//以只寫方式創(chuàng)建文件<

86、/p><p>  m_Edit.GetWindowText(strText);//獲取編輯框中的內(nèi)容</p><p>  strcpy(write,strText);//將編輯框中的內(nèi)容賦值給字符串?dāng)?shù)組</p><p>  file.Write(write,strText.GetLength());//把編輯框中的內(nèi)容寫入文件</p>

87、<p>  file.Close();</p><p>  isNew = FALSE;</p><p>  m_Edit.SetModify(FALSE);</p><p>  }</p><p><b>  }</b></p><p>  m_Edit.SetS

88、el(0,0);</p><p>  CRect rect (15,80,586,686);</p><p>  InvalidateRect(rect);//刷新用戶界面</p><p><b>  }</b></p><p><b>  退出</b></p><p&g

89、t;  void CEasyTXTDlg::OnClose() </p><p><b>  {</b></p><p>  isModified = m_Edit.GetModify();//獲取文本修改標(biāo)記</p><p>  CString string;</p><p>  m_Edit.GetWindowT

90、ext(string);</p><p>  if (isNew && string.IsEmpty())//若是新建文本且文本無內(nèi)容內(nèi)容</p><p><b>  {</b></p><p>  CDialog::OnClose();//退出程序</p><p><b>  }&l

91、t;/b></p><p>  else if(isModified)//如果文本已被修改,分情況討論</p><p><b>  {</b></p><p>  int QuitChoice = MessageBox("當(dāng)前文本已被修改,想保存嗎?","系統(tǒng)提示",</p>&

92、lt;p>  MB_YESNOCANCEL|MB_ICONQUESTION);//彈出消息對(duì)話框詢問</p><p>  if(QuitChoice==IDYES) //選擇“是”</p><p><b>  {</b></p><p>  OnMenuSave();//調(diào)用保存函數(shù)保存文件</p>

93、;<p>  if (isModified = FALSE)</p><p>  CDialog::OnClose();//退出程序</p><p><b>  }</b></p><p>  else if(QuitChoice==IDNO)//選擇“否”</p><p><b>

94、  {</b></p><p>  CDialog::OnClose();//退出程序</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  

95、return;//選擇“取消”時(shí)不退出</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>

96、;  CDialog::OnClose();//如果文本未被修改則直接退出程序</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  2.2.3編輯</b></p><p><b>  撤銷</b&

97、gt;</p><p>  撤銷命令是系統(tǒng)自帶的函數(shù),使用是調(diào)用OnMenuUndo函數(shù)命令,詳細(xì)代碼如下所示:</p><p>  void CEasyTXTDlg::OnMenuUndo()</p><p><b>  {</b></p><p>  m_Edit.Undo(); //撤銷上一次的編輯框中

98、的操作(單級(jí)撤銷)</p><p><b>  }</b></p><p><b>  刪除</b></p><p>  刪除命令調(diào)用的是系統(tǒng)自帶函數(shù),使用的是OnMenuDelete函數(shù)命令,詳細(xì)代碼如下所示:</p><p>  void CEasyTXTDlg::OnMenuDelete()&

99、lt;/p><p><b>  {</b></p><p>  m_Edit.Clear(); //刪除編輯框中當(dāng)前選中的文本</p><p><b>  }</b></p><p><b>  剪切</b></p><p>  剪切命令調(diào)用的是系

100、統(tǒng)自帶函數(shù),使用的是OnMenueCut函數(shù)命令,詳細(xì)代碼如下所示:</p><p>  void CEasyTXTDlg::OnMenuCut()</p><p><b>  {</b></p><p>  m_Edit.Cut(); //刪除編輯控件中當(dāng)前選中的文本,并將刪除的文本拷貝到剪貼板中</p><

101、p><b>  }</b></p><p><b>  復(fù)制</b></p><p>  復(fù)制命令調(diào)用的是系統(tǒng)自帶函數(shù),使用的是OnMenuCopy函數(shù)命令,詳細(xì)代碼如下所示:</p><p>  void CEasyTXTDlg::OnMenuCopy()</p><p><b>

102、  {</b></p><p>  m_Edit.Copy(); //將編輯框中的當(dāng)前選中文本拷貝到剪貼板中</p><p><b>  }</b></p><p><b>  粘貼</b></p><p>  粘貼命令調(diào)用的是系統(tǒng)自帶函數(shù),使用的是OnMenuPaste函數(shù)

103、命令,詳細(xì)代碼如下所示:</p><p>  void CEasyTXTDlg::OnMenuPaste()</p><p><b>  {</b></p><p>  m_Edit.Paste(); //在當(dāng)前光標(biāo)位置插入剪貼板內(nèi)的文本</p><p><b>  }</b></p

104、><p><b>  全選</b></p><p>  全選命令調(diào)用的是系統(tǒng)自帶函數(shù),使用的是OnMenuSelectAll函數(shù)命令,詳細(xì)代碼如下所示:</p><p>  void CEasyTXTDlg::OnMenuSelectAll()</p><p><b>  {</b></p>

105、<p>  m_Edit.SetSel(0, -1);//全部選中文本內(nèi)容</p><p><b>  }</b></p><p><b>  2.2.4應(yīng)用</b></p><p><b>  查找/替換</b></p><p>  查找和替換命令使用的是串查

106、詢,按照匹配的媳婦篩選,如果替換,則在替換時(shí)判斷是否為第一次的替換,替換時(shí)將記錄字符串的位置并加以標(biāo)記,按后進(jìn)行替換,詳細(xì)代碼如下所示:</p><p>  void CEasyTXTDlg::OnMenuFindReplace()</p><p><b>  {</b></p><p>  nindex = 0;</p><

107、;p>  degree = FALSE;</p><p>  index = 0;</p><p>  dlg = new CFindReplaceDialog;//聲明“查找/替換”對(duì)話框指針</p><p>  dlg->Create(FALSE,NULL);//創(chuàng)建“替換”對(duì)話框</p><p>  dlg-

108、>ShowWindow(SW_SHOW);//顯示“替換”對(duì)話框</p><p>  long CEasyTXTDlg::OnFindReplace(WPARAM wParam, LPARAM lParam)</p><p><b>  {</b></p><p>  CString strText,repText;

109、//聲明字符串變量</p><p>  strText = dlg->GetFindString();//獲得查找字符串</p><p>  CString str;//聲明字符串變量</p><p>  m_Edit.GetWindowText(str);//獲得編輯框中是文本</

110、p><p><b>  int len;</b></p><p>  if(dlg->ReplaceAll())//判斷是否全部替換</p><p><b>  {</b></p><p>  strText = dlg->GetFindString();

111、//獲得查找字符串</p><p>  repText = dlg->GetReplaceString();//獲得替換字符串</p><p>  len = repText.GetLength();//獲得替換字符串長度</p><p>  str.Replace(strText,repText);//使用替換字

112、符串替換查找字符串</p><p>  m_Edit.SetWindowText(str);//將替換后的字符串顯示在編輯框中</p><p>  nindex =0;//設(shè)置查找位置為初始</p><p>  m_Edit.SetModify(TRUE); //文本修改標(biāo)記設(shè)為修改</

113、p><p>  m_Edit.SetSel(0,-1);</p><p>  CRect rect (15,80,586,686);</p><p>  InvalidateRect(rect);//刷新界面</p><p><b>  }</b></p><p>  if(dlg-

114、>ReplaceCurrent())//替換</p><p>  find = FALSE;//進(jìn)行替換</p><p><b>  else</b></p><p>  find = TRUE;//進(jìn)行查找/聲明整型變量</p><p>  if(fi

115、nd)//判斷是查找還是替換</p><p><b>  {</b></p><p>  len = strText.GetLength();//獲得要查找字符串的長度</p><p><b>  }</b></p><p><b>  else&

116、lt;/b></p><p><b>  {</b></p><p>  CString left,right;//聲明字符串變量</p><p>  int num = strText.GetLength();//獲得查找字符串的長度</p><p>  int strnum

117、= str.GetLength();//獲得編輯框中文本長度</p><p>  if(!degree)//判斷為第一次替換</p><p>  index = str.Find(strText,nindex);//獲得查找字符串在編輯框文本中的位置</p><p>  if(index < 0)</p>

118、<p><b>  {</b></p><p>  nindex = 0;</p><p>  degree = FALSE;</p><p><b>  return 1;</b></p><p><b>  }</b></p><p&g

119、t;  left = str.Left(index);//獲得替換字符串左側(cè)的字符串</p><p>  right = str.Right(strnum-index-num);//獲得替換字符串右側(cè)的字符串</p><p>  repText = dlg->GetReplaceString();//獲得替換字符串</p><p

120、>  len = repText.GetLength();//獲得替換字符串長度</p><p>  str = left + repText + right;//組合成新的字符串</p><p>  m_Edit.SetWindowText(str);//在編輯框中顯示新的字符串</p><p>  m_Edit.Se

121、tModify(TRUE); //文本修改標(biāo)記設(shè)為修改</p><p><b>  }</b></p><p>  strText = dlg->GetFindString();//獲得查找字符串</p><p>  m_Edit.GetWindowText(str);//獲得編

122、輯框中是文本</p><p>  index = str.Find (strText,nindex);//獲得查找字符串在編輯框文本中的位置</p><p>  m_Edit.SetSel(index,index+strText.GetLength());//選中查找或替換的字符串</p><p>  nindex = index+len;

123、//設(shè)置起始查找位置</p><p>  if (index >= 0)</p><p><b>  {</b></p><p>  degree = TRUE;</p><p><b>  }</b></p><p><b>  else</b

124、></p><p><b>  {</b></p><p>  degree = FALSE;</p><p>  nindex = 0;</p><p><b>  }</b></p><p>  m_Edit.SetFocus();//編輯框獲得

125、焦點(diǎn)</p><p>  CRect rect1 (15,80,586,686);</p><p>  InvalidateRect(rect1);//刷新界面</p><p><b>  return 0;</b></p><p><b>  }</b></p>&

126、lt;p><b>  字體設(shè)置</b></p><p>  void CEasyTXTDlg::OnMenuFont()</p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p>

127、<p>  CFont* TempFont = m_Edit.GetFont(); //獲取編輯框當(dāng)前字體</p><p>  LOGFONT LogFont;</p><p>  TempFont->GetLogFont(&LogFont);//獲取字體信息</p><p>  CFontDialog dl

128、g(&LogFont);//初始化字體信息</p><p>  if(dlg.DoModal()==IDOK)</p><p><b>  {</b></p><p>  m_Font.Detach(); //分離字體</p><p>  LOGF

129、ONT temp;</p><p>  dlg.GetCurrentFont(&temp);//獲取當(dāng)前字體信息</p><p>  m_Font.CreateFontIndirect(&temp);//直接創(chuàng)建字體</p><p>  m_Edit.SetFont(&m_Font);//設(shè)置字體</p>

130、<p><b>  }</b></p><p><b>  }</b></p><p><b>  統(tǒng)計(jì)字符串</b></p><p>  void CEasyTXTDlg::OnMenuCountString()</p><p><b>  {<

131、/b></p><p>  CString str;</p><p>  m_Edit.GetWindowText(str);//獲取編輯框文本</p><p>  CCountStringDlg dlg;//聲明統(tǒng)計(jì)字符串對(duì)話框類對(duì)象</p><p>  dlg.SetText(str);</p>

溫馨提示

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

評(píng)論

0/150

提交評(píng)論