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();

字体信息如下:
imag

原创粉丝点击