北方工大-灵创策华 郑成龙(Q Q : 120952389) MFC 字符输入实例讲解 本文主要通过简单实例讲解,实现 SDI 中的视图窗口中实现字符的输入功能,主要是通过本文能够给 MFC 初学者一个相对简单的认知过程,希望能够给像我一样的菜鸟们一缕光明(好悲壮啊)
首先在 VS2008 内创建一个单文档(SDI)工程,起名为 MyText,选择默认即可,编译完成效果如下: 图 1 2
接下来,请根据我的思路与我一起去思考
完成字符输入功能,首先我们需要一个光标(caret),因此第一步,我们需要实现光标的创建与现实
在视图类窗口(客户服务区)创建后,我们创建我们的光标,那么需要在哪里创建呢
CMyTextView 类中的消息 WM_CREATE 对应的 OnCreate()函数中添加即可: int CMyTextView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 CClientDC clientDC(this); 北方工大-灵创策华 郑成龙(Q Q : 120952389) //获取当前字体的度量信息 TEXTMETRIC tm; clientDC
GetTextMetrics(&tm); //创建实体光标并显示 CreateSolidCaret(tm
tmAveCharWidth/8,tm
tmHeight); ShowCaret(); return 0; } 3
此时光标显示在左上角位置,且不能移动
因此如何让光标移动到我们鼠标点击的位置呢
显然,我们要在视图类中相应WM_LBUTTONDOWN 消息,编辑相应的代码: void CMyTextView: