Lesson5: 文本编程
来源:互联网 发布:visio2007 网络拓扑图 编辑:程序博客网 时间:2024/05/17 20:34
1,创建插入符:
void CreateSolidCaret( int nWidth, int nHeight );//创建插入符
void CreateCaret( CBitmap* pBitmap );//创建位图插入符
void ShowCaret( );//显示插入符
void HideCaret( );//隐藏插入符
static void PASCAL SetCaretPos( POINT point );//移动插入符号
说明:
1)创建插入符要在窗口创建完成之后,CreateSolidCaret函数创建的插入符被初始化为隐藏,所以需要调用ShowCaret()将其显示。
2)使用CreateCaret函数创建位图插入符的时候,不能使用局部的位图对象关联位图资源。(与资源相关联的C++对象,当它析构的时候会同时把与它相关联的资源销毁。)
2,获取当前字体信息的度量:CDC::GetTextMetrics
BOOL GetTextMetrics( LPTEXTMETRIC lpMetrics ) const;
说明:
typedef struct tagTEXTMETRIC { /* tm */
int tmHeight;//字体高度。Specifies the height (ascent + descent)of characters.
int tmAscent;//基线以上的字体高度
int tmDescent;//基线以下的字体高度
int tmInternalLeading;
int tmExternalLeading;
int tmAveCharWidth;//字符平均宽度
int tmMaxCharWidth;
int tmWeight;
BYTE tmItalic;
BYTE tmUnderlined;
BYTE tmStruckOut;
BYTE tmFirstChar;
BYTE tmLastChar;
BYTE tmDefaultChar;
BYTE tmBreakChar;
BYTE tmPitchAndFamily;
BYTE tmCharSet;
int tmOverhang;
int tmDigitizedAspectX;
int tmDigitizedAspectY;
} TEXTMETRIC;
//创建设备描述表
CClientDC dc(this);
//定义文本信息结构体变量
TEXTMETRIC tm;
//获得设备描述表中的文本信息
dc.GetTextMetrics(&tm);
//根据字体大小,创建合适的插入符
CreateSolidCaret(tm.tmAveCharWidth / 8, tm.tmHeight);
ShowCaret();
3,OnDraw函数:
virtual void OnDraw( CDC* pDC )
当窗口(从无到有或尺寸大小改变等)要求重绘的时候,会发送WM_PAIN消息,调用OnDraw函数进行重绘。在客户区的绘图如果想保持不变也可以在这个函数中进行编写,每次重给的时候会再次执行代码,生成绘图.
4,获取某字符串的高度和宽度(区别字符串的长度,长度表示字符个数):
CDC::GetTextExtent
CSize GetTextExtent( LPCTSTR lpszString, int nCount )const;
CSize GetTextExtent( const CString& str ) const;
说明:
//The CSize class is similar to the Windows SIZEstructure。
typedef struct tagSIZE {
int cx;//the x-extent
int cy;//the y-extent
} SIZE;
5,路径层:
BOOL BeginPath( );//CDC中函数
//在这作图定义路径层剪切区域
BOOL EndPath( );
BOOL SelectClipPath( int nMode );//调用这个函数来使当前路径层剪切区域与新剪切区域进行互操作。
//在这覆盖作图(包含前定义的路径层区域)定义新的剪切区域
说明:
1)SelectClipPathSelects the current path as a clipping region for the device context, combiningthe new region with any existing clipping region by using the specified mode.The device context identified must contain a closed path.
2)应用:当作图的时候,如果想要在整幅图形其中的某个部分和其它部分有所区别,我们可以把这部分图形放到路径层当中,然后指定调用指定互操作模式调用SelectClipPath( intnMode )函数来使路径层和覆盖在其上新绘图剪切区域进行互操作,达到特殊效果。
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 beinitialized with CreateFont, CreateFontIndirect, CreatePointFont, orCreatePointFontIndirect before it can be used.
选用字体事例代码组:
CClientDC dc(this);
CFont font;//构造字体对象
font.CreatePointFont(300,"华文行楷",NULL);//初始化字体对象,与字体资源相关联
CFont *pOldFont=dc.SelectObject(&font);//将新字体选入DC
...
dc.SelectObject(pOldFont);//恢复原字体
说明:
1)构造字体对象时候,必须初始化。(初始化是将字体对象与字体资源相关联)。
2)初始化对象时候,选用的字体也可以是系统字体,但不一定都有效,据测试选用。
8,在MFC中CEditView 和 cRichEditView类已经完成了初步的文字处理。可以让应用程序的View类以CEditView和 cRichEditView类为基类。在创建工程中的第六步可以选择.
9,平滑变色
CDC::TextOut()是一个字母一个字母的输出,达不到平滑效果。
CDC::DrawText():将文字的输出局限于一个矩形区域,超出矩形区域的文字都被截断。利用这一特点,可每隔些时间增加矩形大小,从而可实现人眼中的平滑效果。
CWnd::SetTimer():设置定时器。按设定的时间定时发送WM_TIMER消息。
说明:
UINT SetTimer( UINT nIDEvent, UINT nElapse, void(CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );
//nIDEvent定时器标示,nElapse消息发送间隔时间,void (CALLBACK EXPORT* lpfnTimer)(HWND,UINT, UINT, DWORD)设置回调函数,如果设置则由设置的回调函数处理WM_TIMER消息,如果没有设置回调函数设为NULL,这发送的WM_TIMER消息压入消息队列,交由相关联的窗口处理(添加WM_TIMER消息处理函数OnTimer())。
afx_msg void OnTimer( UINT nIDEvent );
//响应WM_TIMER消息,nIDEvent为消息对应定时器标示(可以设置不同的定时器发送WM_TIMER消息)
- Lesson5:文本编程
- Lesson5: 文本编程
- Lesson5: 文本编程
- Lesson5 文本编程 ---孙鑫VC++教程
- css中的文本---lesson5
- Lesson5: 菜单编程
- lesson5
- Windows程序设计__孙鑫C++Lesson5《文本操作》
- 孙鑫VC++深入详解:Lesson5 Part1 文本插入符Caret,位图插入符,窗口重绘
- LogicJava---Lesson5
- csdnS2-lesson5
- Lesson5 Recursion
- lesson5~键盘
- lesson5:文本编辑
- lesson5-1
- lesson5-2
- Lesson5 接口
- Lesson5 接口
- js上下滚动代码
- openstack Logical Architecture
- PHP系列之环境搭建
- 在Ubuntu上安装nasm方法
- 黑马程序员_字符编码解码
- Lesson5: 文本编程
- android中添加native服务的权限问题
- xheditor 无法调用?无法显示编辑栏?看这里!
- 搭建Eclipse PDT开发CakePHP的环境
- RGB彩色对照表
- 类的静态指针的初始化
- Android Fragment的使用
- Lesson6: 菜单编程
- 论文写作之 尾注