响应WM_CREATE消息的代码如下:

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

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

MFC中插入符的生成-LMLPHP

05-11 22:10