创建插入符及插入符操作

插入符的创建应该在窗口创建之后进行,可以在WM_CREATE消息的响应函数中创建.(注意,视类窗口覆盖在框架窗口之上)

一、创建普通插入符

int CDrawView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CView::OnCreate(lpCreateStruct) == -1)
        return -1;

    // TODO:  在此添加您专用的创建代码

    TEXTMETRIC tm;
    CClientDC dc(this);
    dc.GetTextMetrics(&tm);//取得当前设备描述表中的字体信息
    //将插入符的高度设为当前字体高度,宽度设为当前字体宽度/8,这是一个经验值.
    CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);
    ShowCaret();//CreateSolidCaret创建的插入符初始时是隐藏的,调用ShowCaret来显示它.

    return 0;
}

二、创建图形插入符

int CDrawView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CView::OnCreate(lpCreateStruct) == -1)
        return -1;
    // TODO:  在此添加您专用的创建代码

    static CBitmap bitmap;//注意把CBitmap对象定义为成员变量或静态变量,
    //否则当OnCreate函数结束后会导致CBitmap对象被析构,并销毁与该对象关联的资源,
    //导致插入符无法显示。
    bitmap.LoadBitmapW(IDB_BITMAP1);
    CreateCaret(&bitmap);//创建位图插入符
    ShowCaret();//显示插入符

    return 0;
}

三、

可以在WM_LBUTTONDOWN或WM_LBUTTONUP消息中调用SetCaretPos函数,设置插入符在客户区中的显示位置为鼠标点击的位置

    SetCaretPos(m_BeginPaint);
时间: 2024-08-14 01:44:28

创建插入符及插入符操作的相关文章

【原创】通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: '\xF0...

这篇blog重点在解决问题,如果你对字符编码并不是特别了解,建议先看看 < [原创]通俗易懂地解决中文乱码问题(1) --- 跨平台乱码 >. 当然,如果只是针对解决这个Mysql插入报错问题,本篇足够了. 一.定位错误 定位错误绝对是至关重要的一环.我建议遇到问题耐心分析一下比较好,毕竟“不是所有的牛奶都叫特仑苏”. 引起同一个问题的可能有很多,别人的解决方案也许并不适合自己. 那先看看问题出现在哪了,报错如下: 发现的确是编码错误, 16进制的错误提示(\xF0\x9F\x94\xA5\x

通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: &#39;\xF0...

原文:[原创]通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 'incorrect string value: '\xF0... 这篇blog重点在解决问题,如果你对字符编码并不是特别了解,建议先看看 < [原创]通俗易懂地解决中文乱码问题(1) --- 跨平台乱码 >. 当然,如果只是针对解决这个Mysql插入报错问题,本篇足够了. 一.定位错误 定位错误绝对是至关重要的一环.我建议遇到问题耐心分析一下比较好,毕竟“不是所有的牛奶都叫特仑苏”. 引起同一个问

Entity Framework 6 Recipes 2nd Edition(10-10)译 - &gt; 为TPH继承的插入、更新、删除操作映射到存储过程

10-10. 为TPH继承的插入.更新.删除操作映射到存储过程 问题 TPH继承模型,想把它的插入.修改.删除操作映射到存储过程 Solution 假设数据库有一个描述不同种类的产品表(Product )(见Figure 10-13). 而且为这个表的每种产品创建了创建了派生模型,这个模型如Figure 10-14. Figure 10-13. 一个含有鉴别列(ProductType)的产品表, 表的每行按该列的值划分不同的产品 Figure 10-14. TPH继承形式的模型 接下来把这个模型

二叉排序树(BST):创建、查找、插入与删除

删除结点的相关操作(左右子树均为非空的删除结点的方法): 算法分析: 下面以实例来说明二叉排序树的创建.查找.插入和删除等相关操作: 如输入关键字序列(45,24,37,12,54,93),然后对其进行相应的操作,程序如下: #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; typedef struct BiTNode { int value; struct B

创建一个单链表,实现头部插入和尾部插入

/*目的:创建一个单链表,实现尾部插入,头部插入,遍历链表*/ #include <stdio.h>#include <string.h>#include <stdlib.h> //定义一个结构体,用来表示一个节点,包含指针域,数据域 struct node{ int data; //数据域 struct node *next; //指针域,指向节点的指针,用来连接两个节点}; //定义一个函数,用来创建节点,为节点分配堆内存,由于堆内存残留有随机值,创建成功后清空内存

数据结构开发(23):二叉树中结点的查找、插入、删除与清除操作

0.目录 1.二叉树中结点的查找操作 2.二叉树中结点的插入操作 3.二叉树中结点的删除操作 4.二叉树中结点的清除操作 5.小结 1.二叉树中结点的查找操作 查找的方式: 基于数据元素值的查找 BTreeNode<T>* find(const T& value) const 基于结点的查找 BTreeNode<T>* find(TreeNode<T>* node) const 树中数据元素和结点的查找: 基于数据元素值的查找: 定义功能:find(node,

jQuery---jq操作标签文本(html(),text()),jq操作文档标签(插入,删除,修改),克隆,,jq操作属性,jq操作class属性,jq操作表单value,jq操作css,jq操作盒子(重要),jq操作滚动条

jQuery---jq操作标签文本(html(),text()),jq操作文档标签(插入,删除,修改),克隆,,jq操作属性,jq操作class属性,jq操作表单value,jq操作css,jq操作盒子(重要),jq操作滚动条 一丶jQ操作标签内文本 html() 标签元素中的内容 /** 替换的内容可以使一个js对象,jq对象,文本 **/ /* 获取值:获取选中标签元素的所有内容 ,包括标签*/ $('ul').html() " <li>1</li> <li&g

C++中对字符串进行插入、替换、删除操作

#include <iostream> #include <string> using std::cout; using std::endl; using std::string; int main(void){ string str1="We can insert a string"; string str2="a str into "; //在字符串指定位置前面插入指定字符串 cout <<str1.insert(14,str

ASP入门(二十三)- 数据库插入、更新和删除操作

我们这里介绍如何使用 Recordset 对象进行插入.更新和删除操作,顺便和 SQL 语句对比. 插入记录 AddNew 方法用于插入一条记录,首先打开一个记录集,并且这个记录具备可写特性,而后调用 AddNew 方法告诉 ADO 要插入一条记录,而后分别设置各个字段的值,最后调用 Update 方法将插入的记录生效. 还是直接看具体代码和注释吧(AddNew.asp),如下: <!--#include file="../include/conn.asp"--> <

MySQL数据库表的数据插入、修改、删除操作及实例应用

1.MySQL数据库表的数据插入.修改.删除操作SQL语法格式: 1 CREATE DATABASE db0504; 2 3 USE db0504; 4 5 CREATE TABLE student ( 6 sno VARCHAR (10) NOT NULL UNIQUE PRIMARY KEY, 7 sname VARCHAR (20) NOT NULL, 8 ssex enum ('男', '女') NOT NULL DEFAULT '男', 9 sbirth date, 10 sclass