GpsSC.cpp
上传用户:yffx2008
上传日期:2014-10-12
资源大小:12414k
文件大小:18k
源码类别:

交通/航空行业

开发平台:

Visual C++

  1. // GpsSC.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "GpsSC.h"
  5. #include "MainFrm.h"
  6. #include "ChildFrm.h"
  7. #include "GpsSCDoc.h"
  8. #include "GpsSCView.h"
  9. #include "SmscnumbSetDlg.h"
  10. #include "MainWTNumberSetDlg.h"
  11. #include "PassWordDlg.h"
  12. #include "Splash.h"
  13. #include "afxdb.h"
  14. #include "odbcinst.h"
  15. #include "GetHardDriveID.h"
  16. #include "Registry.h"
  17. #include "MyDlg.h"
  18. #include "IniFile.h"
  19. #ifdef _DEBUG
  20. #define new DEBUG_NEW
  21. #undef THIS_FILE
  22. static char THIS_FILE[] = __FILE__;
  23. #endif
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CGpsSCApp
  26. CString str_GetTreeItemText; //全局变量(获取树形控件子项)
  27. extern BOOL GetHardDiskID(char szBuff[128]);
  28. BEGIN_MESSAGE_MAP(CGpsSCApp, CWinApp)
  29. //{{AFX_MSG_MAP(CGpsSCApp)
  30. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  31. ON_COMMAND(ID_SMSCNUMBERSETTING, OnSmscnumbersetting)
  32. ON_UPDATE_COMMAND_UI(ID_SMSCNUMBERSETTING, OnUpdateSmscnumbersetting)
  33. //}}AFX_MSG_MAP
  34. // Standard file based document commands
  35. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  36. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  37. END_MESSAGE_MAP()
  38. /////////////////////////////////////////////////////////////////////////////
  39. // CGpsSCApp construction
  40. CGpsSCApp::CGpsSCApp()
  41. {
  42. // TODO: add construction code here,
  43. // Place all significant initialization in InitInstance
  44. strPassWord     =  "";
  45. password        = FALSE;
  46. str_GetTreeItemText.Empty();
  47. }
  48. /////////////////////////////////////////////////////////////////////////////
  49. // The one and only CGpsSCApp object
  50. CGpsSCApp theApp;
  51. /////////////////////////////////////////////////////////////////////////////
  52. // CGpsSCApp initialization
  53. extern BOOL GetHardDiskID(char szBuff[128]);
  54. BOOL CGpsSCApp::InitInstance()
  55. {
  56. /* //注册用
  57. char szBuff[20]="";
  58. CString strBuff=GetCDiskID();
  59. for(int nIndex=0;nIndex<8;nIndex++)
  60. {
  61. szBuff[nIndex]=strBuff.GetAt(nIndex);
  62. }
  63. szBuff[8]='';
  64. if(RegiesterNow(szBuff)==false)
  65. return false;
  66. */
  67. //////////////////////////////////////////////////////////////////////////////////////////////////
  68. // CG: The following block was added by the Splash Screen component.
  69. //------------------注册DSN------------------------------
  70. CString sPath;
  71. char CurrPath[500];
  72. long FatLen = 0;
  73. long j;
  74. for(j = 0; j < 500; j++) {
  75. CurrPath[j] = 0;
  76. }
  77. //获取工程目录
  78. ::GetCurrentDirectory(500,CurrPath);
  79. sPath = CurrPath;
  80. m_strCurrPath = sPath;
  81. m_strCurrPath += "\Log\";
  82. CString lpszFile = sPath + "\DataBase" + "\CenterDataBase.mdb";
  83.   
  84. if (!IsFileExist(lpszFile))
  85. {
  86. AfxMessageBox("数据库文件路径不对!");
  87. return FALSE;
  88. }
  89. SetFileReadOnly(lpszFile,false);
  90.     char* szDesc;
  91. int mlen;
  92. szDesc=new char[256];
  93. sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s?? ","CenterDataBase",lpszFile,sPath);
  94. mlen = strlen(szDesc);
  95.     for (int i=0; i<mlen; i++)
  96. {
  97.     if (szDesc[i] == '?')
  98.     szDesc[i] = '';
  99. }
  100. CDatabase m_DB;
  101. if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)",(LPCSTR)szDesc))
  102.         AfxMessageBox("SQLConfigDataSource Failed");
  103. try
  104. {
  105.         CString strConnect;
  106.     strConnect.Format("DSN=CenterDataBase;");
  107.     if(!m_DB.OpenEx(strConnect,CDatabase::useCursorLib))
  108. {
  109.             AfxMessageBox("不能连接数据库!");
  110.             return FALSE ;
  111. }
  112. }
  113.    catch(CDBException *pE)
  114.     {
  115.         AfxMessageBox(pE->ReportError());
  116.         pE->Delete();
  117.         return FALSE;
  118.     }
  119. //-------------------------------------------------------
  120.    CString FileName = m_strCurrPath+"log.ini";
  121.    SetFileStatus(FileName,false);
  122.    ReadLog(); //读日志
  123.    
  124. {
  125. CCommandLineInfo cmdInfo;
  126. ParseCommandLine(cmdInfo);
  127. CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);
  128. }
  129.   
  130. if (!AfxSocketInit())
  131. {
  132. AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
  133. return FALSE;
  134. }
  135. AfxEnableControlContainer();
  136. // Standard initialization
  137. // If you are not using these features and wish to reduce the size
  138. //  of your final executable, you should remove from the following
  139. //  the specific initialization routines you do not need.
  140. #ifdef _AFXDLL
  141. Enable3dControls(); // Call this when using MFC in a shared DLL
  142. #else
  143. Enable3dControlsStatic(); // Call this when linking to MFC statically
  144. #endif
  145. // Change the registry key under which our settings are stored.
  146. // TODO: You should modify this string to be something appropriate
  147. // such as the name of your company or organization.
  148. SetRegistryKey(_T("Local AppWizard-Generated Applications"));
  149. LoadStdProfileSettings();  // Load standard INI file options (including MRU)
  150. // Register the application's document templates.  Document templates
  151. //  serve as the connection between documents, frame windows and views.
  152. CMultiDocTemplate* pDocTemplate;
  153. pDocTemplate = new CMultiDocTemplate(
  154. IDR_GPSSCTYPE,
  155. RUNTIME_CLASS(CGpsSCDoc),
  156. RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  157. RUNTIME_CLASS(CGpsSCView));
  158. AddDocTemplate(pDocTemplate);
  159. // create main MDI Frame window
  160. CMainFrame* pMainFrame = new CMainFrame;
  161. if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  162. return FALSE;
  163. m_pMainWnd = pMainFrame;
  164. // Parse command line for standard shell commands, DDE, file open
  165. CCommandLineInfo cmdInfo;
  166. ParseCommandLine(cmdInfo);
  167. // Dispatch commands specified on the command line
  168. if (!ProcessShellCommand(cmdInfo))
  169. return FALSE;
  170. m_bUserType = true;
  171. CPassWordDlg dlg;
  172. if(dlg.DoModal() != IDOK)
  173. return FALSE;
  174. // The main window has been initialized, so show and update it.
  175.     pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
  176.     pMainFrame->UpdateWindow();
  177. return TRUE;
  178. }
  179. //文件是否存在
  180. long CGpsSCApp::IsFileExist(CString FileName)
  181. {
  182. long Flength = 0;
  183. CFile f;
  184. if(f.Open(FileName,CFile::modeRead,NULL)) {
  185. Flength = f.GetLength();
  186. f.Close();
  187. }
  188. return Flength;
  189. }
  190. void CGpsSCApp::SetFileReadOnly(CString FileName,bool ReadOnly)
  191. {
  192. if(!IsFileExist(FileName)) return;
  193. CFileStatus fStatus;
  194. CFile f;
  195. if(!CFile::GetStatus(FileName,fStatus)) {
  196. AfxMessageBox("出错!");
  197. }
  198. if(ReadOnly) {
  199. fStatus.m_attribute = fStatus.m_attribute | 0x01;
  200. }
  201. else {
  202. fStatus.m_attribute = fStatus.m_attribute & 0xfe;
  203. }
  204. CFile::SetStatus(FileName,fStatus);
  205. }
  206. /////////////////////////////////////////////////////////////////////////////
  207. // CAboutDlg dialog used for App About
  208. class CAboutDlg : public CDialog
  209. {
  210. public:
  211. CAboutDlg();
  212. // Dialog Data
  213. //{{AFX_DATA(CAboutDlg)
  214. enum { IDD = IDD_ABOUTBOX };
  215. //}}AFX_DATA
  216. // ClassWizard generated virtual function overrides
  217. //{{AFX_VIRTUAL(CAboutDlg)
  218. protected:
  219. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  220. //}}AFX_VIRTUAL
  221. // Implementation
  222. protected:
  223. //{{AFX_MSG(CAboutDlg)
  224. // No message handlers
  225. //}}AFX_MSG
  226. DECLARE_MESSAGE_MAP()
  227. };
  228. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  229. {
  230. //{{AFX_DATA_INIT(CAboutDlg)
  231. //}}AFX_DATA_INIT
  232. }
  233. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  234. {
  235. CDialog::DoDataExchange(pDX);
  236. //{{AFX_DATA_MAP(CAboutDlg)
  237. //}}AFX_DATA_MAP
  238. }
  239. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  240. //{{AFX_MSG_MAP(CAboutDlg)
  241. // No message handlers
  242. //}}AFX_MSG_MAP
  243. END_MESSAGE_MAP()
  244. // App command to run the dialog
  245. void CGpsSCApp::OnAppAbout()
  246. {
  247. CAboutDlg aboutDlg;
  248. aboutDlg.DoModal();
  249. }
  250. /////////////////////////////////////////////////////////////////////////////
  251. // CGpsSCApp message handlers
  252. //////////////////////////////////////////////////////////////////////////////
  253. //名称:ExitInstance
  254. //功能:退出时清除工作
  255. /////////////////////////////////////////////////////////////////////////////
  256. int CGpsSCApp::ExitInstance()
  257. {
  258. SaveLog(); //保存日志
  259. CString FileName = m_strCurrPath+"log.ini";
  260. SetFileStatus(FileName,true);
  261. return CWinApp::ExitInstance();
  262. }
  263. void CGpsSCApp::OnSmscnumbersetting() 
  264. {
  265. CSmscnumbSetDlg  smnumdlg;
  266. smnumdlg.m_sSMSCNumber = m_sSMNum;
  267. if(smnumdlg.DoModal()==IDOK)
  268. {
  269. m_sSMNum = smnumdlg.m_sSMSCNumber;
  270. }
  271. m_sSMNum = smnumdlg.m_sSMSCNumber;
  272. }
  273. void CGpsSCApp::OnUpdateSmscnumbersetting(CCmdUI* pCmdUI) 
  274. {
  275. // TODO: Add your command update UI handler code here
  276. }
  277. //create the password dialog
  278. BOOL CGpsSCApp::CreatePassWordDlg()
  279. {
  280. CString strpass = GetProjectInDir();
  281. strpass += "sysinit.ini";
  282. CString str1 = GetPassWord(strpass);
  283. CPassWordDlg dlg;
  284. if(dlg.DoModal() == IDOK)
  285. {
  286. if(dlg.m_strPassWord == str1)
  287. {
  288. return TRUE;
  289. }
  290. else
  291. return FALSE;
  292. }
  293. else
  294. return FALSE;
  295. }
  296. //get the password
  297. CString  CGpsSCApp::GetPassWord(const CString strpassderectory)
  298. {
  299. CFile f;
  300. int m_lFileBufLength;
  301. char * m_pFileBuf = NULL;
  302. if(!f.Open(strpassderectory,CFile::modeRead,NULL))
  303. {
  304. AfxMessageBox("open files error!");
  305. return "nihao";
  306. }
  307. f.SeekToBegin();
  308. m_lFileBufLength = f.GetLength();
  309. m_pFileBuf = new char[m_lFileBufLength];
  310. f.SeekToBegin();
  311. f.Read(m_pFileBuf,m_lFileBufLength);
  312. f.Close();
  313. m_pFileBuf[m_lFileBufLength] = '';
  314. int a = strlen(m_pFileBuf);
  315. strPassWord = m_pFileBuf;
  316. //delete m_pFileBuf;
  317. return strPassWord;
  318. }
  319. //get the current directory
  320. CString CGpsSCApp::GetProjectInDir()
  321. {
  322. CString Path;
  323. char Name[MAX_PATH+1];
  324. int Len,i;
  325. TCHAR chr = 0;
  326. GetModuleFileName(NULL,Name,MAX_PATH);
  327. Path = Name;
  328. Len = Path.GetLength();
  329. for(i = Len - 1; i >= 0; i--) {
  330. chr = Path.GetAt(i);
  331. if(chr == '\') break;
  332. }
  333. i++;
  334. Path = Path.Left(i);
  335. return Path;
  336. }
  337. BOOL CGpsSCApp::PreTranslateMessage(MSG* pMsg)
  338. {
  339. // CG: The following lines were added by the Splash Screen component. if (CSplashWnd::PreTranslateAppMessage(pMsg)) return TRUE; return CWinApp::PreTranslateMessage(pMsg);
  340. }
  341. bool CGpsSCApp::RegiesterNow(char szBuff[20])
  342. {
  343. CString strPassWord="",strShowRegID="";
  344. CString strWriteToReg="",strReadFromReg="";
  345. //生成写入注册表的
  346. //前四个
  347. char cArr1[10]="",cArr2[10]="";
  348. for(int i=0;i<4;i++)
  349. {
  350. cArr1[2*i]=(szBuff[i]-'0')/10+'0';
  351. cArr1[2*i+1]=(szBuff[i]-'0')%10+'0';
  352. }
  353. cArr1[8]='';
  354. //后四个
  355. for(i=0;i<4;i++)
  356. {
  357. cArr2[2*i]=(szBuff[i+4]-'0')/10+'0';
  358. cArr2[2*i+1]=(szBuff[i+4]-'0')%10+'0';
  359. }
  360. cArr2[8]='';
  361. strWriteToReg=cArr1;strWriteToReg+="_";strWriteToReg+=cArr2;
  362. // AfxMessageBox("写入注册表的"+strWriteToReg);
  363. //生成显示的注册号
  364. //前四个
  365. unsigned long ulPassWord;
  366. ulPassWord=atoi(cArr1);
  367. if(ulPassWord==0)
  368. ulPassWord=17598134;
  369. ulPassWord^=12345678;
  370. itoa(ulPassWord,cArr1,10);
  371. CString strArr1=cArr1;
  372. strArr1=DealcArrTo8(strArr1);
  373. //后四个
  374. ulPassWord=atoi(cArr2);
  375. if(ulPassWord==0)
  376. ulPassWord=17598134;
  377. ulPassWord^=12345678;
  378. itoa(ulPassWord,cArr2,10);
  379. CString strArr2=cArr2;
  380. strArr2=DealcArrTo8(strArr2);
  381. for(i=0;i<4;i++)
  382. strShowRegID+=strArr1.GetAt(i);
  383. strShowRegID+="_";
  384. for(i=4;i<8;i++)
  385. strShowRegID+=strArr1.GetAt(i);
  386. strShowRegID+="_";
  387. for(i=0;i<4;i++)
  388. strShowRegID+=strArr2.GetAt(i);
  389. strShowRegID+="_";
  390. for(i=4;i<8;i++)
  391. strShowRegID+=strArr2.GetAt(i);
  392. // AfxMessageBox("注册号"+strShowRegID);
  393. //从注册表中拿值
  394. /* CRegistry reg;
  395. CString s;
  396. reg.Open ("Software\Gps");
  397. reg.Read ("reg",&s);
  398. */
  399. CString s;
  400. s=ReadFile();
  401. //判断处理后的硬盘ID与注册表中的值是否相等
  402. if(strWriteToReg!=s)//第一次比较
  403. {
  404. AfxMessageBox("你没有注册!!rn请注册!!");
  405. int nTryNu=0;
  406. DoAgain:
  407. for(;nTryNu<4;)
  408. {
  409. nTryNu++;
  410. CMyDlg dlg;
  411. dlg.m_strDiskID=strShowRegID;//显示出来的
  412. int nResponse = dlg.DoModal();
  413. if (nResponse == IDOK)
  414. {
  415. strPassWord="";
  416. strPassWord=dlg.m_strDealID;
  417. // AfxMessageBox(strPassWord);
  418. }
  419. else if (nResponse == IDCANCEL)
  420. {
  421. return false;
  422. }
  423. if(strPassWord.GetLength()<19)
  424. {
  425. AfxMessageBox("密码长度不够!!rn请输入完整的密码!!");
  426. if(nTryNu>=3)
  427. return false;
  428. goto DoAgain;
  429. }
  430. //在内部得到的密码
  431. CString strPassWordInGps="";
  432. for(int i=0;i<4;i++)
  433. strPassWordInGps+=((strShowRegID.GetAt(i)-'0')^(strShowRegID.GetAt((i+1)%4)-'0'))%10+'0';
  434. strPassWordInGps+='_';
  435. for(i=0;i<4;i++)
  436. strPassWordInGps+=((strShowRegID.GetAt(i+5)-'0')^(strShowRegID.GetAt((i+1)%4+5)-'0'))%10+'0';
  437. strPassWordInGps+='_';
  438. for(i=0;i<4;i++)
  439. strPassWordInGps+=((strShowRegID.GetAt(i+5+5)-'0')^(strShowRegID.GetAt((i+1)%4+5+5)-'0'))%10+'0';
  440. strPassWordInGps+='_';
  441. for(i=0;i<3;i++)
  442. strPassWordInGps+=((strShowRegID.GetAt(i+5+5+5)-'0')^(strShowRegID.GetAt((i+1)%4+5+5+5)-'0'))%10+'0';
  443. strPassWordInGps+=((strShowRegID.GetAt(18)-'0')^5)%10+'0';
  444. if(strPassWord.Left(19)!=strPassWordInGps.Left(19))//第二次比较
  445. {
  446. if(nTryNu<3)
  447. AfxMessageBox("输入有错!请再输入!");
  448. if(nTryNu>=3)
  449. {
  450. AfxMessageBox("你己输入三次有误!");
  451. return false;
  452. }
  453. }
  454. else
  455. {
  456. /* reg.Open ("Software");
  457. reg.CreateKey ("Gps");
  458. reg.Write ("reg",strWriteToReg);
  459. reg.Read ("reg",&strReadFromReg);
  460. */
  461. WriteFile(strWriteToReg);
  462. strReadFromReg=ReadFile();
  463. if(strWriteToReg==strReadFromReg)
  464. AfxMessageBox("你己成功注册!!rn感谢你使用此软件!!");
  465. break;
  466. }
  467. }
  468. }
  469. return true;
  470. }
  471. CString CGpsSCApp::DealcArrTo8(CString strArr4) 
  472. {
  473. int nLength=strArr4.GetLength();
  474. switch(nLength)
  475. {
  476. case 0:strArr4="00000000";break;
  477. case 1:strArr4="0000000"+strArr4;break;
  478. case 2:strArr4="000000"+strArr4;break;
  479. case 3:strArr4="00000"+strArr4;break;
  480. case 4:strArr4="0000"+strArr4;break;
  481. case 5:strArr4="000"+strArr4;break;
  482. case 6:strArr4="00"+strArr4;break;
  483. case 7:strArr4="0"+strArr4;break;
  484. }
  485. return strArr4;
  486. }
  487. //////////////////////////////////////////////////////////////////////////////////////////////
  488. CString CGpsSCApp::GetCDiskID() 
  489. {
  490. //获得驱动器序列号
  491. LPCTSTR lpRootPathName = "c:\";
  492. LPTSTR lpVolumeNameBuffer=new char[12];
  493. DWORD nVolumeNameSize=12;
  494. DWORD VolumeSerialNumber;
  495. DWORD MaximumComponentLength;
  496. DWORD FileSystemFlags;
  497. LPTSTR lpFileSystemNameBuffer=new char[10];
  498. DWORD nFileSystemNameSize=10;
  499. GetVolumeInformation(lpRootPathName,
  500. lpVolumeNameBuffer, nVolumeNameSize,
  501. &VolumeSerialNumber, 
  502. &MaximumComponentLength,
  503. &FileSystemFlags,
  504. lpFileSystemNameBuffer, nFileSystemNameSize);
  505. //显示驱动器序列号
  506. CString str;
  507. str.Format("%x",VolumeSerialNumber);
  508. // AfxMessageBox(str);
  509. return str;
  510. }
  511. CString CGpsSCApp::GetMyPath()
  512. {
  513. CString strPath;
  514. GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
  515. strPath.ReleaseBuffer();
  516. return strPath;
  517. }
  518. void CGpsSCApp::WriteFile(CString Info)
  519. {
  520. CFile f;
  521. CString strSaveFilePath="";
  522. strSaveFilePath= GetMyPath();
  523. strSaveFilePath=strSaveFilePath.Left(strSaveFilePath.GetLength()-4);
  524. strSaveFilePath += ".txt";
  525. if(f.Open(strSaveFilePath,CFile::modeCreate | CFile::modeNoTruncate  | CFile::modeReadWrite,NULL))
  526. {
  527. f.SeekToBegin( );
  528. f.Write(Info,Info.GetLength());
  529. }
  530. f.Close();
  531. }
  532. CString CGpsSCApp::ReadFile()
  533. {
  534. CFile f;
  535. char        m_cpFileBuf[30];
  536. int         nFileLength;
  537. CString strSaveFilePath="",strDataGet="";
  538. strSaveFilePath= GetMyPath();
  539. strSaveFilePath=strSaveFilePath.Left(strSaveFilePath.GetLength()-4);
  540. strSaveFilePath += ".txt";
  541. if(!f.Open(strSaveFilePath,CFile::modeRead,NULL)) {
  542. // AfxMessageBox("打开文件出错!");
  543. return "##";
  544. }
  545. f.SeekToBegin();
  546. nFileLength = f.GetLength();
  547. // nFileLength=9;
  548. f.SeekToBegin();
  549. f.Read(m_cpFileBuf,nFileLength);
  550. f.Close();
  551. m_cpFileBuf[nFileLength]='';
  552. strDataGet=m_cpFileBuf;
  553. return strDataGet;
  554. }
  555. void CGpsSCApp::SaveLog()
  556. {
  557. CIniFile IniFile;
  558. IniFile.SetName("Log");
  559. IniFile.SetPath(m_strCurrPath);
  560. BOOL bExist=IniFile.OpenIniFileForWrite();
  561. if(bExist)
  562. {
  563. IniFile.WriteSection("LoginUser");
  564. IniFile.WriteItemString("UserData",m_strLoginUser);
  565. IniFile.WriteString("n");
  566. IniFile.WriteSection("SMSCNumber");
  567. IniFile.WriteItemString("SMSCData",m_sSMNum);
  568. IniFile.WriteString("n");
  569. IniFile.WriteSection("Port");
  570. IniFile.WriteItemString("PortData",m_strPort);
  571. IniFile.WriteString("n");
  572. IniFile.WriteSection("DataBits");
  573. IniFile.WriteItemString("DataBistsData",m_strDataBits);
  574. IniFile.WriteString("n");
  575. IniFile.WriteSection("Parity");
  576. IniFile.WriteItemInt("ParityData",m_nParity);
  577. IniFile.WriteString("n");
  578. IniFile.WriteSection("StopBit");
  579. IniFile.WriteItemInt("StopBitData",m_nStopBit);
  580. IniFile.WriteString("n");
  581. IniFile.WriteSection("Baud");
  582. IniFile.WriteItemString("BaudData",m_strBaud);
  583. IniFile.CloseIniFile();
  584. }
  585. }
  586. void CGpsSCApp::ReadLog()
  587. {
  588. CIniFile IniFile;
  589. IniFile.SetName("Log");
  590. IniFile.SetPath(m_strCurrPath);
  591. BOOL bExist=IniFile.OpenIniFileForRead();
  592. if(bExist)
  593. {
  594. if(!IniFile.GetItemString("LoginUser","UserData",m_strLoginUser))
  595. m_strLoginUser = "管理员";
  596. if(!IniFile.GetItemString("SMSCNumber","SMSCData",m_sSMNum))
  597. m_sSMNum = "13800757500";
  598. if(!IniFile.GetItemString("Port","PortData",m_strPort))
  599. m_strPort = "COM1";
  600. if(!IniFile.GetItemString("DataBits","DataBistsData",m_strDataBits))
  601. m_strDataBits = "8";
  602. if(!IniFile.GetItemInt("Parity","ParityData",m_nParity))
  603. m_nParity = 0;
  604. if(!IniFile.GetItemInt("StopBit","StopBitData",m_nStopBit))
  605. m_nStopBit = 1;
  606. if(!IniFile.GetItemString("Baud","BaudData",m_strBaud))
  607. m_strBaud ="9600";
  608. IniFile.CloseIniFile();
  609. }
  610. else
  611. {
  612. m_strLoginUser = "管理员";
  613. m_sSMNum = "13800757500";
  614. m_strPort = "COM1";
  615. m_strDataBits = "8";
  616. m_nParity = 0;
  617. m_nStopBit = 0;
  618. m_strBaud = "9600";
  619. }
  620. }
  621. void CGpsSCApp::SetFileStatus(CString FileName,bool ReadOnly)
  622. {
  623. if(!IsFileExist(FileName)) return;
  624. CFileStatus fStatus;
  625. CFile f;
  626. if(!CFile::GetStatus(FileName,fStatus)) {
  627. AfxMessageBox("出错!");
  628. }
  629. if(ReadOnly) {
  630. fStatus.m_attribute = fStatus.m_attribute | 0x01;
  631. }
  632. else {
  633. fStatus.m_attribute = fStatus.m_attribute & 0xfe;
  634. }
  635. CFile::SetStatus(FileName,fStatus);
  636. }