Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygentoolspage.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
1.7.6.1
|