2022-12-08 23:55:57
在mfc中如何在view类的视图中像word的那样输入文字 ...
首先在view 类的oncreate函数中,
1,创建和显示插入符的几种函数:
void createsolidcaret( int nwidth, int nheight );//创建插入符
void createcaret( cbitmap* pbitmap );//创建位图插入符
void showcaret( );//显示插入符
void hidecaret( );//隐藏插入符
2、创建设备描述表
cclientdc dc(this);
//定义文本信息结构体变量
textmetric tm;
//获得设备描述表中的文本信息
dc.gettextmetrics(&tm);
//根据字体大小,创建合适的插入符
createsolidcaret(tm.tmavecharwidth / 8, tm.tmheight);
showcaret();
4,获取某字符串的高度和宽度(区别字符串的长度,长度表示字符个数):
cdc::gettextextent
csize gettextextent( lpctstr lpszstring, int ncount ) const;
csize gettextextent( const cstring& str ) const;
5,路径层:
bool beginpath( );//cdc中函数
//在这作图定义路径层剪切区域
bool endpath( );
bool selectclippath( int nmode );//调用这个函数来使当前路径层剪切区域与新剪切区域进行互操作。
//在这覆盖作图(包含前定义的路径层区域)定义新的剪切区域
6,关于文本字符串一些函数:
colorref getbkcolor( ) const;//得到背景颜色
virtual colorref setbkcolor( colorref crcolor );//设置背景颜色
bool settextbkcolor( colorref cr );//设置文本背景颜色
virtual colorref settextcolor( colorref crcolor );//设置文本颜色
virtual bool textout( int x, int y, lpctstr lpszstring, int ncount );//输出文本
bool textout( int x, int y, const cstring& str );//在x,y所指定坐标处输出str
cstring left( int ncount ) const;//得到字符串左边ncount个字符
int getlength( ) const;//得到字符串长度strlen()
7,字体cfont::cfont
cfont( );//构造函数
//constructs a cfont object. the resulting object must be initialized with createfont, createfontindirect, createpointfont, or createpointfontindirect before it can be used.
选用字体事例代码组:
cclientdc dc(this);
cfont font;//构造字体对象
font.createpointfont(300,"华文行楷",null);//初始化字体对象,与字体资源相关联
cfont *poldfont=dc.selectobject(&font);//将新字体选入dc
...
dc.selectobject(poldfont);//恢复原字体
所以在输出字符之前要做一大堆工作,获取字符一大堆信息,包括字符的大小,字体,颜色,位置和光标的关系,还有空格键,退格键,回车键的处理,还有涉及到文字的路径层,最后才能用textout()输出字符,以上的几个步骤是必须的,可能还有一些细节我忘了,具体参考孙鑫老师的视频,有具体讲解,我就不多说了。