一、创建普通插入符
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; }
QQ:373078188" />
三、 可以在WM_LBUTTONDOWN或WM_LBUTTONUP消息中调用SetCaretPos函数,设置插入符在客户区中的显示位置为鼠标点击的位置SetCaretPos(m_BeginPaint);