您的位置:首页 > 其它

MFC文本处理基础

2012-01-26 08:38 190 查看
CWnd::CreateSolidCaret
BOOL CreateSolidCaret( int nWidth, int nHeight );

CWindow::CreateCaret
BOOL CreateCaret( HBITMAP pBitmap );

CDC::GetTextMetrics
BOOL GetTextMetrics( LPTEXTMETRIC lpMetrics ) const;

CDC::GetTextExtent
CSize GetTextExtent( const CString& str ) const;

CWnd::ShowCaret
void ShowCaret( );

CDC::TextOut
BOOL TextOut( int x, int y, const CString& str );

CDC::DrawText
int DrawText( const CString& str, LPRECT lpRect, UINT nFormat );

CDC::GetTextExtent
CSize GetTextExtent( const CString& str ) const;

CDC::BeginPath
BOOL BeginPath( );

CDC::EndPath
BOOL EndPath( );

CDC::SelectClipPath
BOOL SelectClipPath( int nMode );


//demo1(在视图类的OnCreate()中添加如下代码):
//创建实心插入符
CClientDC dc(this);
TEXTMETRIC mt;
dc.GetTextMetrics(&mt); //获取当前字体信息
CreateSolidCaret(mt.tmAveCharWidth/8,mt.tmHeight);//创建实心光标,参数为宽度和高度
ShowCaret();//在被创建之后,插字符是隐藏的。要显示插字符,必须调用ShowCaret成员函数。

//demo2(在视图类的OnCreate()中添加如下代码):
//创建位图插入符
CBitmap *bitmap = new CBitmap();
bitmap->LoadBitmap(IDB_BITMAP1);//插入符是一个位图
CreateCaret(bitmap);
ShowCaret();

//demo3(在视图类中的OnDraw()中添加如下代码)
//显示文本
CString s("MFC程序设计");
CString str;
str.LoadString(IDS_MFC);//从资源中调入字符串
pDC->TextOut(50,50,s);
pDC->TextOut(50,100,str);

//demo4(创建一个定时器,在OnTimer()中添加如下代码)
//渐变显示文本
m_width += 5; //m_width为视图类的成员变量
CClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
CRect rect;//构造矩形
rect.left = 0;
rect.top = 200;
rect.right = m_width;
rect.bottom = rect.top+tm.tmHeight;
dc.SetTextColor(RGB(255,0,0));
CString str;
str.LoadString(IDS_MFC);
dc.DrawText(str, &rect,DT_LEFT);

//demo5(在视图类的OnCreate()中添加如下代码)
//选择当前的路径作为设备环境的一个剪切区域。

CSize sz = pDC->GetTextExtent(str);//使用该函数获得所选字体中指定字符串的高度和宽度

pDC->BeginPath();
pDC->Rectangle(50,100,50+sz.cx,100+sz.cy);
pDC->Ellipse(100,100,300,300);
pDC->EndPath();

pDC->SelectClipPath(RGN_DIFF);
for(int i=0; i<500; i+=10)
{
pDC->MoveTo(0,i);
pDC->LineTo(500,i);
pDC->MoveTo(i,0);
pDC->LineTo(i,500);
}

//demo6(在Onchar()中添加如下代码)
//响应回车和退格键
if(0x0d==nChar)//响应回车键
{
//...
}
else if(0x08 == nChar)//响应退格键
{
COLORREF clr;
clr = dc.SetTextColor(dc.GetBkColor());
dc.TextOut(m_point.x, m_point.y, m_strLine);
m_strLine = m_strLine.Left(m_strLine.GetLength()-1);//去掉最后一个字符
dc.SetTextColor(clr);
}
else
{
//...
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mfc