读书人

关于一个写入的有关问题

发布时间: 2012-03-19 22:03:05 作者: rapoo

关于一个写入的问题~
我的目的是把对话框中的数据保存起来,

[code=C/C++][/code]部分代码如下:
#define WM_ADD_POINT (WM_USER + 100)
#define WM_DELETE_POINT (WM_USER + 101)
#define WM_MOUSE_CHANGED (WM_USER + 102)
#define MSG_UPATEDATA (WM_USER + 104)
#pragma once
int m_row;
enum { IDD = IDD_DIALOG1 };
CListCtrlm_Content_ListCtrl;
//CComboBoxm_Combo1;
intm_a;
intm_b;
int in;
int x,y;
CString m_strFileName;
CStringm_strMouseY;
CStringm_strMouseX;



#include "stdafx.h"
#include "TempMap.h"
#include "MyDlg1.h"
#include "MainFrm.h"
#include "TempMapView.h"


// CMyDlg1 对话框

IMPLEMENT_DYNAMIC(CMyDlg1, CDialog)

CMyDlg1::CMyDlg1(CWnd* pParent /*=NULL*/)
: CDialog(CMyDlg1::IDD, pParent)
{
m_a =0;
m_b =0;
in=1;
m_strMouseY = "\0";
m_strMouseX = "\0";
m_strFileName="\0";

}

CMyDlg1::~CMyDlg1()
{
}

void CMyDlg1::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_LIST, m_Content_ListCtrl);

DDX_Text(pDX, IDC_EDIT_WD, m_a);
DDX_Text(pDX, IDC_EDIT_JD, m_b);
DDX_Text(pDX, IDC_EDIT_X, m_strMouseX);
DDX_Text(pDX, IDC_EDIT_Y, m_strMouseY);
}


void CMyDlg1::OnBnClickedButtonAdd()
{
// TODO: 在此添加控件通知处理程序代码


//CPoint point;
CTempMapView tempmap;

//int nIndex=m_Content_ListCtrl.GetItemCount();
int cout=m_Content_ListCtrl.GetItemCount();


CString s1,s2,s3,s4,s5;
//CString str[4]={"-","*","/","+"};
s1.Format("%d",in);
s2.Format("%d",m_a);
s3.Format("%d",m_b);
x=atoi(m_strMouseX);
s4.Format("%d",x);
y=atoi(m_strMouseY);
s5.Format("%d",y);
m_Content_ListCtrl.InsertItem(cout,s1);
//m_Content_ListCtrl.SetItemText(cout,0,s1);
m_Content_ListCtrl.SetItemText(cout,1,s2);
m_Content_ListCtrl.SetItemText(cout,2,s3);
m_Content_ListCtrl.SetItemText(cout,3,s4);
m_Content_ListCtrl.SetItemText(cout,4,s5);
in++;
UpdateData(FALSE);
}

void CMyDlg1::OnBnClickedButtonWrite()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(FALSE);

CFile file;
CFileDialog dlg(false,"txt",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"text file(*.txt)|*.txt",this);
if(dlg.DoModal()!=IDOK)
return;
m_strFileName=dlg.GetPathName();
try{
file.Open(m_strFileName,CFile::modeWrite|CFile::modeCreate);
char str[10]={'\0'};
for(int i=0;i<m_Content_ListCtrl.GetItemCount();i++)
{

m_Content_ListCtrl.GetItemText(i,0,str,sizeof(str));
in=atoi(str);
file.Write(&str,sizeof(str));

m_Content_ListCtrl.GetItemText(i,1,str,sizeof(str));
m_a=atoi(str);
file.Write(&str,sizeof(str));

m_Content_ListCtrl.GetItemText(i,2,str,sizeof(str));
m_b=atoi(str);
file.Write(&str,sizeof(str));

m_Content_ListCtrl.GetItemText(i,3,str,sizeof(str));
x=atoi(str);
file.Write(&str,sizeof(str));

m_Content_ListCtrl.GetItemText(i,4,str,sizeof(str));
y=atoi(str);
file.Write(&str,sizeof(str));

file.Write(_T("\r\n"),2);


}
}
catch(CFileException e)
{
e.ReportError();
}
file.Close();

}

void CMyDlg1::OnBnClickedButtonClear()
{
// TODO: 在此添加控件通知处理程序代码
}



BOOL CMyDlg1::OnInitDialog()
{
CDialog::OnInitDialog();
m_Content_ListCtrl.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);



m_Content_ListCtrl.InsertColumn(0,"序号",LVCFMT_CENTER,50,0);
m_Content_ListCtrl.InsertColumn(1,"纬度",LVCFMT_CENTER,50,0);
m_Content_ListCtrl.InsertColumn(2,"经度",LVCFMT_CENTER,50,0);
m_Content_ListCtrl.InsertColumn(3,"X",LVCFMT_CENTER,50,0);
m_Content_ListCtrl.InsertColumn(4,"Y",LVCFMT_CENTER,50,0);

return TRUE;
}



LRESULT CMyDlg1::OnMouseChanged(WPARAM wParam, LPARAM lParam)
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);

m_strMouseX.Format("%d",x);
m_strMouseY.Format("%d",y);

UpdateData(FALSE);
return true ;
}
而它显示是这样的:
1 0 0 462 159
2 9 0 9 0 9 558 197
3 7 0 7 0 7 300 171
4 1 0 1 0 1 308 31
5 0 0 322 94
6 0 0 285 2 5
7 5 0 5 0 5 292 63
8 0 0 317 160
9 0 0 0 0 0 303 271


请问如何去掉后面的一些数字,例如“‘9’‘7’ ‘1’”


[解决办法]

file.Write(&str,sizeof(str));

的时候,判断str的内容。

[解决办法]

探讨

file.Write(&str,sizeof(str));

的时候,判断str的内容。

读书人网 >VC/MFC

热点推荐