MFC中插入符的生成

响应WM_CREATE消息的代码如下:

 1 int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct)
 2 {
 3     if (CView::OnCreate(lpCreateStruct) == -1)
 4         return -1;
 5 
 6     // 插入符在窗口重绘的过程中不会消失
 7     /** 创建文本插入符
 8     CClientDC dc( this );
 9     TEXTMETRIC tm;
10     dc.GetTextMetrics( &tm );        // 通过 TEXTMETRIC 结构体获取字体信息
11     CreateSolidCaret(tm.tmAveCharWidth/8, tm.tmHeight);        // 创建一个插入符,宽度为字体的平均宽度/8, 高度为字体高度,该方法是CWnd类拥有的
12     ShowCaret();                    // 默认情况下插入符是隐藏的,调用此函数显示插入符号
13     */
14 
15     // 创建位图插入符
16     m_Bitmap.LoadBitmapW( IDB_BITMAP2 ); 
17     // 这里的m_Bitmap要定义为成员变量,如果在这里定义,将不能显示出图像插入符,因为这里的位图变成了局部变量,此函数结束后位图变量会发生析构销毁,不能达到预期效果
18     CreateCaret( &m_Bitmap );
19     ShowCaret();
20     return 0;
21 }

效果如下:插入符会不断闪动

原文地址:https://www.cnblogs.com/dongsheng/p/3595758.html