VC-MFC 在磁盘中读取文件
1 // ReadDlg.cpp : 实现文件 2 // 3 4 #include "stdafx.h" 5 #include "Read.h" 6 #include "ReadDlg.h" 7 #include "afxdialogex.h" 8 //#include "stream.h" 9 #include <fstream> 10 11 #include <string> 12 13 14 using namespace std; 15 16 17 18 #ifdef _DEBUG 19 #define new DEBUG_NEW 20 #endif 21 22 23 // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 24 25 class CAboutDlg : public CDialogEx 26 { 27 public: 28 CAboutDlg(); 29 30 // 对话框数据 31 enum { IDD = IDD_ABOUTBOX }; 32 33 protected: 34 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 35 36 // 实现 37 protected: 38 DECLARE_MESSAGE_MAP() 39 public: 40 41 }; 42 43 CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) 44 { 45 } 46 47 void CAboutDlg::DoDataExchange(CDataExchange* pDX) 48 { 49 CDialogEx::DoDataExchange(pDX); 50 } 51 52 BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) 53 END_MESSAGE_MAP() 54 55 56 // CReadDlg 对话框 57 58 59 60 61 CReadDlg::CReadDlg(CWnd* pParent /*=NULL*/) 62 : CDialogEx(CReadDlg::IDD, pParent) 63 64 { 65 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 66 } 67 68 void CReadDlg::DoDataExchange(CDataExchange* pDX) 69 { 70 CDialogEx::DoDataExchange(pDX); 71 DDX_Control(pDX, IDC_LIST_READ, m_List_Read); 72 DDX_Control(pDX, IDC_BUTTON_READ, m_Combo_Read); 73 74 //DDX_Control(pDX, IDC_COMBO_MAREAD, m_Combo_Maread); 75 DDX_Control(pDX, IDC_LIST_NAME, m_List_Name); 76 DDX_Control(pDX, IDC_EDIT_USER, m_Edit_User); 77 DDX_Control(pDX, IDC_EDIT_NAME2, m_Edit_Name2); 78 DDX_Control(pDX, IDC_EDIT_Jiequ, m_Edit_Jiequ); 79 DDX_Control(pDX, IDC_EDIT_Jiequ1, m_Edit_Jiequ1); 80 } 81 82 BEGIN_MESSAGE_MAP(CReadDlg, CDialogEx) 83 ON_WM_SYSCOMMAND() 84 ON_WM_PAINT() 85 ON_WM_QUERYDRAGICON() 86 ON_BN_CLICKED(IDC_BUTTON_READ, &CReadDlg::OnBnClickedButtonRead) 87 88 END_MESSAGE_MAP() 89 90 91 // CReadDlg 消息处理程序 92 93 BOOL CReadDlg::OnInitDialog() 94 { 95 CDialogEx::OnInitDialog(); 96 97 // 将“关于...”菜单项添加到系统菜单中。 98 99 // IDM_ABOUTBOX 必须在系统命令范围内。 100 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); 101 ASSERT(IDM_ABOUTBOX < 0xF000); 102 103 CMenu* pSysMenu = GetSystemMenu(FALSE); 104 if (pSysMenu != NULL) 105 { 106 BOOL bNameValid; 107 CString strAboutMenu; 108 bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); 109 ASSERT(bNameValid); 110 if (!strAboutMenu.IsEmpty()) 111 { 112 pSysMenu->AppendMenu(MF_SEPARATOR); 113 pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 114 } 115 } 116 117 // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 118 // 执行此操作 119 SetIcon(m_hIcon, TRUE); // 设置大图标 120 SetIcon(m_hIcon, FALSE); // 设置小图标 121 122 ShowWindow(SW_MAXIMIZE); 123 124 // TODO: 在此添加额外的初始化代码 125 clear_all(); 126 127 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE 128 } 129 130 void CReadDlg::OnSysCommand(UINT nID, LPARAM lParam) 131 { 132 if ((nID & 0xFFF0) == IDM_ABOUTBOX) 133 { 134 CAboutDlg dlgAbout; 135 dlgAbout.DoModal(); 136 } 137 else 138 { 139 CDialogEx::OnSysCommand(nID, lParam); 140 } 141 } 142 143 // 如果向对话框添加最小化按钮,则需要下面的代码 144 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, 145 // 这将由框架自动完成。 146 147 void CReadDlg::OnPaint() 148 { 149 if (IsIconic()) 150 { 151 CPaintDC dc(this); // 用于绘制的设备上下文 152 153 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); 154 155 // 使图标在工作区矩形中居中 156 int cxIcon = GetSystemMetrics(SM_CXICON); 157 int cyIcon = GetSystemMetrics(SM_CYICON); 158 CRect rect; 159 GetClientRect(&rect); 160 int x = (rect.Width() - cxIcon + 1) / 2; 161 int y = (rect.Height() - cyIcon + 1) / 2; 162 163 // 绘制图标 164 dc.DrawIcon(x, y, m_hIcon); 165 } 166 else 167 { 168 CDialogEx::OnPaint(); 169 } 170 } 171 172 //当用户拖动最小化窗口时系统调用此函数取得光标 173 //显示。 174 HCURSOR CReadDlg::OnQueryDragIcon() 175 { 176 return static_cast<HCURSOR>(m_hIcon); 177 178 179 } 180 181 //屏蔽回车 182 BOOL CReadDlg::PreTranslateMessage(MSG* pMsg) 183 { 184 // TODO: 在此添加专用代码和/或调用基类 185 186 // TODO: Add your specialized code here and/or call the base class 187 188 if(pMsg->message == WM_KEYDOWN) 189 { 190 switch(pMsg->wParam) 191 { 192 case VK_RETURN: // 屏蔽回车 193 { 194 195 196 // //显示时间 197 //CTime t = CTime::GetCurrentTime(); 198 //int y=t.GetYear(); 199 //int m=t.GetMonth(); 200 //int d=t.GetDay(); 201 //int hh=t.GetHour(); 202 //int mm=t.GetMinute(); 203 //int ss=t.GetSecond(); 204 205 //year_str.Format("%d",y); 206 207 //if(m<10) 208 //{ 209 // month_str.Format("0%d",m); 210 //} 211 //else 212 //{ 213 // month_str.Format("%d",m); 214 //} 215 //if(d<10) 216 //{ 217 // day_str.Format("0%d",d); 218 //} 219 //else 220 //{ 221 // day_str.Format("%d",d); 222 //} 223 //if(hh<10) 224 //{ 225 // hour_str.Format("0%d",hh); 226 //} 227 //else 228 //{ 229 // hour_str.Format("%d",hh); 230 //} 231 //if(mm<10) 232 //{ 233 // minute_str.Format("0%d",mm); 234 //} 235 //else 236 //{ 237 // minute_str.Format("%d",mm); 238 //} 239 //if(ss<10) 240 //{ 241 // second_str.Format("0%d",ss); 242 //} 243 //else 244 //{ 245 // second_str.Format("%d",ss); 246 //} 247 248 //m_Combo_Year.SetWindowTextA(year_str); 249 //m_Combo_Month.SetWindowTextA(month_str); 250 //m_Combo_Day.SetWindowTextA(day_str); 251 //m_Combo_Hour.SetWindowTextA(hour_str); 252 //m_Combo_Minute.SetWindowTextA(minute_str); 253 //m_Combo_Second.SetWindowTextA(second_str); 254 255 256 257 258 259 } 260 return true; 261 } 262 } 263 264 return CDialogEx::PreTranslateMessage(pMsg); 265 266 267 268 } 269 //初始化数据 270 void CReadDlg::clear_all() 271 { 272 273 //((CComboBox*)GetDlgItem(IDC_COMBO_MAREAD))->GetWindowText(mac_no_str); 274 //表格数据(1) 275 m_List_Name.ModifyStyle( 0L, LVS_SHOWSELALWAYS ); 276 m_List_Name.SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES );//item前生成checkbox控件 277 278 CRect linshi_rect; 279 int linshi_nWidth; 280 281 m_List_Name.GetClientRect(linshi_rect); 282 linshi_nWidth = linshi_rect.Width(); 283 m_List_Name.InsertColumn(1,"文件名称",LVCFMT_CENTER,linshi_nWidth*2/2,0); 284 285 286 //表格数据(2) 287 m_List_Read.ModifyStyle( 0L, LVS_SHOWSELALWAYS ); 288 m_List_Read.SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES );//item前生成checkbox控件 289 290 291 292 /*CRect linshi_rect; 293 int linshi_nWidth;*/ 294 295 //m_List_Read.GetClientRect(linshi_rect); 296 //linshi_nWidth = linshi_rect.Width(); 297 //m_List_Read.InsertColumn(1,"Id",LVCFMT_CENTER,linshi_nWidth*2/16,0); 298 //m_List_Read.InsertColumn(2,"名称",LVCFMT_CENTER,linshi_nWidth*2/16,0); 299 //m_List_Read.InsertColumn(3,"测量值",LVCFMT_CENTER,linshi_nWidth*2/16,0); 300 //m_List_Read.InsertColumn(4,"标准值",LVCFMT_CENTER,linshi_nWidth*2/16,0); 301 //m_List_Read.InsertColumn(5,"上公差",LVCFMT_CENTER,linshi_nWidth*2/16,0); 302 //m_List_Read.InsertColumn(6,"下公差",LVCFMT_CENTER,linshi_nWidth*2/16,0); 303 //m_List_Read.InsertColumn(7,"误差",LVCFMT_CENTER,linshi_nWidth*2/16,0); 304 //m_List_Read.InsertColumn(8,"结果",LVCFMT_CENTER,linshi_nWidth*2/16,0); 305 306 307 308 309 m_List_Read.InsertColumn(1,"名称",LVCFMT_CENTER,linshi_nWidth*2/14,0); 310 m_List_Read.InsertColumn(2,"测量值",LVCFMT_CENTER,linshi_nWidth*2/14,0); 311 m_List_Read.InsertColumn(3,"标准值",LVCFMT_CENTER,linshi_nWidth*2/14,0); 312 m_List_Read.InsertColumn(4,"上公差",LVCFMT_CENTER,linshi_nWidth*2/14,0); 313 m_List_Read.InsertColumn(5,"下公差",LVCFMT_CENTER,linshi_nWidth*2/14,0); 314 m_List_Read.InsertColumn(6,"误差",LVCFMT_CENTER,linshi_nWidth*2/14,0); 315 m_List_Read.InsertColumn(7,"结果",LVCFMT_CENTER,linshi_nWidth*2/14,0); 316 317 318 319 } 320 321 //读取数据按钮 322 void CReadDlg::OnBnClickedButtonRead() 323 { 324 // TODO: 在此添加控件通知处理程序代码 325 326 327 load_readname(); 328 329 load_read(); 330 331 332 333 } 334 335 //读取文件名 336 bool CReadDlg::load_readname(void) 337 { 338 //获得目录中指定文件名的方法:(第一种) 339 340 m_List_Name.DeleteAllItems(); //清空标签打印格式列表数据 341 342 CFileFind finder; 343 CString strWildcard; 344 CString str; 345 strWildcard = "D:\\Studay_work\\test*.txt "; 346 BOOL bWorking = finder.FindFile(strWildcard); 347 int j=0; 348 while(bWorking!=0) 349 { 350 bWorking = finder.FindNextFile(); 351 if(bWorking!=0) 352 { 353 str= finder.GetFileName(); 354 m_List_Name.InsertItem(j,str); 355 356 357 358 j++; 359 } 360 else 361 { 362 str= finder.GetFileName(); 363 m_List_Name.InsertItem(j,str); 364 m_Edit_Name2.SetWindowTextA(str); 365 366 367 j++; 368 } 369 } 370 finder.Close(); 371 372 373 return true; 374 } 375 376 377 //第二种 获取文件数据的方法 378 bool CReadDlg::load_read(void) 379 { 380 bool file_found_flag=false; 381 CFileFind finder; 382 CString strWildcard; 383 strWildcard = "D:\\Studay_work\\test.txt "; 384 BOOL bWorking = finder.FindFile(strWildcard); 385 if(bWorking!=0) 386 { 387 bWorking = finder.FindNextFile(); 388 file_found_flag = true; 389 } 390 finder.Close(); 391 392 if(file_found_flag) 393 { 394 file_found_flag = false; 395 396 CString fileName="D:\\Studay_work\\test.txt "; 397 CStdioFile file; 398 399 file.Open(fileName,CFile::modeRead,0); 400 401 CString read_str; 402 403 404 405 //for(i=0;i<8;i++) 406 407 408 while(file.ReadString(read_str)) 409 { 410 411 412 //ifstream in("D:\\Studay_work\\test.txt "); 413 // string line; 414 415 // if(in) // 有该文件 416 // { 417 // while (getline (in, line)) // line中不包括每行的换行符 418 // { 419 // cout << line << endl; 420 421 // } 422 // } 423 // else // 没有该文件 424 // { 425 // cout <<"no such file" << endl; 426 // } 427 428 429 //m_List_Read.DeleteAllItems(); 430 //CString str; 431 432 //int Row=m_List_Read.GetSelectionMark(); 433 434 435 436 437 438 unsigned int i=0; 439 CString mac_no_str1; //取第一值 名称i 440 unsigned int pos_int; 441 442 443 pos_int=read_str.Find(";"); 444 mac_no_str1=read_str.Left(pos_int); 445 m_Edit_Jiequ.SetWindowTextA(mac_no_str1); 446 m_List_Read.InsertItem(i,mac_no_str1); 447 AfxMessageBox(mac_no_str1); 448 449 450 451 //取第二值 测量值 452 read_str=read_str.Right(read_str.GetLength()-1-pos_int); 453 pos_int=read_str.Find(";"); 454 mac_no_str1=read_str.Left(pos_int); 455 m_Edit_Jiequ1.SetWindowTextA(mac_no_str1); 456 m_List_Read.SetItemText(i,1,mac_no_str1); 457 AfxMessageBox(mac_no_str1); 458 459 460 //取第三值 标准值 461 read_str=read_str.Right(read_str.GetLength()-1-pos_int); 462 pos_int=read_str.Find(";"); 463 mac_no_str1=read_str.Left(pos_int); 464 m_List_Read.SetItemText(i,2,mac_no_str1); 465 AfxMessageBox(mac_no_str1); 466 467 468 //第四值 上公差 469 470 read_str=read_str.Right(read_str.GetLength()-1-pos_int); 471 pos_int=read_str.Find(";"); 472 mac_no_str1=read_str.Left(pos_int); 473 m_List_Read.SetItemText(i,3,mac_no_str1); 474 AfxMessageBox(mac_no_str1); 475 476 //第五值 下公差 477 read_str=read_str.Right(read_str.GetLength()-1-pos_int); 478 pos_int=read_str.Find(";"); 479 mac_no_str1=read_str.Left(pos_int); 480 m_List_Read.SetItemText(i,4,mac_no_str1); 481 AfxMessageBox(mac_no_str1); 482 483 //第六值 误差 484 read_str=read_str.Right(read_str.GetLength()-1-pos_int); 485 pos_int=read_str.Find(";"); 486 mac_no_str1=read_str.Left(pos_int); 487 m_List_Read.SetItemText(i,5,mac_no_str1); 488 AfxMessageBox(mac_no_str1); 489 490 //第七值 结果 491 read_str=read_str.Right(read_str.GetLength()-1-pos_int); 492 pos_int=read_str.Find(";"); 493 mac_no_str1=read_str.Left(pos_int); 494 m_List_Read.SetItemText(i,6,mac_no_str1); 495 AfxMessageBox(mac_no_str1); 496 497 498 //取到了第一个数据 499 500 /*CString str1,str3; 501 str3="123456;ABCD1234;7890;1234"; //str3= read_str; 502 503 unsigned int pos_int; 504 pos_int=str3.Find(";"); 505 str1=str3.Left(pos_int); 506 AfxMessageBox(str1); 507 508 str3=str3.Right(str3.GetLength()-1-pos_int); 509 pos_int=str3.Find(";"); 510 str1=str3.Left(pos_int); 511 AfxMessageBox(str1); 512 513 str3=str3.Right(str3.GetLength()-1-pos_int); 514 pos_int=str3.Find(";"); 515 str1=str3.Left(pos_int); 516 AfxMessageBox(str1); */ 517 518 519 520 // AfxMessageBox(mac_no_str); _____ 521 // m_Edit_User.SetWindowTextA(mac_no_str);_____ 522 523 524 //______________________________________________ 525 /*CString str=""; 526 int n = str.ReverseFind(';') ; 527 str = str.Left(str.GetLength()-n-1); 528 m_Edit_Jiequ.SetWindowTextA(str); 529 530 */ 531 532 533 534 ///unsigned int pos_int; 535 /// pos_int=mac_no_str.Find(";"); 536 ///mac_no_str=mac_no_str.Left(pos_int);//:的第一个 537 // str=str.Mid(pos_int); //;后的所有数据 538 // mac_no_str=mac_no_str.Right(pos_int);//;最后面的数据 539 //AfxMessageBox(str); 540 //AfxMessageBox(read_str);//读取所有的数据 541 ///m_Edit_Jiequ.SetWindowTextA(mac_no_str); 542 /// AfxMessageBox(mac_no_str);//第一个数据 543 544 //取到第二个数据 545 ///unsigned int pos_int1 ; 546 ///pos_int1=mac_no_str1.Find(";"); 547 //mac_no_str1=mac_no_str1.Mid(pos_int1); 548 //mac_no_str1 = mac_no_str1.Mid(mac_no_str1.GetLength()-pos_int1-1); 549 ///mac_no_str1 = mac_no_str1.Right(mac_no_str1.GetLength()-1-mac_no_str1.Find(_T(";"))); //没有第二个数据 550 551 ///mac_no_str1 = mac_no_str1.Left(mac_no_str1.GetLength()-27-mac_no_str1.Find(_T(";")));//第一个 第二个数据 552 //mac_no_str1=mac_no_str1.Right(pos_int1); 553 //AfxMessageBox(read_str);//读取所有的数据 554 ///m_Edit_Jiequ1.SetWindowTextA(mac_no_str1); 555 ///AfxMessageBox(mac_no_str1);//第一个数据 556 557 558 559 //取到第三个数据 560 ///unsigned int pos_int2 ; 561 ///pos_int2=mac_no_str2.Find(";"); 562 //mac_no_str1=mac_no_str1.Mid(pos_int1); 563 //mac_no_str1 = mac_no_str1.Mid(mac_no_str1.GetLength()-pos_int1-1); 564 565 ///mac_no_str2 = mac_no_str2.Right(mac_no_str2.GetLength()-5-mac_no_str2.Find(_T(";"))); //没有第二个数据 566 567 ///mac_no_str2 = mac_no_str2.Left(mac_no_str2.GetLength()-22-mac_no_str2.Find(_T(";")));//第一个 第二个数据 568 569 570 //mac_no_str1=mac_no_str1.Right(pos_int1); 571 //AfxMessageBox(read_str);//读取所有的数据 572 ///m_Edit_Jiequ1.SetWindowTextA(mac_no_str2); 573 ///AfxMessageBox(mac_no_str2);//第一个数据 574 575 576 } 577 578 579 file.Close(); 580 } 581 else 582 { 583 584 585 AfxMessageBox("mac_no临时数据文件不存在!"); 586 587 } 588 589 590 591 return true; 592 }
本文来自博客园,作者:Bytezero!,转载请注明原文链接:https://www.cnblogs.com/Bytezero/p/15221782.html