关于一个写入的问题~
我的目的是把对话框中的数据保存起来,
[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的内容。
[解决办法]