请教基于单文档MFC读取TXT文件画图的问题

你好:我是初学MFC的同学,在学了一段时间后,对于MFC内部工作逻辑的理解很混乱。刚看到一篇你关于这方面问题的回复,不过是基于对话框的吧。我现在建立了基于单文档的MFC工... 你好:
我是初学MFC的同学,在学了一段时间后,对于MFC内部工作逻辑的理解很混乱。刚看到一篇你关于这方面问题的回复,不过是基于对话框的吧。
我现在建立了基于单文档的MFC工程。想在点击按钮控件后,用户能够从电脑里选择文件(TXT),该工程获取文件名。
再读取该未知大小TXT文件内部的数据。文件内数据是一个n*3的矩阵。然后再对数据进行处理,并画图。
不知道从 按钮->选择文件->读取矩阵数据 这一个步骤的标准程序该怎么写呢? (基于单文档形式的)
这个问题真的困扰了我很久。希望能得到解答。谢谢。
现在财富只有25,只能悬赏20了~
展开
 我来答
Love_ZzM_Xi
2012-05-09
知道答主
回答量:12
采纳率:0%
帮助的人:14.7万
展开全部
一、建立MFC单文档,定义View类的成员变量CButton m_button,在***View类中添加OnCreate 或OnInitialUpdate 函数,并在函数中加入
CRect rect_button(40,10,200,60); //控制按钮大小、位置
m_button.Create("hello",WS_CHILD|WS_VISIBLE|WS_BORDER,rect_button,this,IDC_DYNAMICBUTTON);
m_button.ShowWindow(SW_SHOWNORMAL);
这样按钮应该都可以显示出来了。
二、然后添加消息响应函数。头文件中加入afx_msg void OnBtnDown();
BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 之间加入ON_BN_CLICKED(IDC_DYNAMICBUTTON,OnBtnDown) 关联按钮变量; 最后加入定义
void ***View::OnBtnDown() //读物txt文件
{
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"(*.txt)|*.txt||",NULL);
if(dlg.DoModal()==IDOK)
{
CString text_addr;
text_addr=dlg.GetPathName();
CStdioFile file;
file.Open(text_addr,CFile::modeRead);
///////////////////////////
..........这个过程你就读一行画一行就行了
/////////////////////////
file.Close();
}

}
更多追问追答
追问
首先谢谢你这么详细而又清晰的回答,谢谢。
但是还是有几个问题。对于这个n*3的矩阵数据,我之后是要进行一定处理的。例如对每一列进行FFT变换。之后再画出原来每一列数据的正弦波图形及FFT变换后的图形。
所以,问题是打开文件后,上面代码中的数据是怎样存储的呢?而且文件大小是未知的。
再次谢谢,初次在网上提问,便得到这么详细耐心的解答,谢谢。
追答
你的意思是怎么把这个n*3的数据具体保存起来而不是用字符串吗?我不是很理解你的意思,假设
数据是这样:
1 2 3
2 3 4
然后你的意思是怎么把这六个数字保存起来吗?
归悦欣cf
2012-05-09 · TA获得超过1442个赞
知道大有可为答主
回答量:4250
采纳率:60%
帮助的人:1282万
展开全部
按钮这一步我想你应该知道,点击按钮后可以在消息函数里打开一个个打开文件对话框(打开文件对话框通过设置可以使得文件对话框中仅仅显示你需要的数据类型),在打开文件对话框里选择你需要的文件,按确定,文件对话框关闭,之后你可以通过文件对话框的GetPathName函数获取你选择的文件路径及文件名,之后如何打开和读取文件数据就应该很容易了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lgao622
2012-05-09 · 知道合伙人软件行家
lgao622
知道合伙人软件行家
采纳数:1137 获赞数:6548
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。

向TA提问 私信TA
展开全部
void CXXXXXDlg::OnOpen()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle="文件打开对话框";
fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
fileDlg.m_ofn.lpstrDefExt="txt";
if(IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeRead);
strcpy(namepath, fileDlg.GetPathName());//全路径
m_Open+=fileDlg.GetFileName();//文件名//m_Open为编辑框的CString型变量
// MessageBox(namepath);
UpdateData(FALSE);
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式