MyNewDlg.cpp
上传用户:netltd
上传日期:2013-02-12
资源大小:7234k
文件大小:11k
源码类别:

绘图程序

开发平台:

Visual C++

  1. // MyNewDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "resource.h"  
  5. #include "MyNewDlg.h"
  6. #include "ChooseDirDlg.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CMyNewSheet
  15. IMPLEMENT_DYNAMIC(CMyNewSheet, CPropertySheet)
  16. CMyNewSheet::CMyNewSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
  17. :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
  18. {
  19.  //增加属性页
  20. AddPage(&m_NewFileDlg);
  21. AddPage(&m_NewComponentDlg);
  22. //不显示"应用"按钮
  23. m_psh.dwFlags |= PSH_NOAPPLYNOW; 
  24. }
  25. CMyNewSheet::CMyNewSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
  26. :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
  27. {
  28.  //增加属性页
  29. AddPage(&m_NewFileDlg);
  30. AddPage(&m_NewComponentDlg);
  31. //不显示"应用"按钮
  32. m_psh.dwFlags |= PSH_NOAPPLYNOW; 
  33. }
  34. CMyNewSheet::~CMyNewSheet()
  35. {
  36. }
  37. BEGIN_MESSAGE_MAP(CMyNewSheet, CPropertySheet)
  38. //{{AFX_MSG_MAP(CMyNewSheet)
  39. //}}AFX_MSG_MAP
  40. END_MESSAGE_MAP()
  41. /////////////////////////////////////////////////////////////////////////////
  42. // CMyNewSheet message handlers
  43. /////////////////////////////////////////////////////////////////////////////
  44. /////////////////////////////////////////////////////////////////////////////
  45. // CMyNewFileDlg property page
  46. IMPLEMENT_DYNCREATE(CMyNewFileDlg, CPropertyPage)
  47. CMyNewFileDlg::CMyNewFileDlg() : CPropertyPage(CMyNewFileDlg::IDD)
  48. {
  49. //{{AFX_DATA_INIT(CMyNewFileDlg)
  50. m_Name = _T("");
  51. m_FilePath = _T("");
  52. m_FileName = _T("");
  53. m_Size = -1;
  54. //}}AFX_DATA_INIT
  55. }
  56. CMyNewFileDlg::~CMyNewFileDlg()
  57. {
  58. }
  59. void CMyNewFileDlg::DoDataExchange(CDataExchange* pDX)
  60. {
  61. pApp = (CMiniCADApp*)AfxGetApp();
  62. CPropertyPage::DoDataExchange(pDX);
  63. //{{AFX_DATA_MAP(CMyNewFileDlg)
  64. DDX_Text(pDX, IDC_DOCUMENT_NAME, m_Name);
  65. DDX_Text(pDX, IDC_DOCUMENT_PATH, m_FilePath);
  66. DDX_Text(pDX, IDC_DOCUMENT_FILENAME, m_FileName);
  67. DDX_Radio(pDX, IDC_RADIO0, m_Size);
  68. //}}AFX_DATA_MAP
  69. }
  70. BEGIN_MESSAGE_MAP(CMyNewFileDlg, CPropertyPage)
  71. //{{AFX_MSG_MAP(CMyNewFileDlg)
  72. ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
  73. ON_WM_SHOWWINDOW()
  74. ON_BN_CLICKED(IDC_TEMPLATECHECK, OnTemplatecheck)
  75. ON_EN_CHANGE(IDC_DOCUMENT_PATH, OnChangeDocumentPath)
  76. //}}AFX_MSG_MAP
  77. END_MESSAGE_MAP()
  78. /////////////////////////////////////////////////////////////////////////////
  79. // CMyNewFileDlg message handlers
  80. BOOL CMyNewFileDlg::OnInitDialog() 
  81. {
  82. CPropertyPage::OnInitDialog();
  83. m_Size = A4_SIZE_INDEX;
  84. //显示当前路径
  85. m_FilePath = pApp->CADInfo.FilePath;
  86. UpdateData(FALSE);
  87. return TRUE;  // return TRUE unless you set the focus to a control
  88.               // EXCEPTION: OCX Property Pages should return FALSE
  89. }
  90. void CMyNewFileDlg::OnBrowse() 
  91. {
  92. CChooseDirDlg m_ChooseDirDlg;
  93. m_FilePath = m_ChooseDirDlg.GetDirectory(m_FilePath);
  94. UpdateData(FALSE);
  95. }
  96. void CMyNewFileDlg::OnShowWindow(BOOL bShow, UINT nStatus) 
  97. {
  98. CPropertyPage::OnShowWindow(bShow, nStatus);
  99. if(bShow == TRUE)
  100. pApp->CADInfo.KindofNew = NEW_FILE;
  101. }
  102. void CMyNewFileDlg::OnTemplatecheck() 
  103. {
  104. CButton* button = (CButton*)GetDlgItem(IDC_OPENTEMPLATE);
  105. CButton* check =  (CButton*)GetDlgItem(IDC_TEMPLATECHECK);
  106.     //使“打开”按钮生效或失效 
  107. button->EnableWindow(check->GetCheck());
  108. }
  109. void CMyNewFileDlg::OnChangeDocumentPath() 
  110. {
  111. UpdateData(TRUE);
  112. }
  113. void CMyNewFileDlg::OnCancel() 
  114. {
  115. //取消新建
  116. pApp->CADInfo.KindofNew = NEW_NONE;
  117. CPropertyPage::OnCancel();
  118. }
  119. BOOL CMyNewFileDlg::OnApply() 
  120. {
  121. WIN32_FIND_DATA fd;
  122. if(pApp->CADInfo.KindofNew ==NEW_FILE)
  123. {
  124. //提示输入图纸名
  125. if(m_Name.IsEmpty() == TRUE 
  126. || m_FileName.IsEmpty() == TRUE)
  127. {
  128. MessageBox("请输入图纸名及相应文件名",
  129. "提示", MB_OK | MB_ICONINFORMATION);
  130. return FALSE;
  131. }
  132. if(FindFirstFile(m_FilePath + "\" + m_FileName,
  133. &fd) != INVALID_HANDLE_VALUE )
  134. {
  135. MessageBox("指定目录下已有相同文件名的文件存在",
  136. "错误", MB_OK | MB_ICONERROR);
  137. return FALSE;
  138. }
  139. pApp->CADInfo.FilePath = m_FilePath;
  140.    
  141. //对FileInfo成员赋值
  142. //FileInfo.Name = m_Name;
  143. //FileInfo.FileName = m_FileName; 
  144. //FileInfo.FilePath = m_FilePath; 
  145. }
  146. return CPropertyPage::OnApply();
  147. }
  148. /////////////////////////////////////////////////////////////////////////////
  149. // CMyNewComponentDlg property page
  150. IMPLEMENT_DYNCREATE(CMyNewComponentDlg, CPropertyPage)
  151. CMyNewComponentDlg::CMyNewComponentDlg() : CPropertyPage(CMyNewComponentDlg::IDD)
  152. {
  153. //{{AFX_DATA_INIT(CMyNewComponentDlg)
  154. // NOTE: the ClassWizard will add member initialization here
  155. //}}AFX_DATA_INIT
  156. }
  157. CMyNewComponentDlg::~CMyNewComponentDlg()
  158. {
  159. }
  160. void CMyNewComponentDlg::DoDataExchange(CDataExchange* pDX)
  161. {
  162. CPropertyPage::DoDataExchange(pDX);
  163. //{{AFX_DATA_MAP(CMyNewComponentDlg)
  164. // NOTE: the ClassWizard will add DDX and DDV calls here
  165. //}}AFX_DATA_MAP
  166. }
  167. BEGIN_MESSAGE_MAP(CMyNewComponentDlg, CPropertyPage)
  168. //{{AFX_MSG_MAP(CMyNewComponentDlg)
  169. // NOTE: the ClassWizard will add message map macros here
  170. //}}AFX_MSG_MAP
  171. END_MESSAGE_MAP()
  172. /////////////////////////////////////////////////////////////////////////////
  173. // CMyNewComponentDlg message handlers
  174. /////////////////////////////////////////////////////////////////////////////////
  175. // CMyNewProjectDlg 
  176. CMyNewProjectDlg::CMyNewProjectDlg(CWnd* pParent /*=NULL*/)
  177. : CDialog(CMyNewProjectDlg::IDD, pParent)
  178. {
  179. pApp = (CMiniCADApp*)AfxGetApp();
  180. //{{AFX_DATA_INIT(CMyNewProjectDlg)
  181. m_ProjectName = _T("");
  182. m_ProjectPath = _T("");
  183. m_ProjectFileName = _T("");
  184. //}}AFX_DATA_INIT
  185. }
  186. CMyNewProjectDlg::~CMyNewProjectDlg()
  187. {
  188. }
  189. void CMyNewProjectDlg::DoDataExchange(CDataExchange* pDX)
  190. {
  191. CDialog::DoDataExchange(pDX);
  192. //{{AFX_DATA_MAP(CMyNewProjectDlg)
  193. DDX_Text(pDX, IDC_PROJECT_NAME, m_ProjectName);
  194. DDX_Text(pDX, IDC_PROJECT_PATH, m_ProjectPath);
  195. DDX_Text(pDX, IDC_PROJECT_FILENAME, m_ProjectFileName);
  196. //}}AFX_DATA_MAP
  197. }
  198. BEGIN_MESSAGE_MAP(CMyNewProjectDlg, CDialog)
  199. //{{AFX_MSG_MAP(CMyNewProjectDlg)
  200. ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
  201. ON_EN_CHANGE(IDC_PROJECT_PATH, OnChangeProjectPath)
  202. ON_EN_CHANGE(IDC_PROJECT_NAME, OnChangeProjectName)
  203. ON_EN_CHANGE(IDC_PROJECT_FILENAME, OnChangeProjectFilename)
  204. //}}AFX_MSG_MAP
  205. END_MESSAGE_MAP()
  206. /////////////////////////////////////////////////////////////////////////////
  207. // CMyNewProjectDlg message handlers
  208. BOOL CMyNewProjectDlg::NewProject(CProjectInfo* pInfo)
  209. {
  210. flag = TRUE;
  211. pProjectInfo = pInfo;
  212. DoModal();
  213. return flag;
  214. }
  215. BOOL CMyNewProjectDlg::OnInitDialog() 
  216. {
  217. CDialog::OnInitDialog();
  218. //显示当前路径
  219. m_ProjectPath = pApp->CADInfo.ProjectPath;
  220. UpdateData(FALSE);
  221. return TRUE;  // return TRUE unless you set the focus to a control
  222.               // EXCEPTION: OCX Property Pages should return FALSE
  223. }
  224. void CMyNewProjectDlg::OnOK() 
  225. {
  226. WIN32_FIND_DATA fd;
  227. UpdateData(TRUE);
  228. //提示输入项目名
  229. if(m_ProjectName.IsEmpty() == TRUE 
  230. || m_ProjectFileName.IsEmpty() == TRUE)
  231. {
  232. MessageBox("请输入项目名及相应文件名",
  233. "提示", MB_OK | MB_ICONINFORMATION);
  234. return;
  235. }
  236. if(FindFirstFile(m_ProjectPath + "\" + m_ProjectFileName,
  237. &fd) != INVALID_HANDLE_VALUE )
  238. {
  239. MessageBox("指定目录下已有相同文件名的文件存在",
  240. "错误", MB_OK | MB_ICONERROR);
  241. return;
  242. }
  243. //改变项目的缺省路径
  244.     pApp->CADInfo.ProjectPath = m_ProjectPath;
  245.     
  246. //对MyProjectInfo成员赋值
  247. pProjectInfo->Name = m_ProjectName;
  248. pProjectInfo->FileName = m_ProjectFileName + ".prj";
  249. pProjectInfo->FilePath = m_ProjectPath;
  250. flag = TRUE;
  251. CDialog::OnOK();
  252. }
  253. void CMyNewProjectDlg::OnBrowse() 
  254. {
  255. CChooseDirDlg m_ChooseDirDlg;
  256. m_ProjectPath = m_ChooseDirDlg.GetDirectory(m_ProjectPath);
  257. UpdateData(FALSE);
  258. }
  259. void CMyNewProjectDlg::OnChangeProjectName() 
  260. {
  261.     UpdateData(TRUE);
  262. }
  263. void CMyNewProjectDlg::OnChangeProjectFilename() 
  264. {
  265. UpdateData(TRUE);
  266. }
  267. void CMyNewProjectDlg::OnChangeProjectPath() 
  268. {
  269. UpdateData(TRUE);
  270. }
  271. void CMyNewProjectDlg::OnCancel() 
  272. {
  273. //取消新建
  274. flag = FALSE;
  275. CDialog::OnCancel();
  276. }
  277. /////////////////////////////////////////////////////////////////////////////
  278. // CMyAddFileDlg dialog
  279. CMyAddFileDlg::CMyAddFileDlg(CWnd* pParent /*=NULL*/)
  280. : CDialog(CMyAddFileDlg::IDD, pParent)
  281. {
  282. pApp = (CMiniCADApp*)AfxGetApp();
  283. //{{AFX_DATA_INIT(CMyAddFileDlg)
  284. m_Name = _T("");
  285. m_FileName = _T("");
  286. m_SizeIndex = -1;
  287. m_FilePath = _T("");
  288. //}}AFX_DATA_INIT
  289. }
  290. void CMyAddFileDlg::DoDataExchange(CDataExchange* pDX)
  291. {
  292. CDialog::DoDataExchange(pDX);
  293. //{{AFX_DATA_MAP(CMyAddFileDlg)
  294. DDX_Text(pDX, IDC_NAME, m_Name);
  295. DDX_Text(pDX, IDC_FILENAME, m_FileName);
  296. DDX_Radio(pDX, IDC_RADIO0, m_SizeIndex);
  297. DDX_Text(pDX, IDC_FILEPATH, m_FilePath);
  298. //}}AFX_DATA_MAP
  299. }
  300. BEGIN_MESSAGE_MAP(CMyAddFileDlg, CDialog)
  301. //{{AFX_MSG_MAP(CMyAddFileDlg)
  302. ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
  303. ON_EN_CHANGE(IDC_FILEPATH, OnChangeFilepath)
  304. ON_EN_CHANGE(IDC_NAME, OnChangeName)
  305. ON_WM_SHOWWINDOW()
  306. ON_EN_CHANGE(IDC_FILENAME, OnChangeFilename)
  307. //}}AFX_MSG_MAP
  308. END_MESSAGE_MAP()
  309. /////////////////////////////////////////////////////////////////////////////
  310. BOOL CMyAddFileDlg::AddFile(CFileInfo* pInfo)
  311. {
  312. flag = TRUE;
  313. pFileInfo = pInfo;
  314. DoModal();
  315. return flag;
  316. }
  317. // CMyAddFileDlg message handlers
  318. BOOL CMyAddFileDlg::OnInitDialog() 
  319. {
  320. CDialog::OnInitDialog();
  321. //设置省缺图纸大小
  322. m_SizeIndex = A3_SIZE_INDEX;
  323. //缺省路径和项目路径一样
  324. m_FilePath = pApp->CADInfo.ProjectPath;
  325. UpdateData(FALSE);
  326. return TRUE;  // return TRUE unless you set the focus to a control
  327.               // EXCEPTION: OCX Property Pages should return FALSE
  328. }
  329. void CMyAddFileDlg::OnOK() 
  330. {
  331. WIN32_FIND_DATA fd;
  332. UpdateData(TRUE);
  333. //提示输入图纸名
  334. if(m_Name.IsEmpty() == TRUE 
  335. || m_FileName.IsEmpty() == TRUE)
  336. {
  337. MessageBox("请输入图纸名及相应文件名",
  338. "提示", MB_OK | MB_ICONINFORMATION);
  339. return; 
  340. }
  341. if(FindFirstFile(m_FilePath + "\" + m_FileName,
  342. &fd) != INVALID_HANDLE_VALUE )
  343. {
  344. MessageBox("项目文件所在目录下已有相同文件名的文件存在",
  345. "错误", MB_OK | MB_ICONERROR);
  346. return;
  347. }
  348.     //改变文件的缺省路径
  349. pApp->CADInfo.FilePath = m_FilePath;
  350. pFileInfo->Name = m_Name;
  351.     pFileInfo->FileName = m_FileName + ".xsy";
  352. pFileInfo->FilePath = m_FilePath;
  353. SIZE   size[5] = {1189, 841,
  354.               841, 594,
  355.   594, 420,
  356.   420, 297,
  357.   210, 297};
  358. pFileInfo->size.cx = size[m_SizeIndex].cx;
  359. pFileInfo->size.cy = size[m_SizeIndex].cy;
  360. CDialog::OnOK();
  361. }
  362. void CMyAddFileDlg::OnCancel() 
  363. {
  364. //增加新图纸失败
  365. flag = FALSE;
  366. CDialog::OnCancel();
  367. }
  368. void CMyAddFileDlg::OnBrowse() 
  369. {
  370. CChooseDirDlg m_ChooseDirDlg;
  371. m_FilePath = m_ChooseDirDlg.GetDirectory(m_FilePath);
  372. //重新显示当前路径
  373. UpdateData(FALSE);
  374. }
  375. void CMyAddFileDlg::OnChangeName() 
  376. {
  377. UpdateData(TRUE);
  378. }
  379. void CMyAddFileDlg::OnChangeFilename() 
  380. {
  381. UpdateData(TRUE);
  382. }
  383. void CMyAddFileDlg::OnChangeFilepath() 
  384. {
  385. UpdateData(TRUE);
  386. }