WordSeg.cpp
上传用户:qzyuheng
上传日期:2013-04-28
资源大小:71k
文件大小:6k
源码类别:

词法分析

开发平台:

Visual C++

  1. // WordSeg.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "WordSeg.h"
  5. #include <direct.h> // 为使用 _getcwd()函数, 获取当前工作路径
  6. #include "MainFrm.h"
  7. #include "ChildFrm.h"
  8. #include "WordSegDoc.h"
  9. #include "WordSegView.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. #define FILENAMELENGTH  120
  16. CString Separator;
  17. int MaxWordLength;
  18. long CorpusSize;
  19. float Max2Fee;
  20. float Max3Fee;
  21. long SurNameSize;
  22. long GivenNameSize;
  23. /////////////////////////////////////////////////////////////////////////////
  24. // CWordSegApp
  25. BEGIN_MESSAGE_MAP(CWordSegApp, CWinApp)
  26. //{{AFX_MSG_MAP(CWordSegApp)
  27. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  28. // NOTE - the ClassWizard will add and remove mapping macros here.
  29. //    DO NOT EDIT what you see in these blocks of generated code!
  30. //}}AFX_MSG_MAP
  31. // Standard file based document commands
  32. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  33. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  34. // Standard print setup command
  35. ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
  36. END_MESSAGE_MAP()
  37. /////////////////////////////////////////////////////////////////////////////
  38. // CWordSegApp construction
  39. CWordSegApp::CWordSegApp()
  40. {
  41. // TODO: add construction code here,
  42. // Place all significant initialization in InitInstance
  43. }
  44. /////////////////////////////////////////////////////////////////////////////
  45. // The one and only CWordSegApp object
  46. CWordSegApp theApp;
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CWordSegApp initialization
  49. BOOL CWordSegApp::InitInstance()
  50. {
  51. AfxEnableControlContainer();
  52. // Standard initialization
  53. // If you are not using these features and wish to reduce the size
  54. //  of your final executable, you should remove from the following
  55. //  the specific initialization routines you do not need.
  56. #ifdef _AFXDLL
  57. Enable3dControls(); // Call this when using MFC in a shared DLL
  58. #else
  59. Enable3dControlsStatic(); // Call this when linking to MFC statically
  60. #endif
  61. // Change the registry key under which our settings are stored.
  62. // TODO: You should modify this string to be something appropriate
  63. // such as the name of your company or organization.
  64. // SetRegistryKey(_T("Local AppWizard-Generated Applications"));
  65. // 定义一个字符指针,用于存放当前程序所需要的.ini文件
  66. char * profilename=(char *)malloc(FILENAMELENGTH); 
  67. _getcwd(profilename,FILENAMELENGTH-1); // 获取当前工作路径
  68.  
  69. // 在路径后加反斜杠
  70. if (profilename[strlen(profilename)-1]!='\')
  71. strcat(profilename,"\");
  72. strcat(profilename,"Config.INI"); // 默认配置文件名 config.ini
  73. free((void*)m_pszProfileName);
  74. m_pszProfileName=(const char *)profilename;
  75. LoadStdProfileSettings();  // Load standard INI file options (including MRU)
  76. // 读取ini文件中的具体数据
  77. Separator=GetProfileString("DATA","Separator");
  78. MaxWordLength=atoi(GetProfileString("DATA","MaxWordLength"));
  79. CorpusSize=atol(GetProfileString("DATA","CorpusSize"));
  80. Max2Fee=(float)atof(GetProfileString("DATA","Max2Fee"));
  81. Max3Fee=(float)atof(GetProfileString("DATA","Max3Fee"));
  82. SurNameSize=atol(GetProfileString("DATA","SurNameSize"));
  83. GivenNameSize=atol(GetProfileString("DATA","GivenNameSize"));
  84. // 如果从ini文件中读取数据失败,直接退出程序
  85. if (Separator=="") {
  86. AfxMessageBox("Configuration Error");
  87. return FALSE;
  88. }
  89. if (MaxWordLength==0) {
  90. AfxMessageBox("Configuration Error");
  91. return FALSE;
  92. }
  93. if (CorpusSize==0) {
  94. AfxMessageBox("Configuration Error");
  95. return FALSE;
  96. }
  97. if (Max2Fee==0) {
  98. AfxMessageBox("Configuration Error");
  99. return FALSE;
  100. }
  101. if (Max3Fee==0) {
  102. AfxMessageBox("Configuration Error");
  103. return FALSE;
  104. }
  105. if (SurNameSize==0) {
  106. AfxMessageBox("Configuration Error");
  107. return FALSE;
  108. }
  109. if (GivenNameSize==0) {
  110. AfxMessageBox("Configuration Error");
  111. return FALSE;
  112. }
  113. // Register the application's document templates.  Document templates
  114. //  serve as the connection between documents, frame windows and views.
  115. CMultiDocTemplate* pDocTemplate;
  116. pDocTemplate = new CMultiDocTemplate(
  117. IDR_WORDSETYPE,
  118. RUNTIME_CLASS(CWordSegDoc),
  119. RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  120. RUNTIME_CLASS(CWordSegView));
  121. AddDocTemplate(pDocTemplate);
  122. // create main MDI Frame window
  123. CMainFrame* pMainFrame = new CMainFrame;
  124. if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  125. return FALSE;
  126. m_pMainWnd = pMainFrame;
  127. // Parse command line for standard shell commands, DDE, file open
  128. CCommandLineInfo cmdInfo;
  129. ParseCommandLine(cmdInfo);
  130. cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
  131. // Dispatch commands specified on the command line
  132. if (!ProcessShellCommand(cmdInfo))
  133. return FALSE;
  134. // The main window has been initialized, so show and update it.
  135. pMainFrame->ShowWindow(m_nCmdShow);
  136. pMainFrame->UpdateWindow();
  137. return TRUE;
  138. }
  139. /////////////////////////////////////////////////////////////////////////////
  140. // CAboutDlg dialog used for App About
  141. class CAboutDlg : public CDialog
  142. {
  143. public:
  144. CAboutDlg();
  145. // Dialog Data
  146. //{{AFX_DATA(CAboutDlg)
  147. enum { IDD = IDD_ABOUTBOX };
  148. //}}AFX_DATA
  149. // ClassWizard generated virtual function overrides
  150. //{{AFX_VIRTUAL(CAboutDlg)
  151. protected:
  152. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  153. //}}AFX_VIRTUAL
  154. // Implementation
  155. protected:
  156. //{{AFX_MSG(CAboutDlg)
  157. // No message handlers
  158. //}}AFX_MSG
  159. DECLARE_MESSAGE_MAP()
  160. };
  161. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  162. {
  163. //{{AFX_DATA_INIT(CAboutDlg)
  164. //}}AFX_DATA_INIT
  165. }
  166. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  167. {
  168. CDialog::DoDataExchange(pDX);
  169. //{{AFX_DATA_MAP(CAboutDlg)
  170. //}}AFX_DATA_MAP
  171. }
  172. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  173. //{{AFX_MSG_MAP(CAboutDlg)
  174. // No message handlers
  175. //}}AFX_MSG_MAP
  176. END_MESSAGE_MAP()
  177. // App command to run the dialog
  178. void CWordSegApp::OnAppAbout()
  179. {
  180. CAboutDlg aboutDlg;
  181. aboutDlg.DoModal();
  182. }
  183. /////////////////////////////////////////////////////////////////////////////
  184. // CWordSegApp message handlers