MFC学习笔记(三)——文本编程

本文详细介绍了在Windows窗口中实现插入符、窗口重绘、路径应用以及字符输入的技术,包括创建插入符、文本输出、使用MFC类操作字符串、路径层应用以及通过OnDraw函数重绘窗口的方法。

(一)插入符

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.利用已保存的当前插入点的纵坐标加上当前字体的高度就可以得到回车后插入符的新位置的纵坐标,横坐标不变。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值