一.闪烁符
CWnd::CreateSolidCaret 创建插入符
ShowCaret()显示插入符。
GetTextMetrics(),获得当前字体的一些信息。
CWnd::CreateCaret()创建图象插入符
1 bitmap.LoadBitmap(IDB_BITMAP1);//此处的 bitmap 为成员变量! ! ! 2 CreateCaret(&bitmap); 3 ShowCaret(); 4 TEXTMETRIC tm;//字体结构体 5 dc.GetTextMetrics(&tm);// 6 m_ptOrigin.y+=tm.tmHeight;//获得字体高度
字符输入 CString::LoadString(ID 号) 比较方便
二.路径层的概念
有以下两种方法创建路径层,作用:可以保护我们先前的文本或者图像不被后来画的覆盖
(1) pDC->BeginPath(); pDC->Rectangle(50,50,50+sz.cx,50+sz.cy); pDC->EndPath(); pDC->SelectClipPath(RGN_DIFF); (2) CSize sz=pDC->GetTextExtent(str); CRgn rn; rn.CreateRectRgn(0,50,sz.cx,sz.cy); pDC->SelectClipRgn(&rn,RGN_DIFF)
三.在View输入文字的步骤
1 CFont font;//创建字体对象 2 font.CreatePointFont(300,"华文行楷",NULL);//设置 3 CFont *pOldFont=dc.SelectObject(&font);//将字体选择到 DC 中 4 TEXTMETRIC tm;//创建字体信息对象 5 dc.GetTextMetrics(&tm);//获得当前字体信息 6 if(0x0d==nChar)//处理回车键 7 { 8 m_strLine.Empty(); 9 m_ptOrigin.y+=tm.tmHeight; 10 } 11 else if(0x08==nChar)//处理退格键 12 { 13 COLORREF clr=dc.SetTextColor(dc.GetBkColor());//通过句柄获取背景色,设置文本颜色,保存到clr结构体中 14 dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);//输出字符 15 m_strLine=m_strLine.Left(m_strLine.GetLength()-1); 16 dc.SetTextColor(clr);//设置文本颜色 17 } 18 else 19 { 20 m_strLine+=nChar; 21 } 22 CSize sz=dc.GetTextExtent(m_strLine); CPoint pt;//处理光标的位置 23 pt.x=m_ptOrigin.x+sz.cx; 24 pt.y=m_ptOrigin.y; SetCaretPos(pt); 25 dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);//输出字体 dc.SelectObject(pOldFont);//将原先的字体选择回去。
卡拉ok字体程序
//DEL m_nWidth+=5;//此为 view 的成员变量,初始值为 0 //DEL //DEL //DEL CClientDC dc(this);//创建view句柄 //DEL TEXTMETRIC tm; //创建字体结构体 //DEL dc.GetTextMetrics(&tm);//获得文本字体,保存在tm中 //DEL CRect rect; //创建一个矩形区域 //DEL rect.left=0; //设置区域大小左 //DEL rect.top=200;//设置区域顶部坐标 //DEL rect.right=m_nWidth;//设置区域长度量 //DEL rect.bottom=rect.top+tm.tmHeight;//此长方形的长度随着定时器的触发,逐渐增大,设置区域高度量 //DEL dc.SetTextColor(RGB(255,0,0));//通过句柄来设置文本颜色 //DEL CString str; //创建字符 //DEL str.LoadString(IDS_WEIXIN);//导入ID 号中的字符 //DEL dc.DrawText(str,rect,DT_LEFT);此函数的作用是将字符串输出到长方形中, 但如果字符串的长度超过长方形的长度,多余的字符将被截断 //DEL //DEL rect.top=150;//在顶部为150处输入 //DEL rect.bottom=rect.top+tm.tmHeight;//高度获取 //DEL dc.DrawText(str,rect,DT_RIGHT);// //DEL //DEL CSize sz=dc.GetTextExtent(str);获得字符串的长度 //DEL if(m_nWidth>sz.cx)当长方形的长度大于字符串的长度后,将其重新归 0 //DEL { //DEL m_nWidth=0; //DEL dc.SetTextColor(RGB(0,255,0)); //DEL dc.TextOut(0,200,str); //DEL } //DEL //DEL CView::OnTimer(nIDEvent);