zoukankan      html  css  js  c++  java
  • vc创建文本插入符


      插入符多用于文本处理程序中,其实也就是我们经常在字处理软件中看到的光标指针。

    在程序中,可以创建二种插入字符,第一种是固定的插入符号(SolidCaret),第二种就是可以是图形的插入符号。

      先看第一种,  利用MFC wizard建立一个Project

    int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        
    if (CView::OnCreate(lpCreateStruct) == -1)
            
    return -1;
        
        
    //create client device context
        CClientDC dc(this);
        
    //文本度量结构体
        TEXTMETRIC tm;
        
    //取当前设备上下文的文本度量值
        dc.GetTextMetrics(&tm);
        
    //创建插入符
        CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);
        
    //由于创建的插入符默认是隐藏的,所以需要显示插入符
        ShowCaret();
        
    return 0;
    }


    CreateSolidCaret方法用于创建一个插入符,该方法需要指定插入符的高度及宽度。

     在程序中用当前文本平均宽度/8得到,这个不是什么规律,而是多次试验得出来的。 

      第二种就是利用位图来创建插入符,利用方法 CWnd::CreateCaret(CBitmap *bitmap)

    如下程序:

    //

    CTestView : 
    public CView
    {
       
    private:
          CBitmap bitmap;
    }


    int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
        
    if (CView::OnCreate(lpCreateStruct) == -1)
            
    return -1;
        
        
        CClientDC dc(
    this);
        
    //加载位图标识
        bitmap.LoadBitmap(IDB_BITMAP1);
        CreateCaret(
    &bitmap);
        ShowCaret();
        
    return 0;
    }


     效果如下:


     

  • 相关阅读:
    题目---结构体指针链表及迷宫问题
    题目---汉诺塔及AI代码及八皇后
    感想---如何去面试一个人?如何有效学习及提问的智慧。
    题目---统计学生成绩及一帮一及考试座位号
    题目---处理字符四题及预习题
    题目---改大写及自动售货机及删除指定元素
    第七周作业
    第六周作业
    第五周作业
    第四周作业
  • 原文地址:https://www.cnblogs.com/repository/p/1853188.html
Copyright © 2011-2022 走看看