用MFC写文本文档的编辑字处理程序
2010-10-08 03:58
274 查看
文本文档的编辑 想做字处理程序
通常我们所用的 words 、记事本、等等
我们建立一个MFC applicationwizard(exe)
1
选择c++文件
2
选择但文档文件,文档和其他不同的是,有一个一闪一闪的插入符,
3
件没有插入符。我们就给他做当我们建立一个文件的时候,我们就编译一些这个工程,看到这个文插入符,现在怎么做插入符呢,我们可以在
框架类里面做,也可以在可视类里面做,在框架类是包含在可视类里面的,所以我们就做可视类里面,用消息响应的方式来做,第一我们用函
数来响应,我们在建立函数(首先是在可视化里增加)
4
首先增加函数为CreateSolidCaret( int nWidth, int nHeight ); int nWidth,插入符的宽度 、int nHeight插入符的高度
视类始终是覆盖在框架类之上的,我们应该在视类中去创建响应的函数,我们可以自己去添加创建响应函数, WM CREATE 我们来增加编辑代码
然后我们创建一个插入符,CreateSolidCaret(1,20);然后编译程序,运行,看看
没有看见我们的插入符,插入符初始化的时候是隐藏的,要显示,需要调用函数,showcaret函数
插入符的大小根据我们的字体来变化,我们在word 和记事本中有体现 要让我们的插入符和字体大小一直,那我们的插入符就要获取设备描述
表文本的信息GetTextMetrics获取当前字体的一些信息,我们看到的是一个指针的变量我们将指针传给一个成员函数,来调用,看看这个结构
体,我们看看,我们需要定义结构体,
我们首先来构造一个dc 用 CClinetDC dc(this);
TEXETMETRIC tm;
dc.GetTexetMetrics(&tm);
接着我们创建图形的插入符。我们可以利用一个函数-CreateCaret( CreateCaret( CBitmap* pBitmap );这里有一个指向Bitmap的一个指针
,我们现构造一个 CBimap
) CBitmap bitmap; 局部的变量,当发生变化是要发生析构 最后我们将 CBitmap bitmap;剪贴到ctestview下的后面就可以了,这
样就是全局
bitmap.LoadBitmap(IDB_BITMAP1);
CreateCaret(&bitmap);
我们在我们的窗口输出一串文字,当我们的窗口尺寸发生变化时,我们的文字会发生重绘,我们就看不到了
CTestView::OnDraw(CDC* pDC) OnDraw函数通过调用CDC* PDC来
要来输入一串文字,现在就介绍一个类: CString 通常我们在对一个字符串进行定义的时候,就通过,利用指针完成字符串操作的功能。
CString str("陈蕊我爱你-郑航好爱你");
pDC->TextOut(50,50,str);
//CString str("陈蕊我爱你-郑航好爱你");
CString str;
str="陈蕊我爱你-郑航好爱你";
pDC->TextOut(50,50,str);
现在还有一个函数,等等看吧,
str.LoadString(IDS_ZHENGHANG);
pDC->TextOut(30,100,str);
2 路进程概念。圈地一个圈,我们走的轨迹,就是我们路进程。创建路进程,我们有来两个函数,BeginPath EndPath
现在获取什么呢,就是字符串的大小长度, 可用一个函数, GetTextExtent
CSize sz=pDC->GetTextExtent(str); pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
这个会用画刷填充矩形,看不见了,我们接着看,接着我们划一写网格。
for(int i=0;i<300;i+=10)
{ pDC->MoveTo(0,i);
pDC->LineTo(300,i);
pDC->MoveTo(i,0);
pDC->LineTo(i,300);
}现在跟糊涂了,现在看看,这个
SelectClipPath 这个函数将我们的绘图会有所改变,是将怎么样得的改变呢,
pDC->SelectClipath(RGM_AND)
现在我们看字符输出的消息,我们看看,我们用textout来输出的时候, 我们就不能实现,因为每次输出的时候的都要指定坐标。
我们增加WM CHAR 消息来编辑 有这个我们将完成一个输出的功能, 输出的时候我们的插入符跟着我们的光标移动的地方移动,我点到那里,
插入符就跟在那里,这样我们还需要捕获一个消息 WM LBUTTONDOWN 为了移动插入符我们可以利用一个函数来完成,SetCaretPos
SetCaretPos( point ); 我们可以用这个函数来表示
void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
SetCaretPos(point);
CView::OnLButtonDown(nFlags, point);
}
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
//CString str("陈蕊我爱你-郑航好爱你");
CString str;
str="陈蕊我爱你-郑航好爱你";
pDC->TextOut(50,50,str);
CSize sz=pDC->GetTextExtent(str);
str.LoadString(IDS_ZHENGHANG);
pDC->TextOut(50,150,str);
pDC->BeginPath();
pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
pDC->EndPath();
for(int i=0;i<300;i+=10)
{ pDC->MoveTo(0,i);
pDC->LineTo(300,i);
pDC->MoveTo(i,0);
pDC->LineTo(i,300);
pDC->SelectClipPath(RGN_XOR);
}
}
后===
通常我们所用的 words 、记事本、等等
我们建立一个MFC applicationwizard(exe)
1
选择c++文件
2
选择但文档文件,文档和其他不同的是,有一个一闪一闪的插入符,
3
件没有插入符。我们就给他做当我们建立一个文件的时候,我们就编译一些这个工程,看到这个文插入符,现在怎么做插入符呢,我们可以在
框架类里面做,也可以在可视类里面做,在框架类是包含在可视类里面的,所以我们就做可视类里面,用消息响应的方式来做,第一我们用函
数来响应,我们在建立函数(首先是在可视化里增加)
4
首先增加函数为CreateSolidCaret( int nWidth, int nHeight ); int nWidth,插入符的宽度 、int nHeight插入符的高度
视类始终是覆盖在框架类之上的,我们应该在视类中去创建响应的函数,我们可以自己去添加创建响应函数, WM CREATE 我们来增加编辑代码
然后我们创建一个插入符,CreateSolidCaret(1,20);然后编译程序,运行,看看
没有看见我们的插入符,插入符初始化的时候是隐藏的,要显示,需要调用函数,showcaret函数
插入符的大小根据我们的字体来变化,我们在word 和记事本中有体现 要让我们的插入符和字体大小一直,那我们的插入符就要获取设备描述
表文本的信息GetTextMetrics获取当前字体的一些信息,我们看到的是一个指针的变量我们将指针传给一个成员函数,来调用,看看这个结构
体,我们看看,我们需要定义结构体,
我们首先来构造一个dc 用 CClinetDC dc(this);
TEXETMETRIC tm;
dc.GetTexetMetrics(&tm);
接着我们创建图形的插入符。我们可以利用一个函数-CreateCaret( CreateCaret( CBitmap* pBitmap );这里有一个指向Bitmap的一个指针
,我们现构造一个 CBimap
) CBitmap bitmap; 局部的变量,当发生变化是要发生析构 最后我们将 CBitmap bitmap;剪贴到ctestview下的后面就可以了,这
样就是全局
bitmap.LoadBitmap(IDB_BITMAP1);
CreateCaret(&bitmap);
我们在我们的窗口输出一串文字,当我们的窗口尺寸发生变化时,我们的文字会发生重绘,我们就看不到了
CTestView::OnDraw(CDC* pDC) OnDraw函数通过调用CDC* PDC来
要来输入一串文字,现在就介绍一个类: CString 通常我们在对一个字符串进行定义的时候,就通过,利用指针完成字符串操作的功能。
CString str("陈蕊我爱你-郑航好爱你");
pDC->TextOut(50,50,str);
//CString str("陈蕊我爱你-郑航好爱你");
CString str;
str="陈蕊我爱你-郑航好爱你";
pDC->TextOut(50,50,str);
现在还有一个函数,等等看吧,
str.LoadString(IDS_ZHENGHANG);
pDC->TextOut(30,100,str);
2 路进程概念。圈地一个圈,我们走的轨迹,就是我们路进程。创建路进程,我们有来两个函数,BeginPath EndPath
现在获取什么呢,就是字符串的大小长度, 可用一个函数, GetTextExtent
CSize sz=pDC->GetTextExtent(str); pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
这个会用画刷填充矩形,看不见了,我们接着看,接着我们划一写网格。
for(int i=0;i<300;i+=10)
{ pDC->MoveTo(0,i);
pDC->LineTo(300,i);
pDC->MoveTo(i,0);
pDC->LineTo(i,300);
}现在跟糊涂了,现在看看,这个
SelectClipPath 这个函数将我们的绘图会有所改变,是将怎么样得的改变呢,
pDC->SelectClipath(RGM_AND)
现在我们看字符输出的消息,我们看看,我们用textout来输出的时候, 我们就不能实现,因为每次输出的时候的都要指定坐标。
我们增加WM CHAR 消息来编辑 有这个我们将完成一个输出的功能, 输出的时候我们的插入符跟着我们的光标移动的地方移动,我点到那里,
插入符就跟在那里,这样我们还需要捕获一个消息 WM LBUTTONDOWN 为了移动插入符我们可以利用一个函数来完成,SetCaretPos
SetCaretPos( point ); 我们可以用这个函数来表示
void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
SetCaretPos(point);
CView::OnLButtonDown(nFlags, point);
}
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
//CString str("陈蕊我爱你-郑航好爱你");
CString str;
str="陈蕊我爱你-郑航好爱你";
pDC->TextOut(50,50,str);
CSize sz=pDC->GetTextExtent(str);
str.LoadString(IDS_ZHENGHANG);
pDC->TextOut(50,150,str);
pDC->BeginPath();
pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
pDC->EndPath();
for(int i=0;i<300;i+=10)
{ pDC->MoveTo(0,i);
pDC->LineTo(300,i);
pDC->MoveTo(i,0);
pDC->LineTo(i,300);
pDC->SelectClipPath(RGN_XOR);
}
}
后===
相关文章推荐
- vs2005里,建立一个MFC单文档程序,未选择数据库支持,后来需要用sql server的处理方法
- MFC多文档视图界面(MDI)搭建图像处理框架程序总结
- [MFC]文档/视图结构的命令传送和预定义命令ID(包括命令处理程序)
- 文本文档-字处理程序代码
- 继承opencv的CImage类在MFC的单文档中编辑并显示图像
- MFC单文档程序流程
- MFC 学习笔记 1 程序入口主函数的处理
- MATLAB程序生成了txt文本文档,记事本打开不换行
- MFC中单文档程序框架
- 给MFC程序添加文件拖放处理
- MFC 文档视图结构程序结构总揽
- 桌面或文件夹里单击鼠标右键新建菜单下不显示文本文档的处理方法
- 利用AJAX实现简单的用户登录程序(处理服务端返回的文本数据)
- 基于MFC文档/视/框架程序之利剑
- dealstring 处理文本文档的数据.
- SharePoint Portal Server 2003 SP2对文档库事件处理程序所带来的影响
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- MFC单文档/多文档程序各类之间的跳转总结
- MFC 多文档程序分割窗口
- MFC浅析(1) 文档视图结构中,缺省的命令处理