zoukankan      html  css  js  c++  java
  • MFC_文本框

    一.闪烁符

      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);
  • 相关阅读:
    hdu5360 Hiking(水题)
    hdu5348 MZL's endless loop(欧拉回路)
    hdu5351 MZL's Border(规律题,java)
    hdu5347 MZL's chemistry(打表)
    hdu5344 MZL's xor(水题)
    hdu5338 ZZX and Permutations(贪心、线段树)
    hdu 5325 Crazy Bobo (树形dp)
    hdu5323 Solve this interesting problem(爆搜)
    hdu5322 Hope(dp)
    Lightoj1009 Back to Underworld(带权并查集)
  • 原文地址:https://www.cnblogs.com/Alimonky/p/5951851.html
Copyright © 2011-2022 走看看