PFM.cpp
上传用户:wymy58
上传日期:2007-01-07
资源大小:2086k
文件大小:8k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. // PFM.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "PFM.h"
  5. #include "MainFrm.h"
  6. #include "PackFilesDlg.h"
  7. #include "CopyFilesDlg.h"
  8. #include "SelDrvDlg.h"
  9. #include "DelFileDlg.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. int Compare(const void*  p1, const void*  p2)
  16. {
  17. return  (_stricmp(((FILE_ENTRY*)(p1))->szFileName, ((FILE_ENTRY*)(p2))->szFileName));
  18. }
  19. /////////////////////////////////////////////////////////////////////////////
  20. // CPFMApp
  21. BEGIN_MESSAGE_MAP(CPFMApp, CWinApp)
  22. //{{AFX_MSG_MAP(CPFMApp)
  23. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  24. ON_COMMAND(ID_TAB, OnTab)
  25. ON_COMMAND(ID_RETURN, OnReturn)
  26. ON_COMMAND(ID_CHGDRVLEFT, OnChgdrvleft)
  27. ON_COMMAND(ID_CHGDRVRIGHT, OnChgdrvright)
  28. ON_COMMAND(ID_COPYFILES, OnCopyfiles)
  29. ON_COMMAND(ID_DELFILES, OnDelfiles)
  30. ON_COMMAND(ID_MOVEFILES, OnMovefiles)
  31. ON_COMMAND(ID_MKDIR, OnMkdir)
  32. ON_COMMAND(ID_PACKFILES, OnPackfiles)
  33. ON_COMMAND(ID_SELFILES, OnSelfiles)
  34. ON_COMMAND(ID_SELREVERSE, OnSelreverse)
  35. ON_COMMAND(ID_DESELFILES, OnDeselfiles)
  36. //}}AFX_MSG_MAP
  37. END_MESSAGE_MAP()
  38. /////////////////////////////////////////////////////////////////////////////
  39. // CPFMApp construction
  40. CPFMApp::CPFMApp()
  41. {
  42. // TODO: add construction code here,
  43. // Place all significant initialization in InitInstance
  44. }
  45. /////////////////////////////////////////////////////////////////////////////
  46. // The one and only CPFMApp object
  47. CPFMApp theApp;
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CPFMApp initialization
  50. BOOL CPFMApp::InitInstance()
  51. {
  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. // To create the main window, this code creates a new frame window
  66. // object and then sets it as the application's main window object.
  67. CMainFrame* pFrame = new CMainFrame;
  68. m_pMainWnd = pFrame;
  69. // create and load the frame with its resources
  70. pFrame->LoadFrame(IDR_MAINFRAME,
  71. WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL,
  72. NULL);
  73. // The one and only window has been initialized, so show and update it.
  74. // pFrame->GetMenu()->RemoveMenu(2,MF_BYPOSITION);
  75. pFrame->ShowWindow(SW_SHOW);
  76. pFrame->UpdateWindow();
  77. // Restore previous state
  78. gLeftPan->LoadDirectory(gOptions.m_strStartPathLeft);
  79. gRightPan->LoadDirectory(gOptions.m_strStartPathRight);
  80. if (gCurPan)
  81. gRightPan->SetFocus();
  82. else
  83. gLeftPan->SetFocus();
  84. //pFrame->GetMenu()->GetSubMenu(2)->EnableMenuItem(ID_VIEW_TOOLBAR, FALSE);
  85. //pFrame->GetMenu()->GetSubMenu(2)->EnableMenuItem(ID_VIEW_STATUS_BAR, FALSE);
  86. return TRUE;
  87. }
  88. /////////////////////////////////////////////////////////////////////////////
  89. // CPFMApp message handlers
  90. /////////////////////////////////////////////////////////////////////////////
  91. // CAboutDlg dialog used for App About
  92. class CAboutDlg : public CDialog
  93. {
  94. public:
  95. CAboutDlg();
  96. // Dialog Data
  97. //{{AFX_DATA(CAboutDlg)
  98. enum { IDD = IDD_ABOUTBOX };
  99. //}}AFX_DATA
  100. // ClassWizard generated virtual function overrides
  101. //{{AFX_VIRTUAL(CAboutDlg)
  102. protected:
  103. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  104. //}}AFX_VIRTUAL
  105. // Implementation
  106. protected:
  107. //{{AFX_MSG(CAboutDlg)
  108. // No message handlers
  109. //}}AFX_MSG
  110. DECLARE_MESSAGE_MAP()
  111. };
  112. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  113. {
  114. //{{AFX_DATA_INIT(CAboutDlg)
  115. //}}AFX_DATA_INIT
  116. }
  117. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  118. {
  119. CDialog::DoDataExchange(pDX);
  120. //{{AFX_DATA_MAP(CAboutDlg)
  121. //}}AFX_DATA_MAP
  122. }
  123. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  124. //{{AFX_MSG_MAP(CAboutDlg)
  125. // No message handlers
  126. //}}AFX_MSG_MAP
  127. END_MESSAGE_MAP()
  128. // App command to run the dialog
  129. void CPFMApp::OnAppAbout()
  130. {
  131. CAboutDlg aboutDlg;
  132. aboutDlg.DoModal();
  133. }
  134. /////////////////////////////////////////////////////////////////////////////
  135. // CPFMApp message handlers
  136. void CPFMApp::OnTab() 
  137. {
  138. // TODO: Add your command handler code here
  139. if (gCurPan)
  140. {
  141. gCurPan = 0;
  142. gLeftPan->SetFocus();
  143. }
  144. else
  145. {
  146. gCurPan = 1;
  147. gRightPan->SetFocus();
  148. }
  149. }
  150. void CPFMApp::OnReturn() 
  151. {
  152. // TODO: Add your command handler code here
  153. CFileList *pList = gCurPan?gRightPan:gLeftPan;
  154. int nItem = pList->GetNextItem(-1, LVNI_ALL|LVNI_FOCUSED);
  155. if (nItem!=-1)
  156. pList->LoadItem(nItem);
  157. }
  158. void CPFMApp::OnChgdrvleft() 
  159. {
  160. // TODO: Add your command handler code here
  161. CSelDrvDlg dlgCd(gMainWnd);
  162. dlgCd.m_strPath = gLeftPath;
  163. if (dlgCd.DoModal()==IDOK)
  164. {
  165. gLeftPan->LoadDirectory(dlgCd.m_strPath);
  166. gLeftPan->SetFocus();
  167. }
  168. }
  169. void CPFMApp::OnChgdrvright() 
  170. {
  171. // TODO: Add your command handler code here
  172. CSelDrvDlg dlgCd(gMainWnd);
  173. dlgCd.m_strPath = gRightPath;
  174. if (dlgCd.DoModal()==IDOK)
  175. {
  176. gRightPan->LoadDirectory(dlgCd.m_strPath);
  177. gRightPan->SetFocus();
  178. }
  179. }
  180. void CPFMApp::OnCopyfiles() 
  181. {
  182. // TODO: Add your command handler code here
  183. CFileList *pfl = gCurPan?gRightPan:gLeftPan;
  184. if (pfl->GetSelectedCount()==1)
  185. {
  186. LPWIN32_FIND_DATA pFd;
  187. int nItem = pfl->GetNextItem(-1, LVNI_ALL|LVNI_SELECTED);
  188. pFd = (LPWIN32_FIND_DATA)pfl->GetItemData(nItem);
  189. if (strcmp(pFd->cFileName, "..")==0)
  190. {
  191. MessageBox(gMainWnd->m_hWnd, "未选取文件", "PackFile Maker", MB_OK|MB_ICONSTOP);
  192. return;
  193. }
  194. }
  195. CCopyFilesDlg cfd(gMainWnd);
  196. cfd.DoModal();
  197. }
  198. void CPFMApp::OnDelfiles() 
  199. {
  200. // TODO: Add your command handler code here
  201. CFileList *pfl = gCurPan?gRightPan:gLeftPan;
  202. if (pfl->GetSelectedCount()==1)
  203. {
  204. LPWIN32_FIND_DATA pFd;
  205. int nItem = pfl->GetNextItem(-1, LVNI_ALL|LVNI_SELECTED);
  206. pFd = (LPWIN32_FIND_DATA)pfl->GetItemData(nItem);
  207. if (strcmp(pFd->cFileName, "..")==0)
  208. {
  209. MessageBox(gMainWnd->m_hWnd, "未选取文件", "PackFile Maker", MB_OK|MB_ICONSTOP);
  210. return;
  211. }
  212. }
  213. CDelFileDlg dfd(gMainWnd);
  214. dfd.DoModal();
  215. }
  216. void CPFMApp::OnMovefiles() 
  217. {
  218. // TODO: Add your command handler code here
  219. }
  220. void CPFMApp::OnMkdir() 
  221. {
  222. // TODO: Add your command handler code here
  223. }
  224. void CPFMApp::OnPackfiles() 
  225. {
  226. if ((gLeftPath.Right(1)!="\") || (gRightPath.Right(1)!="\"))
  227. return;
  228. CFileList *pfl = gCurPan?gRightPan:gLeftPan;
  229. if (pfl->GetSelectedCount()==1)
  230. {
  231. LPWIN32_FIND_DATA pFd;
  232. int nItem = pfl->GetNextItem(-1, LVNI_ALL|LVNI_SELECTED);
  233. pFd = (LPWIN32_FIND_DATA)pfl->GetItemData(nItem);
  234. if (strcmp(pFd->cFileName, "..")==0)
  235. {
  236. MessageBox(gMainWnd->m_hWnd, "未选取文件", "PackFile Maker", MB_OK|MB_ICONSTOP);
  237. return;
  238. }
  239. }
  240. CPackFilesDlg pfd(gMainWnd);
  241. pfd.m_strPackFileName = (gCurPan?gLeftPath:gRightPath)+"package.ff";
  242. pfd.DoModal();
  243. // TODO: Add your command handler code here
  244. }
  245. void CPFMApp::OnSelfiles() 
  246. {
  247. // TODO: Add your command handler code here
  248. }
  249. void CPFMApp::OnSelreverse() 
  250. {
  251. // TODO: Add your command handler code here
  252. LVITEM lvi;
  253. CFileList  *pFl = gCurPan?gRightPan:gLeftPan;
  254. int nItem = pFl->GetNextItem(-1, LVNI_ALL);
  255. while(nItem!=-1)
  256. {
  257. lvi.mask = LVIF_STATE;
  258. lvi.iItem = nItem;
  259. lvi.iSubItem = 0;
  260. lvi.stateMask = 0xFFFF;
  261. // get all state flags
  262. pFl->GetItem(&lvi);
  263. lvi.state ^= LVIS_SELECTED;
  264. pFl->SetItem(&lvi);
  265. nItem = pFl->GetNextItem(nItem, LVNI_ALL);
  266. }
  267. }
  268. void CPFMApp::OnDeselfiles() 
  269. {
  270. // TODO: Add your command handler code here
  271. }