lesson5:文本编辑
来源:互联网 发布:oracle数据库日志满了 编辑:程序博客网 时间:2024/06/05 02:58
1. CString类用法
- CString类对象的初始化
CString str;str="abd";/*----------------------------------*/CString str1("abc");CString str2("cba");
- 字符串基本操作
长度:GetLength();
CString str("abc");int len=str.GetLength();//len=3
是否为空,即不含字符:IsEmpty(); 清空字符串:Empty();
CString str;str="abc";BOOL empty=str.IsEmpty();//empty=FALSEstr.Empty();//清空字符串BOOL empty=str.IsEmpty();//empty=TRUE
转换大小写:MakeUpper、MakeLower 转换顺序:MakeReverse
CString str("Abc");str.MakeUpper();//str=="ABC"str.MakeLower();//str=="abc"st.MakeReverse();//sre=="cbA"
- 字符串查找
Find、ReverseFind、FindOneOf 三个函数可以实现字符串的查找操作
Find 从指定位置开始查找指定的字符或者字符串,返回其位置,找不到返回 -1;
CString str("abcdefg");int idx = str.Find("cde"); //idx 的值为2;
ReverseFind 从字符串末尾开始查找指定的字符,返回其位置,找不到返回 -1,虽然是从后向前查找,但是位置为从开始算起;
CString str("abcdefg");int idx = str.ReverseFind('e'); //idx 的值为4;
FindOneOf 查找参数中给定字符串中的任意字符,返回第一次出现的位置,找不到返回 -1;
CString str("abcabcd");int idx = str.FindOneOf("cbd"); //idx 的值为1;
- 字符串的替换与删除
Replace 替换 CString 对象中的指定的字符或者字符串,返回替换的个数,无匹配字符返回 0;
CString str("abcdabc");int num = str.Replace('b', 'k'); //str == akcdakc, num == 2/*-------------------------------------------------------*/CString str("abcdabc");int num = str.Replace(("bc"), ("kw")); //str == akwdakw, num == 2
Remove 删除 CString 对象中的指定字符,返回删除字符的个数,有多个时都会删除;
CString str("abcdabcb");int num = str.Remove('b'); //str == acdac, num == 3
Delete 删除 CString 对象中的指定位置的字符,返回处理后的字符串长度;
CString str("abcd");int num = str.Delete(1, 3); //str == a, num == 1
- 格式化字符串
Format 方法,实现从 int、long 等数值类型向 CString 类型的转换
int num=2;CString str;str.Format=("%c",num);
2. 插入符创建
void CreateSolidCaret( int nWidth, int nHeight );//创建插入符
void CreateCaret( CBitmap* pBitmap );//创建位图插入符
void ShowCaret( );//显示插入符
void HideCaret( );//隐藏插入符
static void PASCAL SetCaretPos( POINT point );//移动插入符号
注:
1)创建插入符要在窗口创建完成之后, CreateSolidCaret 函数创建的插入符被初始化为隐藏,所以需要调用 ShowCaret()将其显示。
2)使用 CreateCaret 函数创建位图插入符的时候,不能使用局部的位图对象关联位图资源。(与资源相关联的 C++对象,当它析构的时候会同时把与它相关联的资源销毁。)
3. 回车、退出创建
void CTextView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) //nChar按键输入信息{ // TODO: Add your message handler code here and/or call default CClientDC dc(this); CFont font; //字体 font.CreatePointFont(300,"华文行楷",NULL); //字体设置 CFont *pOldFont=dc.SelectObject(&font);//字体选择font TEXTMETRIC tm; dc.GetTextMetrics(&tm); if(0x0d==nChar) //回车(回车键的ASCII码十六进制数为0d) { m_strLine.Empty(); m_ptOrigin.y+=tm.tmHeight; } else if(0x08==nChar) //删除字符(退回键的ASCII码十六进制数为08) { COLORREF clr=dc.SetTextColor(dc.GetBkColor());//文本色设置成背景色 dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine); m_strLine=m_strLine.Left(m_strLine.GetLength()-1);//删除最右边的一个字符 dc.SetTextColor(clr); } else { CString tS; tS.Format("%c",nChar); m_strLine += tS; /*m_strLine+=nChar;*/ }
4. 定时器创建(SetTimer)
UINT_PTR SetTimer( UINT_PTR nIDEvent, UINT nElapse, void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD) );
nIDEvent
Specifies a nonzero timer identifier.nElapse
Specifies the time-out value, in milliseconds.
SetTimer(1,100,NULL); //100毫秒
5. 获取当前字体信息的度量 GetTextMetrics
BOOL GetTextMetrics( LPTEXTMETRIC lpMetrics ) const;
说明:
typedef struct tagTEXTMETRIC {
int tmHeight;//字体高度。Specifies the height (ascent + descent) of characters.
int tmAscent;//基线以上的字体高度
int tmDescent;//基线以下的字体高度
int tmInternalLeading;
int tmExternalLeading;
int tmAveCharWidth;//字符平均宽度
int tmMaxCharWidth;
int tmWeight;
BYTE tmItalic;
BYTE tmUnderlined;
BYTE tmStruckOut;
BYTE tmFirstChar;
BYTE tmLastChar;
BYTE tmDefaultChar;
BYTE tmBreakChar;
BYTE tmPitchAndFamily;
BYTE tmCharSet;
int tmOverhang;
int tmDigitizedAspectX;
int tmDigitizedAspectY;
} TEXTMETRIC;
//创建设备描述表
CClientDC dc(this);
//定义文本信息结构体变量
TEXTMETRIC tm;
//获得设备描述表中的文本信息
dc.GetTextMetrics(&tm);
//根据字体大小,创建合适的插入符
CreateSolidCaret(tm.tmAveCharWidth / 8, tm.tmHeight);
ShowCaret();
字体信息如下:
- lesson5:文本编辑
- lesson5
- 文本编辑
- LogicJava---Lesson5
- csdnS2-lesson5
- Lesson5 Recursion
- lesson5~键盘
- lesson5-1
- lesson5-2
- Lesson5 接口
- Lesson5 接口
- Lesson5:文本编程
- 黑马程序员-lesson5
- VC++笔记(Lesson5-Lesson7)
- Lesson5: 文本编程
- jsp lesson5 part1
- lesson5 高级类特性
- Lesson5: 文本编程
- 洛谷 P3317 [SDOI2014]重建(矩阵树定理+数学推导) [bzoj3534]
- postgresql的时间数据处理
- reactive-native极光推送不成功问题总结(android)
- spring 事务不起作用 问题汇总
- 大概是:整数划分||DP||母函数||递推
- lesson5:文本编辑
- sql where 1=1和 0=1 的作用
- Spring JDBC-Spring对事务管理的支持
- 常用编程语言简介
- LINTCODE——最大正方形
- thinkphp3.2写APP接口之图片验证码实现思路
- 快速排序
- ZigBee基础实验(三)--定时器1
- 条件和排序