VC++MFC问题,怎样在按下按钮后,已文本形式保存指定编辑框中的内容
如果是对话框中的编辑框的话,可以在资源中找到该对话框的资源,打开后应该有对话框的界面。添加一个该对话框的类,如果有的话就可以跳过这个步骤。方法是在该界面中不是控件的区域上单击右键->添加类,然后你可以根据情况选择你需要的建立的类的名字等等的信息,一般建议不做更改。
创建好类以后你就能够使用这个对话框中控件的信息以及对该对话框进行代码的修改了。回到刚才对话框的界面中,在你要保存的编辑框中点右键->添加变量;然后在弹出来的对话框中把控件变量复选框点中,类别选成Value,变量类型可以根据自己选。系统会自动创建一个与这个控件相关联的变量。如果你不能用这种方法创建变量的话(可能是由于软件没有识别等等很多复杂原因),那么你也可以自己在之前所创建的类中添加代码。方法是:首先在类的定义中添加一个类成员,然后再这个类的CPP文件中的
void CXYMPMDialog::DoDataExchange(CDataExchange* pDX)
函数中添加以下代码:
DDX_Text(pDX, 控件的ID值, 需要存储信息的变量);
注意这个函数最后一个参数的类型有限制的。
如果有限制字数的需要还可以添加以下代码:
DDV_MaxChars( pDX , 存储信息的变量名 , 限制的长度 );
这个函数应该添加在第一个函数之后。
比如我可以添加如下的代码:
void CMPMDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX); // 原有的,不要删除
// 声明控件变量
DDX_Text( pDX , IDC_EDIT_STRING , m_String );
DDX_Text( pDX , IDC_EDIT_DATA , m_Data );
// 定义控件变量的最大值
DDV_MaxChars( pDX , m_String , 128 );
}
这样你对话框中编辑框的信息就可以存储在一个变量中了,然后在外部创建对话框以后,可以通过这个变量来存放信息。
例如:
CExampleDialog Dialog; // 创建对话框类
if( Dialog.DoModal() == IDOK ) // DoModal作用是显示对话框,IDOK是OK按钮的ID
{
CString ExampleString = Dialog.m_String; // 存储CString类型的信息
double ExampleData = Dialog.m_Data; // 存储double类型的信息
}
这样你在对话框中的m_String和m_Data的信息就存储在了ExampleString和ExampleData中了。
如果你是在View类中创建一个CEdit的话,我就不太清楚了,自己没用过这种方法。但是理论上来说应该可以从CEdit的变量或者函数中将字符拷贝出来,好像是一个叫Copy的函数吧……你可以在MSDN上面查查。
如果还有问题的话可以加我QQ:28842049
备注:我用的编译环境是Visual Studio 2008
备注2:《Visual C++ 2008 入门经典》这是我看的书,里面第17章有说怎么弄
#include<fstream.h>
ofstream ofs("test.txt");
现在关键是如何获取指定编辑框中的内容。
全部代码如下:
CString str;
ofstream ofs("test.txt");
CStatic *pst=(CStatic*)GetDlgItem(IDC_EDIT1);//你的控件ID
pst->GetWindowText(str);
ofs<<str;
//另存为对话框
void COutputDlg::OnButton1()
{
//////////////////////////////////////////////////////////////////////////
CString str;
CFileDialog FileDlg(FALSE,".txt",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT);
FileDlg.m_ofn.lpstrInitialDir="c:\\";
if(FileDlg.DoModal()==IDOK)
{
ofstream ofs(FileDlg.GetPathName());
CStatic*pst=(CStatic*)GetDlgItem(IDC_EDIT4);//你的控件ID
pst->GetWindowText(str);
ofs<<str;
MessageBox("保存成功");
}
}
ps:我的编译器是VC6.0