图10。 8 查询表格
3。 为CMapView添加一个CMapStringToString类型的成员变量m_map。
4。 在CMapView的构造函数中添加下列代码初始化映射。
CMapView::CMapView()
{
// TODO: add construction code here
m_map。SetAt(〃red〃; 〃红色〃);
m_map。SetAt(〃yellow〃; 〃黄色〃);
m_map。SetAt(〃green〃; 〃绿色〃);
m_map。SetAt(〃blue〃; 〃蓝色〃);
m_map。SetAt(〃white〃; 〃 白色〃);
…………………………………………………………Page 613……………………………………………………………
m_map。SetAt(〃black〃; 〃黑色〃);
}
5。 在MapView。cpp中添加下列语句:
#include 〃LookUpMapDlg。h〃
6。 为WM_LbuttonDown消息添加消息处理函数OnLButtonDown();代码
如下:
void CMapView::OnLButtonDown(UINT nFlags; CPoint point)
{
// TODO: Add your message handler code here and/or call default
CLookUpMapDlg dialog(this);
dialog。m_key = 〃〃;
// Display the dialog box。
int result = dialog。DoModal();
if (result == IDOK)
{
// Look for the requested value。
CString m_value;
BOOL m_bFound = m_map。Lookup(dialog。m_key; m_value);
if (m_bFound)
MessageBox(m_value);
else
MessageBox(〃未发现匹配字符串〃);
}
CView::OnLButtonDown(nFlags; point);
}
7。 在OnDraw()函数中添加下列代码,在视图中显示映射中所有的元
…………………………………………………………Page 614……………………………………………………………
素。
void CMapView::OnDraw(CDC* pDC)
{
CMapDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
TEXTMETRIC textMetric;
pDC…》GetTextMetrics(&textMetric);
int fontHeight = textMetric。tmHeight;
int displayPosition = 10;
POSITION pos =m_map。GetStartPosition();
CString m_key;
CString m_value;
int m_index=m_map。GetCount();
for(int i=0;iTextOut(10; displayPosition;m_str);
displayPosition += fontHeight;
}
}
现在编译并运行程序,首先出现如图10。9所示的主窗口,映射中每一
个元素都显示在
…………………………………………………………Page 615……………………………………………………………
图10。 9 程序运行初始窗口
其中。单击左键弹出如图10。8所示的对话框,用户在其中输入要查询
的关键字,选择 “确定”按钮,如果映射中存在此关键字,将弹出如
图10。10所示的对话框告知用户关键字对应的中文意思。如果映射中
不存在此关键字,弹出如图10。11所示的对话框告知用户未发现匹配
字符串。
图10。 10 查询结果显示对话框
图10。 11 未发现匹配字符串
第四节 字符串类
MFC中的CString类使用C++操作字符串和使用Basic或Pascal一样便
捷。CString类没有基类。一个CString类的对象由一个长度可变的字
符序列组成。CString包含很多成员函数用来操作字符串。
CString主要包含以下成员函数:
CString()
CString类的构造函数,用来创建一个CString类的对象。
GetLength()
获取CString类的对象包含的字符串的长度 (字节数)。
…………………………………………………………Page 616……………………………………………………………
IsEmpty()
测试CString类的对象包含的字符串是否为空。
Empty()
使CString类的对象包含的字符串为空字符串。
GetAt()
获得字符串指定位置处的字符。
operator ' '
获得字符串指定位置处的字符,作用和GetAt()一样。
SetAt()
设定字符串指定位置处的字符。
operator LPCTSTR
返回指向储存在CString类的对象内的字符的指针。
operator =
将一个新的值赋予CString对象。
operator +
将两个字符串合并成一个新的字符串。
operator +=
在一个字符串的后面再添加一个字符串。
pare
比较两个字符串。
pareNoCase
在忽略字符大小写的情况下比较两个字符串。
Mid()
…………………………………………………………Page 617……………………………………………………………
从CString类对象包含的字符串中提取指定开头和结尾的字符串,类
似于Basic 中的MID函数。
Left()
获取字符串左边指定长度的字符串,类似于Basic中的LEFT函数。
Right()
获取字符串右边指定长度的字符串,类似于Basic中的RIGHT函数。
SpanIncluding
从字符串中提取包含在指定字符数组内的字符的子串。
SpanEncluding()
从字符串中提取不包含在指定字符数组内的字符的子串。
NakeUpper()
将字符串中所有的字符全部转化成大写形式。
MakeLower()
将字符串中所有的字符全部转化成小写形式。
MakeReverse()
将字符串倒置。
Format()
象sprintf()函数一样格式化字符串。
TrimLeft()
删除字符串左边开头的空白字符。
TrimRight()
删除字符串右边结尾的空白字符。
FormatMessage()
…………………………………………………………Page 618……………………………………………………………
格式化消息字符串。
Find()
在字符串中查找指定的字符或字符串。
ReverseFind()
返回字符串中最后一次和指定的字符匹配的字符的下标。
FindOneOf()
在字符串中查找第一个和指定的字符匹配的字符。
GetBuffer()
获得指向CString对象内字符的指针。
GetBufferSetLength()
获得指向CString对象内字符的指针,但是只能截取指定长度的字
符。
ReleaseBuffer()
释放在缓冲区内由GetBuffer()函数返回的字符串。
LockBuffer()
复制字符串,并将其锁入缓冲区。
UnlockBuffer()
将调用LockBuffer()函数锁入缓冲区的字符串解锁。
LoadString()
从一个Windows资源加载一个已经存在的CString对象。
下面用几个例子来上读者体会一个CString类的好处。
示例 :连结字符串
1
代码如下:
…………………………………………………………Page 619……………………………………………………………
CString m_str1=〃工作〃;
CString m_str2=〃正常〃;
CString m_str3=m_str1+m_str2;
AfxMessageBox(m_str3);
运行结果如图10。12所示。
小说推荐
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 其他
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 其他
- 最新章:第28章
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 其他
- 最新章:第27章
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 其他
- 最新章:第26章
- asp基础实用教程(DOC格式)
- 目 录一、关于ASP二、ASP的新功能三、创建ASP页四、使用脚本语言五、使用变量和常量六、使用集合七、ASP内建对象八、向浏览器发送内容九、包含文件十、访问数据库十一、调试ASP脚本十二、维护ASP应用程序的安全一、关于ASP Active Server Pages(ASP)是服务器端脚本编写环境
- 其他
- 最新章:第17章
- Linux实用培训教程(PDF)
- -Page 1-rrktqt的个人空间 Linux实用培训教程第一部分 作者:红联Linux实用培训教程第一部分-共三部分解的Linux知识,循序渐进的介绍Linux相关知识,从入门到提高,希望对所有学习Linux的朋友都有帮助 红联Linux论坛是致力于Linux技术讨论的站点,目前网站收录的文章
- 其他
- 最新章:第42章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 其他
- 最新章:第31章
- 路由器基本知识及应用实例(DOC格式)
- 第二章 路由器第一节 路由器发展概述自从1984年问世至今,路由器已经走过了近20年的快速技术发展历程。路由器的应用领域不断扩展、从单一的互通网关逐渐扩展到覆盖广域网、城域网乃至用户接入的各个领域。近年来,路由器早已逐渐脱离单纯用于企业网出口和互联的概念,开始成为运营网络和各种专用业务网络的核心设备
- 其他
- 最新章:第48章
- Java编程思想第4版[中文版](PDF格式)
- -Page 1-Page 2《Thinking In Java》中文版作者:Bruce Eckel主页:http/BruceEckel.编译:Trans Bot主页:http/memberease~transbot致谢-献给那些直到现在仍在孜孜不倦创造下一代计算机语言的人们!指导您利用万维网的语言进
- 其他
- 最新章:第295章