📄 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 + -