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;
    }


     效果如下:


     

  • 相关阅读:
    maria-developers 开发者邮件
    Parallel Programming--perfbook
    面向对象设计模式中类与类关系
    binlog 轻松的找到没有及时提交的事物(infobin工具
    deeplearningbook-chinese
    Introduction to the Optimizer --cbo
    dell T420热插拔安装过程
    MySQL是如何利用索引的
    BTrace housemd TProfiler
    杨建荣的学习笔记
  • 原文地址:https://www.cnblogs.com/repository/p/1853188.html
Copyright © 2011-2022 走看看