MFC文本编程

来源:互联网 发布:java退格符是什么意思 编辑:程序博客网 时间:2024/06/05 17:00

(一)插入符

1.创建插入符:用CWnd类的CreateSolidCaret()函数来实现,应该在窗口创建之后进行,可以再WM_CREATE消息响应函数OnCreate中添加创建插入符的代码,最后ShowCarer()

2.插入符的大小根据当前所选的字号来变化,CDC类的GetTextMetrics成员函数可以得到设备描述表中当前字体的度量。

3.代码如下:

int CSdfView::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CView::OnCreate(lpCreateStruct) == -1)return -1;// TODO: Add your specialized creation code hereCClientDC dc(this);TEXTMETRIC tm;dc.GetTextMetrics(&tm);CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);ShowCaret();return 0;}

3.创建图形插入符,CWnd类的CreateCaret()来实现,首先在视图类里创建一个成员变量:

    private:

               CBitmap bitmap;

    然后在OnCreate()里添加以下代码:

bitmap.LoadBitmap(IDB_BITMAP1);CreateCaret(&bitmap);ShowCaret();

1.窗口重绘时,应用程序框架代码会调用一个类似于WM_PAINT消息响应函数的OnDraw函数。

2.在程序窗口中输出一串文字的功能用TextOut()来实现。

3.MFC上,提供的一个字符串类CString,在利用CString操作字符串时,无论存储多少个字符,都不需要对它进行内存分配,因为这些操作在类的内部已经完成了。

4.在OnDraw函数里添加

CString str("VC编程");pDC->TextOut(50,50,str);// 第一种方法str.LoadString(IDS_STRINGVC);//第二种方法 创建字符串资源pDC->TextOut(100,100,str);

(三)路径1.路径层(path bracket):利用其特点来实现特殊效果,如:在整幅图形中某一部分与其它部分有区别,就可以把这部分的图形放置到一个路径层中,然后利用SelectClipPath函数设置一种模式,让路径层裁剪区域进行互操作以达到一种特殊的效果。利用BeginPath和EndPath两个函数来实现路径层2.CDC类提供了一个GetTextExtent()来获得一个某个特定的字符串在屏幕上显示的宽度的高度3.代码如下:

CString str("VC编程");pDC->TextOut(50,50,str);// 第一种方法str.LoadString(IDS_STRINGVC);//第二种方法 创建字符串资源pDC->TextOut(100,100,str);CSize sz=pDC->GetTextExtent(str);pDC->BeginPath();pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);pDC->EndPath();pDC->SelectClipPath(RGN_DIFF);for(int i=0;i<300;i+=10){pDC->MoveTo(0,i);pDC->LineTo(300,i);pDC->MoveTo(i,0);pDC->LineTo(i,300);}