《C语言实例教程(PDF格式)》第128章


图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所示。
小说推荐
返回首页返回目录