?? chap10.html
字號:
<P> delete m_pStudent;</P>
<P> }</P>
<P>}</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">現在編譯并運行這個程序,當程序運行后,彈出如圖</FONT><FONT SIZE=3>10.6</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>所示的窗口。單擊左鍵,彈出如圖</FONT><FONT SIZE=3>10.4</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>所示的對話框來添加節點。單擊右鍵,彈出如圖</FONT><FONT SIZE=3>10.5</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>所示的對話框來刪除節點。如果在沒有節點刪除節點,將彈出如圖</FONT><FONT SIZE=3>10.7</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>所示的對話框提示用戶節點已經全部刪除。</P>
<P ALIGN="CENTER"><IMG SRC="Image298.gif" tppabs="http://166.111.167.223/computer/cai/visual_c++_5.0_programming/Image298.gif" WIDTH=85 HEIGHT=62></P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1><P ALIGN="CENTER">圖</FONT><FONT SIZE=1>10. 7 </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1>沒有節點時刪除節點彈出的消息框</P>
</FONT><FONT FACE="仿宋_GB2312" LANG="ZH-CN" SIZE=4><P ALIGN="CENTER"><A NAME="_Toc425698725">第三節</FONT><FONT SIZE=4> </FONT><FONT FACE="仿宋_GB2312" LANG="ZH-CN" SIZE=4>映射類</A></P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">這個類用于創建關鍵對象和數值對象聯系的集合。你可以使用</FONT><FONT SIZE=3>MFC</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>的映射類創建查詢表格。</FONT><FONT SIZE=3>MFC</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>的映射類包含</FONT><FONT SIZE=3>CMapPtrToPtr, CMapPtrToWord, CMapStringToOb, CMapStringToPtr, CMapStringToString, CMapWordToOb, and CmapWordToPtr.</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>在類的名稱中第一個數據類型是關鍵字的數據類型,第二個數據類型是對應的數值的數據類型。</P>
<P ALIGN="JUSTIFY">映射類有下列成員函數:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">Lookup()</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">查詢映射到指定關鍵字的值。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SetAt()</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">向映射中插入一個元素,如果指定的關鍵字存在,替換掉原來的元素。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">operator [ ]</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">向映射中插入一個元素,其作用和</FONT><FONT SIZE=3>SetAt()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>相同。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">RemoveKey</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>()</P>
<P ALIGN="JUSTIFY">查詢符合關鍵字的映射。如果發現,則刪除這個元素。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">RemoveAll( )</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">刪除映射中所有的元素。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">GetStartPosition( )</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">獲得映射中第一個元素的位置。映射中第一個元素是不預知的,所以映射的第一個元素實際上沒有特定的意義。一般將這個值傳遞給</FONT><FONT SIZE=3>GetNextAssoc</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>()函數。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">GetNextAssoc</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>()</P>
<P ALIGN="JUSTIFY">獲得映射中指定位置處下一個元素。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">GetCount( )</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">獲得映射中元素的個數。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">IsEmpty( )</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">測試這個數組元素是否為空。</P>
<P ALIGN="JUSTIFY">現在用一個查詢程序來使你對映射類有一個更深入的了解。按照下面的步驟創建這個程序。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">1.	</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>創建一個單文檔的應用程序</FONT><FONT SIZE=3>Map</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">2.	</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>添加如圖</FONT><FONT SIZE=3>10.8</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>所示的對話框,并生成基于這個對話框的類</FONT><FONT SIZE=3>CLookUpMapDlg,</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>并為文本框添加一個變量</FONT><FONT SIZE=3>m_key</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>。</P>
<P ALIGN="CENTER"><IMG SRC="Image299.gif" tppabs="http://166.111.167.223/computer/cai/visual_c++_5.0_programming/Image299.gif" WIDTH=228 HEIGHT=94></P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1><P ALIGN="CENTER">圖</FONT><FONT SIZE=1>10. 8 </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1>查詢表格</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">3.	</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>為</FONT><FONT SIZE=3>CMapView</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>添加一個</FONT><FONT SIZE=3>CMapStringToString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>類型的成員變量</FONT><FONT SIZE=3>m_map</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">4.	</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>在</FONT><FONT SIZE=3>CMapView</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>的構造函數中添加下列代碼初始化映射。</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1><P>CMapView::CMapView()</P>
<P>{</P>
<P>	// TODO: add construction code here</P>
<P>	m_map.SetAt("red", "紅色");</P>
<P> m_map.SetAt("yellow", "黃色");</P>
<P> m_map.SetAt("green", "綠色");</P>
<P> m_map.SetAt("blue", "藍色");</P>
<P> m_map.SetAt("white", "白色");</P>
<P> m_map.SetAt("black", "黑色");</P>
<P>}</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">5.	</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>在</FONT><FONT SIZE=3>MapView.cpp</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>中添加下列語句:</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1><P>#include "LookUpMapDlg.h"</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">6.	</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>為</FONT><FONT SIZE=3>WM_LbuttonDown</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>消息添加消息處理函數</FONT><FONT SIZE=3>OnLButtonDown(),</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>代碼如下:</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1><P>void CMapView::OnLButtonDown(UINT nFlags, CPoint point) </P>
<P>{</P>
<P>	// TODO: Add your message handler code here and/or call default</P>
<P>	CLookUpMapDlg dialog(this);</P>
<P> dialog.m_key = "";</P>
<P> // Display the dialog box.</P>
<P> int result = dialog.DoModal();</P>
<P> if (result == IDOK)</P>
<P> {</P>
<P> // Look for the requested value.</P>
<P> CString m_value;</P>
<P> BOOL m_bFound = m_map.Lookup(dialog.m_key, m_value);</P>
<P> if (m_bFound)</P>
<P> MessageBox(m_value);</P>
<P> else</P>
<P> MessageBox("未發現匹配字符串");</P>
<P> }</P>
<P>	CView::OnLButtonDown(nFlags, point);</P>
<P>}</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">7.	</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>在</FONT><FONT SIZE=3>OnDraw()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數中添加下列代碼,在視圖中顯示映射中所有的元素。</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1><P>void CMapView::OnDraw(CDC* pDC)</P>
<P>{</P>
<P>	CMapDoc* pDoc = GetDocument();</P>
<P>	ASSERT_VALID(pDoc);</P>
<P>	// TODO: add draw code for native data here</P>
<P>	TEXTMETRIC textMetric;</P>
<P> pDC->GetTextMetrics(&textMetric);</P>
<P> int fontHeight = textMetric.tmHeight;</P>
<P> int displayPosition = 10;</P>
<P> POSITION pos =m_map.GetStartPosition();</P>
<P> CString m_key;</P>
<P> CString m_value;</P>
<P>	int m_index=m_map.GetCount();</P>
<P> for(int i=0;i<m_index;i++)</P>
<P> { </P>
<P>		m_map.GetNextAssoc(pos, m_key, m_value);</P>
<P> CString m_str=m_key+"的意思是"+m_value;</P>
<P> pDC->TextOut(10, displayPosition,m_str);</P>
<P> displayPosition += fontHeight;</P>
<P> }</P>
<P>}</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">現在編譯并運行程序,首先出現如圖</FONT><FONT SIZE=3>10.9</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>所示的主窗口,映射中每一個元素都顯示在</P>
<P ALIGN="CENTER"><IMG SRC="Image300.gif" tppabs="http://166.111.167.223/computer/cai/visual_c++_5.0_programming/Image300.gif" WIDTH=220 HEIGHT=158></P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1><P ALIGN="CENTER">圖</FONT><FONT SIZE=1>10. 9 </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1>程序運行初始窗口</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">其中。單擊左鍵彈出如圖</FONT><FONT SIZE=3>10.8</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>所示的對話框,用戶在其中輸入要查詢的關鍵字,選擇“確定”按鈕,如果映射中存在此關鍵字,將彈出如圖</FONT><FONT SIZE=3>10.10</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>所示的對話框告知用戶關鍵字對應的中文意思。如果映射中不存在此關鍵字,彈出如圖</FONT><FONT SIZE=3>10.11</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>所示的對話框告知用戶未發現匹配字符串。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="CENTER"><IMG SRC="Image301.gif" tppabs="http://166.111.167.223/computer/cai/visual_c++_5.0_programming/Image301.gif" WIDTH=67 HEIGHT=62></P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1><P ALIGN="CENTER">圖</FONT><FONT SIZE=1>10. 10 </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1>查詢結果顯示對話框</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="CENTER"><IMG SRC="Image302.gif" tppabs="http://166.111.167.223/computer/cai/visual_c++_5.0_programming/Image302.gif" WIDTH=81 HEIGHT=62></P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1><P ALIGN="CENTER">圖</FONT><FONT SIZE=1>10. 11 </FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=1>未發現匹配字符串</P>
</FONT><FONT FACE="仿宋_GB2312" LANG="ZH-CN" SIZE=4><P ALIGN="CENTER"><A NAME="_Toc425698726">第四節</FONT><FONT SIZE=4> </FONT><FONT FACE="仿宋_GB2312" LANG="ZH-CN" SIZE=4>字符串類</A></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> MFC</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>中的</FONT><FONT SIZE=3>CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>類使用</FONT><FONT SIZE=3>C++</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>操作字符串和使用</FONT><FONT SIZE=3>Basic</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>或</FONT><FONT SIZE=3>Pascal</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>一樣便捷。</FONT><FONT SIZE=3>CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>類沒有基類。一個</FONT><FONT SIZE=3>CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>類的對象由一個長度可變的字符序列組成。</FONT><FONT SIZE=3>CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>包含很多成員函數用來操作字符串。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>主要包含以下成員函數:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">CString()</P>
<P ALIGN="JUSTIFY">CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>類的構造函數,用來創建一個</FONT><FONT SIZE=3>CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>類的對象。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">GetLength()</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">獲取</FONT><FONT SIZE=3>CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>類的對象包含的字符串的長度(字節數)。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">IsEmpty()</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">測試</FONT><FONT SIZE=3>CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>類的對象包含的字符串是否為空。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">Empty()</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">使</FONT><FONT SIZE=3>CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>類的對象包含的字符串為空字符串。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">GetAt()</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">獲得字符串指定位置處的字符。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">operator [ ] </P>
<P ALIGN="JUSTIFY">	</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>獲得字符串指定位置處的字符,作用和</FONT><FONT SIZE=3>GetAt()</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>一樣。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SetAt()</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">設定字符串指定位置處的字符。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">operator LPCTSTR</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">返回指向儲存在</FONT><FONT SIZE=3>CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>類的對象內的字符的指針。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">operator =</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">將一個新的值賦予</FONT><FONT SIZE=3>CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>對象。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">operator + </P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">將兩個字符串合并成一個新的字符串。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">operator +=</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">在一個字符串的后面再添加一個字符串。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">Compare</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>()</P>
<P ALIGN="JUSTIFY">比較兩個字符串。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">CompareNoCase</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>()</P>
<P ALIGN="JUSTIFY">在忽略字符大小寫的情況下比較兩個字符串。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">Mid()</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">從</FONT><FONT SIZE=3>CString</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>類對象包含的字符串中提取指定開頭和結尾的字符串,類似于</FONT><FONT SIZE=3>Basic</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>中的</FONT><FONT SIZE=3>MID$</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">Left()</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">獲取字符串左邊指定長度的字符串,類似于</FONT><FONT SIZE=3>Basic</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>中的</FONT><FONT SIZE=3>LEFT$</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">Right()</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">獲取字符串右邊指定長度的字符串,類似于</FONT><FONT SIZE=3>Basic</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>中的</FONT><FONT SIZE=3>RIGHT$</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>函數。</P>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -