SHP2VCTDlg.cpp
上传用户:bjslfz
上传日期:2022-07-25
资源大小:4430k
文件大小:8k
源码类别:

文件操作

开发平台:

C/C++

  1. // SHP2VCTDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "SHP2VCT.h"
  5. #include "SHP2VCTDlg.h"
  6. #include <stdio.h> 
  7. #include "Transfer.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CAboutDlg dialog used for App About
  15. class CAboutDlg : public CDialog
  16. {
  17. public:
  18. CAboutDlg();
  19. // Dialog Data
  20. //{{AFX_DATA(CAboutDlg)
  21. enum { IDD = IDD_ABOUTBOX };
  22. //}}AFX_DATA
  23. // ClassWizard generated virtual function overrides
  24. //{{AFX_VIRTUAL(CAboutDlg)
  25. protected:
  26. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  27. //}}AFX_VIRTUAL
  28. // Implementation
  29. protected:
  30. //{{AFX_MSG(CAboutDlg)
  31. //}}AFX_MSG
  32. DECLARE_MESSAGE_MAP()
  33. };
  34. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  35. {
  36. //{{AFX_DATA_INIT(CAboutDlg)
  37. //}}AFX_DATA_INIT
  38. }
  39. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  40. {
  41. CDialog::DoDataExchange(pDX);
  42. //{{AFX_DATA_MAP(CAboutDlg)
  43. //}}AFX_DATA_MAP
  44. }
  45. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  46. //{{AFX_MSG_MAP(CAboutDlg)
  47. // No message handlers
  48. //}}AFX_MSG_MAP
  49. END_MESSAGE_MAP()
  50. /////////////////////////////////////////////////////////////////////////////
  51. // CSHP2VCTDlg dialog
  52. CSHP2VCTDlg::CSHP2VCTDlg(CWnd* pParent /*=NULL*/)
  53. : CDialog(CSHP2VCTDlg::IDD, pParent)
  54. {
  55. //{{AFX_DATA_INIT(CSHP2VCTDlg)
  56. m_OutputData = _T("");
  57. m_InputData = _T("");
  58. //}}AFX_DATA_INIT
  59. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  60. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  61. }
  62. void CSHP2VCTDlg::DoDataExchange(CDataExchange* pDX)
  63. {
  64. CDialog::DoDataExchange(pDX);
  65. //{{AFX_DATA_MAP(CSHP2VCTDlg)
  66. DDX_Control(pDX, IDC_COMBO_SOURCE, m_ComboSource);
  67. DDX_Control(pDX, IDC_COMBO_TARGET, m_ComboTarget);
  68. DDX_Text(pDX, IDC_EDIT_TARGET, m_OutputData);
  69. DDX_Text(pDX, IDC_EDIT_SOURCE, m_InputData);
  70. //}}AFX_DATA_MAP
  71. }
  72. BEGIN_MESSAGE_MAP(CSHP2VCTDlg, CDialog)
  73. //{{AFX_MSG_MAP(CSHP2VCTDlg)
  74. ON_WM_SYSCOMMAND()
  75. ON_WM_PAINT()
  76. ON_WM_QUERYDRAGICON()
  77. ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)
  78. ON_BN_CLICKED(IDC_BUTTON_INPUT, OnButtonInput)
  79. ON_BN_CLICKED(IDC_BUTTON_OUTPUT, OnButtonOutput)
  80. ON_BN_CLICKED(IDC_BUTTON_THRANSFER, OnButtonThransfer)
  81. ON_BN_CLICKED(IDC_ABOUT, OnAbout)
  82. //}}AFX_MSG_MAP
  83. END_MESSAGE_MAP()
  84. /////////////////////////////////////////////////////////////////////////////
  85. // CSHP2VCTDlg message handlers
  86. BOOL CSHP2VCTDlg::OnInitDialog()
  87. {
  88. CDialog::OnInitDialog();
  89. // Add "About..." menu item to system menu.
  90. // IDM_ABOUTBOX must be in the system command range.
  91. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  92. ASSERT(IDM_ABOUTBOX < 0xF000);
  93. //HICON hlcon = AfxGetApp()->LoadIcon(IDB_BITMAP_OPEN); //加载按钮图标
  94. //GetDlgItem(IDC_BUTTON_THRANSFER)->SetIcon(hlcon,TRUE);
  95. CMenu* pSysMenu = GetSystemMenu(FALSE);
  96. if (pSysMenu != NULL)
  97. {
  98. CString strAboutMenu;
  99. strAboutMenu.LoadString(IDS_ABOUTBOX);
  100. if (!strAboutMenu.IsEmpty())
  101. {
  102. pSysMenu->AppendMenu(MF_SEPARATOR);
  103. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  104. }
  105. }
  106. // Set the icon for this dialog.  The framework does this automatically
  107. //  when the application's main window is not a dialog
  108. // TODO: Add extra initialization here
  109. //初始化数据源组合框中的数据
  110. m_Source=m_ComboSource.AddString("所有文件(*.*)");
  111. m_ComboSource.AddString("地球数据标准格式 (*.vct)");
  112. // m_ComboSource.AddString("ESRI Shape 格式(*.shp)");
  113. m_ComboSource.SelectString(0,"ESRI Shape 格式(*.shp)");
  114. m_ComboSource.SetCurSel(m_Source);
  115. //初始化目标数据组合框中的数据
  116. m_Target=m_ComboTarget.AddString("所有文件(*.*)");
  117. m_ComboTarget.AddString("MapInfo 格式 (*.mif)");
  118. //m_ComboTarget.AddString("ESRI Shape 格式(*.shp)");
  119. m_ComboTarget.SelectString(0,"地球数据标准格式 (*.vct)");
  120. m_ComboTarget.SetCurSel(m_Target);
  121. return TRUE;  // return TRUE  unless you set the focus to a control
  122. }
  123. void CSHP2VCTDlg::OnSysCommand(UINT nID, LPARAM lParam)
  124. {
  125. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  126. {
  127. CAboutDlg dlgAbout;
  128. dlgAbout.DoModal();
  129. }
  130. else
  131. {
  132. CDialog::OnSysCommand(nID, lParam);
  133. }
  134. }
  135. // If you add a minimize button to your dialog, you will need the code below
  136. //  to draw the icon.  For MFC applications using the document/view model,
  137. //  this is automatically done for you by the framework.
  138. void CSHP2VCTDlg::OnPaint() 
  139. {
  140. if (IsIconic())
  141. {
  142. CPaintDC dc(this); // device context for painting
  143. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  144. // Center icon in client rectangle
  145. int cxIcon = GetSystemMetrics(SM_CXICON);
  146. int cyIcon = GetSystemMetrics(SM_CYICON);
  147. CRect rect;
  148. GetClientRect(&rect);
  149. int x = (rect.Width() - cxIcon + 1) / 2;
  150. int y = (rect.Height() - cyIcon + 1) / 2;
  151. // Draw the icon
  152. dc.DrawIcon(x, y, m_hIcon);
  153. }
  154. else
  155. {
  156. CDialog::OnPaint();
  157. }
  158. }
  159. // The system calls this to obtain the cursor to display while the user drags
  160. //  the minimized window.
  161. HCURSOR CSHP2VCTDlg::OnQueryDragIcon()
  162. {
  163. return (HCURSOR) m_hIcon;
  164. }
  165. void CSHP2VCTDlg::OnButtonCancel() 
  166. {
  167. // TODO: Add your control notification handler code here
  168. OnCancel();
  169. }
  170. /************************************************************************/
  171. /* modify by xiejing 2008-5-6-5                                         */
  172. /************************************************************************/
  173. void CSHP2VCTDlg::OnButtonInput() 
  174. {
  175. // TODO: Add your control notification handler code here
  176. CString filter; //定义文件过滤器字符串
  177. m_Source=m_ComboSource.GetCurSel(); //获取当前选中组合框的索引值
  178. m_ComboSource.GetLBText(m_Source,filter); //获取指定索引值的字符串,放入filter中
  179. CString link; //定义辅助字符串变量link
  180. link=filter.Right(6); //取出filter中后六位字符赋给link,即为“*.vct)”
  181. link=link.Left(5); //取出link中的前五位字符,即为“*.vct”
  182. filter+='|'; //在filter后面添加字符'|'
  183. link+="||"; //在link后面添加字符串“||”
  184. filter+=link; //将filter与link链接为一个字符串,这样字符串filter就是一个文件过滤器”地球数据标准格式 (*.vct)|*.vct||“的格式
  185. CFileDialog opendlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter);  //定义打开对话框
  186. if(opendlg.DoModal()==IDOK)
  187. {
  188. CString str;
  189. str=opendlg.GetPathName();   //获取打开对话框当前定位文件的路径并赋给str
  190. m_InputData=str; //将路径显示在文本框中
  191. csSourseFileName = m_InputData; /*将源文件名保存在变量csSourseFileName中*/
  192. UpdateData(FALSE);     //更新视图
  193. }
  194. }
  195. void CSHP2VCTDlg::OnButtonOutput() 
  196. {
  197. // TODO: Add your control notification handler code here
  198. CString filter; //定义文件过滤器字符串
  199. m_Target=m_ComboTarget.GetCurSel(); //获取当前选中组合框的索引值
  200. m_ComboTarget.GetLBText(m_Target,filter); //获取指定索引值的字符串,放入filter中
  201.     
  202. CString link,suffix; //同上
  203. suffix=filter.Right(5);
  204. suffix=suffix.Left(4);
  205. link=filter.Right(6);
  206. link=link.Left(5);
  207. filter+='|';
  208. link+="||";
  209. filter+=link;
  210. CFileDialog savedlg(FALSE,NULL,NULL,OFN_FILEMUSTEXIST| OFN_HIDEREADONLY,filter); //定义另存为对话框
  211. if(savedlg.DoModal()==IDOK)
  212. {
  213. CString str;
  214. str=savedlg.GetPathName();  //获取另存为对话框当前定位文件的路径并赋给str
  215. m_OutputData=str+suffix;  //将路径显示在文本框中
  216. UpdateData(FALSE);
  217. }
  218. }
  219. void CSHP2VCTDlg::OnButtonThransfer() 
  220. {
  221. // TODO: Add your control notification handler code here
  222. if(m_InputData =="")
  223. {
  224. MessageBoxA("请选择输入文件!");
  225. return ;
  226. }
  227.     if(m_OutputData =="")
  228. {
  229. MessageBoxA("请选择输出文件名!");
  230. return;
  231. }
  232. new CTransfer(m_InputData,m_OutputData);
  233. m_InputData = "";
  234. m_OutputData = "";
  235. UpdateData(FALSE);
  236. // OnOK();
  237. }
  238. void CSHP2VCTDlg::OnAbout() 
  239. {
  240. // TODO: Add your control notification handler code here
  241. CAboutDlg dlg;
  242. dlg.DoModal();
  243. }