VC++MFC问题,怎样在按下按钮后,已文本形式保存指定编辑框中的内容

保存是可以了,但是路径是默认的,我希望第一次按下按钮时可以选择保存路径,第二次以后自动覆盖... 保存是可以了,但是路径是默认的,我希望第一次按下按钮时可以选择保存路径,第二次以后自动覆盖 展开
 我来答
ppl3232
2010-05-12 · 超过18用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:39.2万
展开全部

如果是对话框中的编辑框的话,可以在资源中找到该对话框的资源,打开后应该有对话框的界面。添加一个该对话框的类,如果有的话就可以跳过这个步骤。方法是在该界面中不是控件的区域上单击右键->添加类,然后你可以根据情况选择你需要的建立的类的名字等等的信息,一般建议不做更改。

    创建好类以后你就能够使用这个对话框中控件的信息以及对该对话框进行代码的修改了。回到刚才对话框的界面中,在你要保存的编辑框中点右键->添加变量;然后在弹出来的对话框中把控件变量复选框点中,类别选成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章有说怎么弄

离离原上花开
推荐于2016-11-29 · TA获得超过6856个赞
知道大有可为答主
回答量:1923
采纳率:0%
帮助的人:719万
展开全部
向文本文件写入内容应该不难,学C++时专门讲过。
#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
来自:求助得到的回答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式