(一)插入符
1.创建插入符:用CWnd类的CreateSolidCaret()函数来实现,应该在窗口创建之后进行,可以在WM_CREATE消息响应函数OnCreate中添加创建插入符的代码,最后ShowCaret();
2.插入符的大小根据当前所选的字号来变化,CDC类的GetTextMetrics成员函数可以得到设备描述表中当前字体的度量 。
CClientDC dc(this);//创建设备描述表
TEXTMETRIC tm;//定义文本信息结构体变量
dc.GetTextMetrics(&tm);//获取设备描述表中的文本信息
CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);//根据字体的大小,创建合适的插入符,除以8是一个经验值,可以找到适合自己的值
ShowCaret();//显示插入符
3.创建图形插入符,CWnd类的CreateCaret()来实现,首先在视图类里创建一个成员变量:
private:
CBitmap bitmap;
然后在OnCreate()里添加以下代码:
(二)窗口重绘
1.窗口重绘时,应用程序框架代码会调用一个类似于WM_PAINT消息响应函数的OnDraw函数。
2.在程序窗口中输出一串文字的功能用TextOut()来实现。
3.MFC上,提供的一个字符串类CString,在利用CString操作字符串时,无论存储多少个字符,都不需要对它进行内存分配,因为这些操作在类的内部已经完成了。
4.在OnDraw函数里添加
CString str("Hello world!");
pDc->TextOut(100,100,str);
(三)路径
1.路径层(path bracket):利用其特点来实现特殊效果,如:在整幅图形中某一部分与其它部分有区别,就可以把这部分的图形放置到一个路径层中,然后利用SelectClipPath函数设置一种模式,让路径层裁剪区域进行互操作以达到一种特殊的效果。
利用BeginPath和EndPath两个函数来实现路径层
2.CDC类提供了一个GetTextExtent()来获得一个某个特定的字符串在屏幕上显示的宽度的高度 。
(四)字符输入
1.把插入符移动到鼠标左键:利用CWnd类的SetCaretPos()来实现。
2.把以前输入的字符清空:CWnd类的Empty()来实现。
3.在视图类中添加一个类型为CPoint的私有变量m_ptOrigin来保存鼠标左键单击的坐标。
4.利用已保存的当前插入点的纵坐标加上当前字体的高度就可以得到回车后插入符的新位置的纵坐标,横坐标不变。
本文详细介绍了在Windows窗口中实现插入符、窗口重绘、路径应用以及字符输入的技术,包括创建插入符、文本输出、使用MFC类操作字符串、路径层应用以及通过OnDraw函数重绘窗口的方法。
651

被折叠的 条评论
为什么被折叠?



