最近为了实现一个工程的需要,要利用VC写一个简单的文本输入工具,在网上找了很多参考尝试下来都没有一个达到满意的地步,同时也查找了很多资料,但是还是没能有满意的结果,这当然和自己对VC++这个庞大的工具还不胜熟悉有莫大的关系,因此本文写的也略微笨拙,但对于初学者或这是功能要求不是那么严格的同仁来说,本文介绍的方法未必不是一种选择。
在本文本输入程序中首先需要建立一个单文本应用程序,工程的建立并没有什么特别的地方,就是在最后一步的时候学要选择基础类为CFormView,为了叙述的方便我们将工程命名为:SDItest。当然你也可以将它命名为你喜欢的名称。其他的就不赘述了。建好以后第二步是将一个文本编辑框(Edit)拖入到刚才的Form上,尽量将其大小调整为你所满意的尺寸,然后设置属性需要特别选中的属性包括:风格的:Multline,和Want return。至于水平和垂直滚动,如果你需要的话同样的可以将它们选中,这并不时我们问题的核心,我们也不关心这个,这此工作完成以后,你需给添加进来的文本编辑框创建一个成员变量,在我们例子中将这个变量命名为:m_myText 数据类型 CString;同样的你还需要给CSDItestDoc类创建一个公有的成员变量myKeepText,变量类型同样为CString。在这一切完成以后你需要对一下几个函数进行修改:
CSDItestDoc类:
BOOL CSDItestDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
myKeepText=""; //Add by yourself
return TRUE;
}
void CSDItestDoc::Serialize(CArchive& ar)
{
CString str;
if (ar.IsStoring())
{
// TODO: add storing code here
str=myKeepText;
ar.WriteString( str ); // 将字符串集合类对象中文本保存到硬盘
}
else
{
myKeepText="";
// TODO: add loading code here
while ( ar.ReadString( str ) )
{
myKeepText= myKeepText+str; // 将行文本添加到字符串集合类对象中
myKeepText=myKeepText+"/r/n";
}
}
}
CSDItestView类:
void CSDItestView::OnChangeEdit1()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CFormView::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CSDItestDoc* pDoc = GetDocument(); // 获取与视图相关联的文档指针
UpdateData(TRUE);
pDoc->myKeepText= m_myText;
}
void CSDItestView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
//Add by yourself
CSDItestDoc* pDoc = GetDocument(); // 获取与视图相关联的文档指针
m_myText=pDoc->myKeepText;
UpdateData(false);
}
到此一个简单的文本录入工具就完成了!
需要的朋友可以到:
http://download.csdn.net/source/1474756
下载源码!