ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

toolspage.c
Go to the documentation of this file.
00001 /*
00002  * PROJECT:     ReactOS Applications
00003  * LICENSE:     LGPL - See COPYING in the top level directory
00004  * FILE:        base/applications/toolspage.c
00005  * PURPOSE:     Tools page message handler
00006  * COPYRIGHT:   Copyright 2005-2006 Christoph von Wittich <Christoph@ApiViewer.de>
00007  *
00008  */
00009 
00010 #include <precomp.h>
00011 
00012 HWND hToolsPage;
00013 HWND hToolsListCtrl;
00014 HWND hToolsDialog;
00015 
00016 void AddItem ( DWORD, DWORD, DWORD, DWORD, int );
00017 void FillListView ( void );
00018 
00019 DWORD ListItems_Cmds[20];
00020 DWORD ListItems_Params[20];
00021 DWORD ListItems_Locations[20];
00022 
00023 void AddItem ( DWORD name_id, DWORD descr_id, DWORD cmd_id , DWORD param_id, int csidl ) {
00024     TCHAR szTemp[256];
00025     LV_ITEM item;
00026 
00027     LoadString(hInst, name_id, szTemp, 256);
00028     memset(&item, 0, sizeof(LV_ITEM));
00029     item.mask = LVIF_TEXT;
00030     item.iImage = 0;
00031     item.pszText = szTemp;
00032     item.iItem = ListView_GetItemCount(hToolsListCtrl);
00033     item.lParam = 0;
00034     (void)ListView_InsertItem(hToolsListCtrl, &item);
00035 
00036     ListItems_Cmds[item.iItem] = cmd_id;
00037     ListItems_Params[item.iItem] = param_id;
00038     ListItems_Locations[item.iItem] = csidl;
00039 
00040     LoadString(hInst, descr_id, szTemp, 256);
00041     item.pszText = szTemp;
00042     item.iSubItem = 1;
00043     SendMessage(hToolsListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item);
00044 }
00045 
00046 void FillListView ( void ) {
00047     AddItem(IDS_TOOLS_CMD_NAME, IDS_TOOLS_CMD_DESCR, IDS_TOOLS_CMD_CMD, IDS_TOOLS_CMD_PARAM, CSIDL_SYSTEM);
00048     AddItem(IDS_TOOLS_REGEDIT_NAME, IDS_TOOLS_REGEDIT_DESCR, IDS_TOOLS_REGEDIT_CMD,IDS_TOOLS_REGEDIT_PARAM, CSIDL_WINDOWS);
00049     AddItem(IDS_TOOLS_SYSDM_NAME, IDS_TOOLS_SYSDM_DESCR, IDS_TOOLS_SYSDM_CMD, IDS_TOOLS_SYSDM_PARAM, CSIDL_SYSTEM);
00050     AddItem(IDS_TOOLS_INFO_NAME, IDS_TOOLS_INFO_DESCR, IDS_TOOLS_INFO_CMD, IDS_TOOLS_INFO_PARAM, CSIDL_SYSTEM);
00051 }
00052 
00053 INT_PTR CALLBACK
00054 ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
00055 {
00056     LV_COLUMN   column;
00057     TCHAR       szTemp[MAX_PATH*2];
00058     TCHAR       szTemp2[256];
00059     TCHAR * Ptr = NULL;
00060     LPNMITEMACTIVATE lpnmitem;
00061     LPNMHDR nmh;
00062     DWORD dwStyle;
00063     PROCESS_INFORMATION pi;
00064     STARTUPINFO si;
00065 
00066     switch (message)
00067     {
00068         case WM_INITDIALOG:
00069         {
00070             hToolsListCtrl = GetDlgItem(hDlg, IDC_TOOLS_LIST);
00071             hToolsDialog = hDlg;
00072 
00073             dwStyle = (DWORD) SendMessage(hToolsListCtrl, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
00074             dwStyle = dwStyle | LVS_EX_FULLROWSELECT;
00075             SendMessage(hToolsListCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
00076 
00077             SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
00078 
00079             // Initialize the application page's controls
00080             column.mask = LVCF_TEXT | LVCF_WIDTH;
00081 
00082             LoadString(hInst, IDS_TOOLS_COLUMN_NAME, szTemp, 256);
00083             column.pszText = szTemp;
00084             column.cx = 150;
00085             (void)ListView_InsertColumn(hToolsListCtrl, 0, &column);
00086 
00087             column.mask = LVCF_TEXT | LVCF_WIDTH;
00088             LoadString(hInst, IDS_TOOLS_COLUMN_DESCR, szTemp, 256);
00089             column.pszText = szTemp;
00090             column.cx = 500;
00091             (void)ListView_InsertColumn(hToolsListCtrl, 1, &column);
00092 
00093             FillListView();
00094             return TRUE;
00095         }
00096     case WM_COMMAND:
00097         {
00098             switch (LOWORD(wParam))
00099             {
00100                 case IDC_BTN_RUN:
00101                 {
00102                     if (ListView_GetSelectionMark(hToolsListCtrl) != -1)
00103                     {
00104                         if (SHGetSpecialFolderPath(NULL, szTemp, ListItems_Locations[ListView_GetSelectionMark(hToolsListCtrl)], FALSE))
00105                             Ptr = PathAddBackslash(szTemp);
00106     
00107                         if (!Ptr)
00108                             Ptr = szTemp;
00109 
00110                         szTemp2[0] = _T('\0');
00111                         LoadString(hInst, ListItems_Cmds[ListView_GetSelectionMark(hToolsListCtrl)], Ptr, 256);
00112                         LoadString(hInst, ListItems_Params[ListView_GetSelectionMark(hToolsListCtrl)], szTemp2, 256);
00113                         if (_tcslen(szTemp2))
00114                         {
00115                            _tcscat(szTemp, _T(" "));
00116                            _tcscat(Ptr, szTemp2);
00117                         }
00118                         ZeroMemory(&si, sizeof(STARTUPINFO));
00119                         si.cb = sizeof(STARTUPINFO);
00120                         if (CreateProcess(NULL, szTemp, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
00121                         {
00122                             CloseHandle(pi.hThread);
00123                             CloseHandle(pi.hProcess);
00124                         }
00125                     }
00126                 }
00127             }
00128             break;
00129         }
00130         case WM_NOTIFY:
00131         {
00132             nmh = (LPNMHDR) lParam;
00133             if (nmh->hwndFrom == hToolsListCtrl)
00134             {
00135                 switch (nmh->code)
00136                 {
00137                     case LVN_ITEMCHANGED:
00138                     {
00139                         lpnmitem = (LPNMITEMACTIVATE) lParam;
00140                         if (lpnmitem->iItem > -1)
00141                         {
00142                             LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256);
00143                             szTemp2[0] = _T('\0');
00144                             LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256);
00145                             _tcscat(szTemp, _T(" "));
00146                             _tcscat(szTemp, szTemp2);
00147                             SendDlgItemMessage(hToolsDialog, IDC_TOOLS_CMDLINE, WM_SETTEXT, 0, (LPARAM) szTemp);
00148                         }
00149                         break;
00150                     }
00151                     case NM_DBLCLK:
00152                     {
00153                         lpnmitem = (LPNMITEMACTIVATE) lParam;
00154                         if (lpnmitem->iItem > -1)
00155                         {
00156                             if (SHGetSpecialFolderPath(NULL, szTemp, ListItems_Locations[ListView_GetSelectionMark(hToolsListCtrl)], FALSE))
00157                                 Ptr = PathAddBackslash(szTemp);
00158     
00159                             if (!Ptr)
00160                                 Ptr = szTemp;
00161 
00162                             szTemp2[0] = _T('\0');
00163                             LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], Ptr, 256);
00164                             LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256);
00165                             if (_tcslen(szTemp2))
00166                             {
00167                                 _tcscat(szTemp, _T(" "));
00168                                 _tcscat(Ptr, szTemp2);
00169                             }
00170                             ZeroMemory(&si, sizeof(STARTUPINFO));
00171                             si.cb = sizeof(STARTUPINFO);
00172                             if (CreateProcess(NULL, szTemp, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
00173                             {
00174                                 CloseHandle(pi.hThread);
00175                                 CloseHandle(pi.hProcess);
00176                             }
00177                         }
00178                         break;
00179                     }
00180                 }
00181         }
00182         }
00183         break;
00184     }
00185     return 0;
00186 }
00187 

Generated on Sat May 26 2012 04:15:51 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.