用MFC写文本文档的编辑字处理程序
来源:互联网 发布:小程序模版源码下载 编辑:程序博客网 时间:2024/05/08 23:13
文本文档的编辑 想做字处理程序
通常我们所用的 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);
}
}
后===
- 用MFC写文本文档的编辑字处理程序
- 文本文档-字处理程序代码
- MFC 写文档的方法
- 如何判断一个已经写好的MFC程序是单文档还是多文档?
- 基于文档的MFC程序
- MFC显示文本文档
- Java学习--(二)使用文本文档写java程序
- 关于微信小程序文档编辑的坑
- MFC编辑框文本的快速读取、修改应用程序图标
- Windows下自动编辑保存的文本文档…
- Windows下自动编辑保存的文本文档…
- linux下编辑的文本文档图标在Windo…
- 如何手动写一个MFC单文档程序框架
- 用PHP写的一个文本处理小程序
- 对文本文档加密的c++程序
- MFC学习--单文档文本框的编辑(二)
- MFC阅读文本程序
- 用MFC写的OPENCV小程序(1)
- 使用PowerDesigner建模
- 看MIT的线性代数
- 使用PowerDesigner建模
- 使用PowerDesigner建模
- 如何在windows成功升级hudson
- 用MFC写文本文档的编辑字处理程序
- 没有别的意思,只为给只熟悉软件的同行开拓下视野。
- 类的继承和封装
- 创业是单干好还是合伙好?
- 自我鉴定
- 这可以算是过度依赖自动化测试的恶果吗?
- Silverlight 4和Flash 10.1/AIR2简单对比和选择
- (转自孟岩的CSDN)理解矩阵
- 人生小事记