系统优化Dlg.cpp
上传用户:hshkfsl
上传日期:2014-01-04
资源大小:1910k
文件大小:8k
源码类别:

界面编程

开发平台:

Visual C++

  1. // 系统优化Dlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "系统优化.h"
  5. #include "系统优化Dlg.h"
  6. #include ".系统优化dlg.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CAboutDlg dialog used for App About
  14. class CAboutDlg : public CDialog
  15. {
  16. public:
  17. CAboutDlg();
  18. // Dialog Data
  19. //{{AFX_DATA(CAboutDlg)
  20. enum { IDD = IDD_ABOUTBOX };
  21. //}}AFX_DATA
  22. // ClassWizard generated virtual function overrides
  23. //{{AFX_VIRTUAL(CAboutDlg)
  24. protected:
  25. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  26. //}}AFX_VIRTUAL
  27. // Implementation
  28. protected:
  29. //{{AFX_MSG(CAboutDlg)
  30. //}}AFX_MSG
  31. DECLARE_MESSAGE_MAP()
  32. };
  33. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  34. {
  35. //{{AFX_DATA_INIT(CAboutDlg)
  36. //}}AFX_DATA_INIT
  37. }
  38. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  39. {
  40. CDialog::DoDataExchange(pDX);
  41. //{{AFX_DATA_MAP(CAboutDlg)
  42. //}}AFX_DATA_MAP
  43. }
  44. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  45. //{{AFX_MSG_MAP(CAboutDlg)
  46. // No message handlers
  47. //}}AFX_MSG_MAP
  48. END_MESSAGE_MAP()
  49. /////////////////////////////////////////////////////////////////////////////
  50. // CMyDlg dialog
  51. CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
  52. : CDialog(CMyDlg::IDD, pParent)
  53. {
  54. //{{AFX_DATA_INIT(CMyDlg)
  55. //}}AFX_DATA_INIT
  56. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  57. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  58. }
  59. void CMyDlg::DoDataExchange(CDataExchange* pDX)
  60. {
  61. CDialog::DoDataExchange(pDX);
  62. //{{AFX_DATA_MAP(CMyDlg)
  63. DDX_Control(pDX, IDC_TAB1, m_tab);
  64. //}}AFX_DATA_MAP
  65. DDX_Control(pDX, IDC_LIST1, list);
  66. }
  67. BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
  68. //{{AFX_MSG_MAP(CMyDlg)
  69. ON_WM_SYSCOMMAND()
  70. ON_WM_DESTROY()
  71. ON_WM_PAINT()
  72. ON_WM_QUERYDRAGICON()
  73. ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)
  74. ON_WM_SHOWWINDOW()
  75. //}}AFX_MSG_MAP
  76. ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnNMDblclkList1)
  77. ON_COMMAND(IDM_HELP, OnHelp)
  78. ON_COMMAND(ID_ADD_ITEM_FILE, OnAddItemFile)
  79. ON_WM_GETMINMAXINFO()
  80. END_MESSAGE_MAP()
  81. /////////////////////////////////////////////////////////////////////////////
  82. // CMyDlg message handlers
  83. BOOL CMyDlg::OnInitDialog()
  84. {
  85. CDialog::OnInitDialog();
  86. // Add "About..." menu item to system menu.
  87. // IDM_ABOUTBOX must be in the system command range.
  88. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  89. ASSERT(IDM_ABOUTBOX < 0xF000);
  90. CMenu* pSysMenu = GetSystemMenu(FALSE);
  91. if (pSysMenu != NULL)
  92. {
  93. CString strAboutMenu;
  94. strAboutMenu.LoadString(IDS_ABOUTBOX);
  95. if (!strAboutMenu.IsEmpty())
  96. {
  97. pSysMenu->AppendMenu(MF_SEPARATOR);
  98. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  99. }
  100. }
  101. // Set the icon for this dialog.  The framework does this automatically
  102. //  when the application's main window is not a dialog
  103. SetIcon(m_hIcon, TRUE); // Set big icon
  104. SetIcon(m_hIcon, FALSE); // Set small icon
  105. // TODO: Add extra initialization here
  106. return TRUE;  // return TRUE  unless you set the focus to a control
  107. }
  108. void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam)
  109. {
  110. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  111. {
  112. CAboutDlg dlgAbout;
  113. dlgAbout.DoModal();
  114. }
  115. else
  116. {
  117. CDialog::OnSysCommand(nID, lParam);
  118. }
  119. }
  120. void CMyDlg::OnDestroy()
  121. {
  122. WinHelp(0L, HELP_QUIT);
  123. CDialog::OnDestroy();
  124. }
  125. // If you add a minimize button to your dialog, you will need the code below
  126. //  to draw the icon.  For MFC applications using the document/view model,
  127. //  this is automatically done for you by the framework.
  128. void CMyDlg::OnPaint() 
  129. {
  130. if (IsIconic())
  131. {
  132. CPaintDC dc(this); // device context for painting
  133. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  134. // Center icon in client rectangle
  135. int cxIcon = GetSystemMetrics(SM_CXICON);
  136. int cyIcon = GetSystemMetrics(SM_CYICON);
  137. CRect rect;
  138. GetClientRect(&rect);
  139. int x = (rect.Width() - cxIcon + 1) / 2;
  140. int y = (rect.Height() - cyIcon + 1) / 2;
  141. // Draw the icon
  142. dc.DrawIcon(x, y, m_hIcon);
  143. }
  144. else
  145. {
  146. CDialog::OnPaint();
  147. }
  148. }
  149. // The system calls this to obtain the cursor to display while the user drags
  150. //  the minimized window.
  151. HCURSOR CMyDlg::OnQueryDragIcon()
  152. {
  153. return (HCURSOR) m_hIcon;
  154. }
  155. void CMyDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
  156. {
  157. // TODO: Add your control notification handler code here
  158. TCITEM TabCtrlItem ;
  159. TabCtrlItem.mask=TCIF_TEXT;
  160. CString pszString;
  161. TabCtrlItem.pszText=pszString.GetBuffer(256);
  162. TabCtrlItem.cchTextMax=256;
  163. m_tab.GetItem(m_tab.GetCurSel( ),&TabCtrlItem);
  164. nowtabitem=pszString;
  165. // MessageBox(pszString);
  166. ListSame(pszString);
  167. *pResult = 0;
  168. }
  169. //在窗口载入时在TABCTRL上加ITEM
  170. bool CMyDlg::inittabitem()
  171. {
  172. //得到目录
  173. char path[MAX_PATH];
  174. ::GetCurrentDirectory(MAX_PATH,path);
  175.     //在名叫parts的目录里查找不同类型的文件名从而为页分类
  176. int i=0;
  177. HANDLE hFind;
  178. WIN32_FIND_DATA  FindFileData;
  179. ZeroMemory(&FindFileData, sizeof(WIN32_FIND_DATA));
  180. strcat(path,"\parts\*.exe");
  181. hFind =::FindFirstFile(path,&FindFileData);
  182. if(INVALID_HANDLE_VALUE!=hFind)
  183. do {
  184. CString str=FindFileData.cFileName;
  185. if (str!= "." ) 
  186. {
  187. if (str != "..") 
  188. {
  189. //保存ITEM
  190. if((NULL==m_allname.Find(str)||0==m_allname.GetCount ())&&str!="")
  191. {
  192. m_allname.AddTail(str) ;//查找到的第一个文件的名子
  193. CString stritem=str.Left (str.Find('-'));
  194. if((NULL==m_item.Find(stritem)||0==m_item.GetCount ())&&stritem!="")
  195. {
  196. m_item.AddTail(stritem);
  197. m_tab.InsertItem(i,stritem);
  198. i++;
  199. }
  200. }
  201. }
  202. }
  203. }while (::FindNextFile (hFind , &FindFileData)) ;
  204.     ::FindClose (hFind);
  205.     return 1; 
  206. }
  207. void CMyDlg::OnShowWindow(BOOL bShow, UINT nStatus) 
  208. {
  209. CDialog::OnShowWindow(bShow, nStatus);
  210. // TODO: Add your message handler code here
  211. inittabitem();//保存ITEM
  212. TCITEM TabCtrlItem ;
  213. TabCtrlItem.mask=TCIF_TEXT;
  214. CString pszString;
  215. TabCtrlItem.pszText=pszString.GetBuffer(256);
  216. TabCtrlItem.cchTextMax=256;
  217. m_tab.GetItem(m_tab.GetCurSel( ),&TabCtrlItem);
  218. //在LIST上面显示相同类型的文件名
  219. nowtabitem =pszString;
  220. ListSame(pszString);
  221. // MessageBox(pszString);
  222. }
  223. // 列出相同类型的文件名
  224. bool CMyDlg::ListSame(CString name)
  225. {
  226. list.DeleteAllItems ();
  227. list.InsertColumn (0,"");
  228. POSITION pos = m_allname.GetTailPosition ();
  229. while (pos != NULL) 
  230. {
  231. CString string = m_allname.GetPrev (pos);
  232. if(name==string.Left (string.Find ("-")))
  233. {
  234. int i=1;
  235. list.InsertItem (i,string.Mid(string.Find ("-")+1,string.Find (".")-string.Find ("-")-1));
  236. i++;
  237. };
  238. }
  239. return false;
  240. }
  241. void CMyDlg::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)
  242. {
  243. // TODO: 在此添加控件通知处理程序代码
  244. //关闭上一个窗口
  245. TerminateProcess(pi.hProcess,0);
  246. POSITION pos = list.GetFirstSelectedItemPosition();
  247. if (pos == NULL)
  248. {}
  249. else
  250. {
  251. while (pos)
  252. {
  253. int nItem = list.GetNextSelectedItem(pos);
  254. //得到目录
  255. char path[MAX_PATH];
  256. ::GetCurrentDirectory(MAX_PATH,path);
  257. CString pathtorun="";
  258. pathtorun=path;
  259. pathtorun+="\parts\";
  260. pathtorun+=nowtabitem.GetBuffer(nowtabitem.GetLength());
  261. pathtorun+="-";
  262. pathtorun+=list.GetItemText(nItem,0);
  263. pathtorun+=".exe";
  264. //进程
  265. STARTUPINFO si={sizeof(si),NULL};
  266. BOOL bSuccess;
  267. bSuccess=CreateProcess(pathtorun,NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
  268. if(!bSuccess)
  269. {
  270. MessageBox("进程创建失败!","提示");
  271. }
  272. nowopen+=nowtabitem.GetBuffer(nowtabitem.GetLength());
  273. nowopen+="-";
  274. nowopen+=(list.GetItemText(nItem,0)+".exe");
  275. }
  276. }
  277. *pResult = 0;
  278. }
  279. BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
  280. ON_EVENT(CMyDlg, IDC_IMAGE1, DISPID_CLICK, ClickImage1, VTS_NONE)
  281. END_EVENTSINK_MAP()
  282. void CMyDlg::ClickImage1()
  283. {
  284. // TODO: 在此处添加消息处理程序代码
  285. CMenu menu;
  286. // load a menu from the resources
  287. menu.LoadMenu(IDR_MENU1);
  288. // get a pointer to actual popup menu
  289. CMenu* pPopup = menu.GetSubMenu(0);
  290. CPoint pt;
  291. GetCursorPos(&pt); 
  292. pPopup->TrackPopupMenu(TPM_LEFTBUTTON, pt.x, pt.y, this);
  293. pPopup->DestroyMenu();
  294. }
  295. void CMyDlg::OnHelp()
  296. {
  297. // TODO: 在此添加命令处理程序代码
  298. MessageBox("帮助");
  299. }
  300. void CMyDlg::OnAddItemFile()
  301. {
  302. // TODO: 在此添加命令处理程序代码
  303. Addfiledlg.DoModal();
  304. }
  305. void CMyDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
  306. {
  307. // TODO: 在此添加消息处理程序代码和/或调用默认值
  308. CDialog::OnGetMinMaxInfo(lpMMI);
  309. }