From c22011640511704a6571c705e01f0fc09bdb50a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 20 Oct 2015 21:57:36 +0000 Subject: [PATCH] [MSCONFIG_NEW] - Add some file utility functions, they will be used later for managing the startup programs. - Half-plement the general page controls. - Simplify some code; fix file headers; remove the old toolspage.c (replaced by its c++ equivalent). CORE-9333 svn path=/trunk/; revision=69630 --- .../applications/msconfig_new/CMakeLists.txt | 2 +- .../applications/msconfig_new/fileutils.c | 90 +++++++++ .../applications/msconfig_new/fileutils.h | 62 ++++++ .../applications/msconfig_new/generalpage.c | 159 ++++++++++++++- .../applications/msconfig_new/generalpage.h | 11 +- .../base/applications/msconfig_new/msconfig.c | 2 +- .../applications/msconfig_new/toolspage.c | 189 ------------------ .../applications/msconfig_new/toolspage.cpp | 33 ++- .../applications/msconfig_new/toolspage.h | 2 +- .../base/applications/msconfig_new/utils.c | 8 + .../base/applications/msconfig_new/utils.h | 8 + 11 files changed, 348 insertions(+), 218 deletions(-) create mode 100644 reactos/base/applications/msconfig_new/fileutils.c create mode 100644 reactos/base/applications/msconfig_new/fileutils.h delete mode 100644 reactos/base/applications/msconfig_new/toolspage.c diff --git a/reactos/base/applications/msconfig_new/CMakeLists.txt b/reactos/base/applications/msconfig_new/CMakeLists.txt index 14d2b5d8a1d..aea1d2bb78a 100644 --- a/reactos/base/applications/msconfig_new/CMakeLists.txt +++ b/reactos/base/applications/msconfig_new/CMakeLists.txt @@ -10,11 +10,11 @@ include_directories( list(APPEND C_SOURCE comctl32ex/listviewfuncs.c - # toolspage.c # srvpage.c # systempage.c # startuppage.c # freeldrpage.c + fileutils.c generalpage.c msconfig.c stringutils.c diff --git a/reactos/base/applications/msconfig_new/fileutils.c b/reactos/base/applications/msconfig_new/fileutils.c new file mode 100644 index 00000000000..c07d4ec4985 --- /dev/null +++ b/reactos/base/applications/msconfig_new/fileutils.c @@ -0,0 +1,90 @@ +/* + * PROJECT: ReactOS Applications + * LICENSE: LGPL - See COPYING in the top level directory + * FILE: base/applications/msconfig_new/fileutils.c + * PURPOSE: File Utility Functions + * COPYRIGHT: Copyright 2011-2012 Hermes BELUSCA - MAITO + */ + +#include "precomp.h" +#include "utils.h" +#include "fileutils.h" + +// +// NOTE: A function called "FileExists" with the very same prototype +// already exists in the PSDK headers (in setupapi.h) +// +BOOL +MyFileExists(IN LPCWSTR lpszFilePath, + OUT PWIN32_FIND_DATAW pFindData OPTIONAL) +{ + BOOL bIsFound = FALSE; + WIN32_FIND_DATAW find_data; + + DWORD dwNumOfChars; + LPWSTR lpszCmdLine; + HANDLE search; + + dwNumOfChars = ExpandEnvironmentStringsW(lpszFilePath, NULL, 0); + lpszCmdLine = (LPWSTR)MemAlloc(0, dwNumOfChars * sizeof(WCHAR)); + ExpandEnvironmentStringsW(lpszFilePath, lpszCmdLine, dwNumOfChars); + + search = FindFirstFileW(lpszCmdLine, &find_data); + MemFree(lpszCmdLine); + + bIsFound = (search != INVALID_HANDLE_VALUE); + + FindClose(search); + + if (bIsFound && pFindData) + *pFindData = find_data; + + return bIsFound; +} + +LRESULT +FileQueryFiles(IN LPCWSTR Path, + IN LPCWSTR FileNamesQuery, + IN PQUERY_FILES_TABLE QueryTable, + IN PVOID Context) +{ + LRESULT res = ERROR_SUCCESS; + WIN32_FIND_DATAW find_data; + + LPWSTR lpszQuery; + DWORD dwNumOfChars; + LPWSTR lpszExpandedQuery; + HANDLE search; + + lpszQuery = (LPWSTR)MemAlloc(0, (wcslen(Path) + 1 + wcslen(FileNamesQuery) + 1) * sizeof(WCHAR)); + wcscpy(lpszQuery, Path); + wcscat(lpszQuery, L"\\"); + wcscat(lpszQuery, FileNamesQuery); + + dwNumOfChars = ExpandEnvironmentStringsW(lpszQuery, NULL, 0); + lpszExpandedQuery = (LPWSTR)MemAlloc(0, dwNumOfChars * sizeof(WCHAR)); + ExpandEnvironmentStringsW(lpszQuery, lpszExpandedQuery, dwNumOfChars); + MemFree(lpszQuery); + + search = FindFirstFileW(lpszExpandedQuery, &find_data); + if (search != INVALID_HANDLE_VALUE) + { + do + { + PQUERY_FILES_TABLE pTable = QueryTable; + while (pTable && pTable->QueryRoutine) + { + pTable->QueryRoutine(Path, FileNamesQuery, lpszExpandedQuery, &find_data, Context, pTable->EntryContext); + ++pTable; + } + } while (/*res = */ FindNextFileW(search, &find_data)); + } + else + res = ERROR_NO_MORE_FILES; + + FindClose(search); + + MemFree(lpszExpandedQuery); + + return res; +} diff --git a/reactos/base/applications/msconfig_new/fileutils.h b/reactos/base/applications/msconfig_new/fileutils.h new file mode 100644 index 00000000000..4fffa5f0818 --- /dev/null +++ b/reactos/base/applications/msconfig_new/fileutils.h @@ -0,0 +1,62 @@ +/* + * PROJECT: ReactOS Applications + * LICENSE: LGPL - See COPYING in the top level directory + * FILE: base/applications/msconfig_new/fileutils.h + * PURPOSE: File Utility Functions + * COPYRIGHT: Copyright 2011-2012 Hermes BELUSCA - MAITO + */ + +#ifndef __FILEUTILS_H__ +#define __FILEUTILS_H__ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +// +// NOTE: A function called "FileExists" with the very same prototype +// already exists in the PSDK headers (in setupapi.h) +// +BOOL +MyFileExists(IN LPCWSTR lpszFilePath, + OUT PWIN32_FIND_DATAW pFindData OPTIONAL); + +//////////////////////////////////////////////////////////////////////////////// +typedef LRESULT +(*PQUERY_FILES_TABLE_ROUTINE)(IN LPCWSTR Path, + IN LPCWSTR FileNamesQuery, + IN LPCWSTR ExpandedFileNamesQuery, + IN PWIN32_FIND_DATAW pfind_data, + IN PVOID Context, + IN PVOID EntryContext); + +#define QUERY_FILES_TABLE_ROUTINE(fnName) \ + LRESULT (fnName)(IN LPCWSTR Path, \ + IN LPCWSTR FileNamesQuery, \ + IN LPCWSTR ExpandedFileNamesQuery, \ + IN PWIN32_FIND_DATAW pfind_data, \ + IN PVOID Context, \ + IN PVOID EntryContext) + +typedef struct __tagQUERY_FILES_TABLE +{ + PQUERY_FILES_TABLE_ROUTINE QueryRoutine; + PVOID EntryContext; + // Other fields ? +} QUERY_FILES_TABLE, *PQUERY_FILES_TABLE; + +LRESULT +FileQueryFiles(IN LPCWSTR Path, + IN LPCWSTR FileNamesQuery, + IN PQUERY_FILES_TABLE QueryTable, + IN PVOID Context); + +//////////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // __FILEUTILS_H__ diff --git a/reactos/base/applications/msconfig_new/generalpage.c b/reactos/base/applications/msconfig_new/generalpage.c index 0d9920cc85f..3896c7fb672 100644 --- a/reactos/base/applications/msconfig_new/generalpage.c +++ b/reactos/base/applications/msconfig_new/generalpage.c @@ -4,17 +4,21 @@ * FILE: base/applications/msconfig_new/generalpage.c * PURPOSE: General page message handler * COPYRIGHT: Copyright 2005-2006 Christoph von Wittich - * + * Copyright 2011-2012 Hermes BELUSCA - MAITO */ #include "precomp.h" +#include "fileutils.h" +#include "utils.h" +#include "commctrldefs.h" -// static LPCWSTR lpszRestoreProgPath1 = L"%SystemRoot%\\System32\\rstrui.exe"; -// static LPCWSTR lpszRestoreProgPath2 = L"%SystemRoot%\\System32\\restore\\rstrui.exe"; +static LPCWSTR lpszRestoreProgPath1 = L"%SystemRoot%\\System32\\rstrui.exe"; +static LPCWSTR lpszRestoreProgPath2 = L"%SystemRoot%\\System32\\restore\\rstrui.exe"; -HWND hGeneralPage; +static HWND hGeneralPage = NULL; +static BOOL bIsOriginalBootIni = TRUE; +static BOOL bIsStartupNotModified = TRUE; -#if 0 // TODO: Will be used later on... static VOID EnableSelectiveStartupControls(BOOL bEnable) { assert(hGeneralPage); @@ -45,7 +49,6 @@ static VOID CheckSelectiveStartupControls(BOOL bCheck) return; } -#endif INT_PTR CALLBACK GeneralPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) @@ -57,7 +60,14 @@ GeneralPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) case WM_INITDIALOG: { hGeneralPage = hDlg; - PropSheet_UnChanged(hMainWnd, hGeneralPage); + PropSheet_UnChanged(GetParent(hGeneralPage), hGeneralPage); + + /* Search for the restore program and enable its button if needed */ + if ( MyFileExists(lpszRestoreProgPath1, NULL) || + MyFileExists(lpszRestoreProgPath2, NULL) ) + Button_Enable(GetDlgItem(hGeneralPage, IDC_BTN_SYSTEM_RESTORE_START), TRUE); + else + Button_Enable(GetDlgItem(hGeneralPage, IDC_BTN_SYSTEM_RESTORE_START), FALSE); #if 0 /* FIXME */ @@ -67,6 +77,141 @@ GeneralPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) return TRUE; } + + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDC_RB_NORMAL_STARTUP: + { + /* Be sure that only this button is activated and the others are not */ + CheckRadioButton(hGeneralPage, IDC_RB_NORMAL_STARTUP, IDC_RB_SELECTIVE_STARTUP, IDC_RB_NORMAL_STARTUP); + + bIsOriginalBootIni = TRUE; + EnableSelectiveStartupControls(FALSE); + CheckSelectiveStartupControls(TRUE); + + Button_SetCheck(GetDlgItem(hGeneralPage, IDC_CBX_USE_ORIGINAL_BOOTCFG), (bIsOriginalBootIni ? BST_CHECKED : BST_UNCHECKED)); + + PropSheet_Changed(GetParent(hGeneralPage), hGeneralPage); + break; + } + + case IDC_RB_DIAGNOSTIC_STARTUP: + { + /* Be sure that only this button is activated and the others are not */ + CheckRadioButton(hGeneralPage, IDC_RB_NORMAL_STARTUP, IDC_RB_SELECTIVE_STARTUP, IDC_RB_DIAGNOSTIC_STARTUP); + + EnableSelectiveStartupControls(FALSE); + CheckSelectiveStartupControls(FALSE); + + PropSheet_Changed(GetParent(hGeneralPage), hGeneralPage); + break; + } + + case IDC_RB_SELECTIVE_STARTUP: + { + /* Be sure that only this button is activated and the others are not */ + CheckRadioButton(hGeneralPage, IDC_RB_NORMAL_STARTUP, IDC_RB_SELECTIVE_STARTUP, IDC_RB_SELECTIVE_STARTUP); + + EnableSelectiveStartupControls(TRUE); + PropSheet_Changed(GetParent(hGeneralPage), hGeneralPage); + + break; + } + + case IDC_CBX_USE_ORIGINAL_BOOTCFG: + { + bIsOriginalBootIni = TRUE; + + Button_SetCheck(GetDlgItem(hGeneralPage, IDC_CBX_USE_ORIGINAL_BOOTCFG), (bIsOriginalBootIni ? BST_CHECKED : BST_UNCHECKED)); + EnableWindow(GetDlgItem(hGeneralPage, IDC_CBX_USE_ORIGINAL_BOOTCFG), !bIsOriginalBootIni /*FALSE*/); + + PropSheet_Changed(GetParent(hGeneralPage), hGeneralPage); + + break; + } + + case IDC_BTN_SYSTEM_RESTORE_START: + { + // NOTE: 'err' variable defined for debugging purposes only. + DWORD err = RunCommand(lpszRestoreProgPath1, NULL, SW_SHOW); + if (err == ERROR_FILE_NOT_FOUND) + err = RunCommand(lpszRestoreProgPath2, NULL, SW_SHOW); + + break; + } + + // case IDC_BTN_FILE_EXTRACTION: + // DialogBox(hInst, MAKEINTRESOURCE(IDD_FILE_EXTRACT_DIALOG), hGeneralPage /* GetParent(hGeneralPage) */, FileExtractDialogWndProc); + // break; + + default: + //break; + return FALSE; + } + break; + } + + case WM_NOTIFY: + { + switch (((LPNMHDR)lParam)->code) + { + case PSN_APPLY: + { + // TODO: Try to apply the modifications to the system. + PropSheet_UnChanged(GetParent(hGeneralPage), hGeneralPage); + return TRUE; + } + + case PSN_HELP: + { + MessageBoxW(hGeneralPage, L"Help not implemented yet!", L"Help", MB_ICONINFORMATION | MB_OK); + return TRUE; + } + + case PSN_KILLACTIVE: // Is going to lose activation. + { + // Changes are always valid of course. + SetWindowLongPtr(hGeneralPage, DWLP_MSGRESULT, FALSE); + return TRUE; + } + + case PSN_QUERYCANCEL: + { + // Allows cancellation. + SetWindowLongPtr(hGeneralPage, DWLP_MSGRESULT, FALSE); + return TRUE; + } + + case PSN_QUERYINITIALFOCUS: + { + // SetWindowLongPtr(hGeneralPage, DWLP_MSGRESULT, + // (LONG_PTR)GetDlgItem(hGeneralPage, (bIsOriginalBootIni ? IDC_RB_NORMAL_STARTUP : IDC_RB_SELECTIVE_STARTUP))); + return TRUE; + } + + // + // DO NOT TOUCH THESE NEXT MESSAGES, THEY ARE OK LIKE THIS... + // + case PSN_RESET: // Perform final cleaning, called before WM_DESTROY. + return TRUE; + + case PSN_SETACTIVE: // Is going to gain activation. + { + SetWindowLongPtr(hGeneralPage, DWLP_MSGRESULT, 0); + return TRUE; + } + + default: + break; + } + + return FALSE; + } + + default: + return FALSE; } return FALSE; diff --git a/reactos/base/applications/msconfig_new/generalpage.h b/reactos/base/applications/msconfig_new/generalpage.h index d575ec81b65..5ac2f016687 100644 --- a/reactos/base/applications/msconfig_new/generalpage.h +++ b/reactos/base/applications/msconfig_new/generalpage.h @@ -1,8 +1,15 @@ +/* + * PROJECT: ReactOS Applications + * LICENSE: LGPL - See COPYING in the top level directory + * FILE: base/applications/msconfig_new/generalpage.c + * PURPOSE: General page message handler + * COPYRIGHT: Copyright 2005-2006 Christoph von Wittich + * Copyright 2011-2012 Hermes BELUSCA - MAITO + */ + #ifndef _GENERALPAGE_H_ #define _GENERALPAGE_H_ -extern HWND hGeneralPage; - INT_PTR CALLBACK GeneralPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); #endif /* _GENERALPAGE_H_ */ diff --git a/reactos/base/applications/msconfig_new/msconfig.c b/reactos/base/applications/msconfig_new/msconfig.c index 4b5ebca16ba..7b459c8a0ed 100644 --- a/reactos/base/applications/msconfig_new/msconfig.c +++ b/reactos/base/applications/msconfig_new/msconfig.c @@ -116,7 +116,7 @@ INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) } -/* Message handler for dialog box. */ +/* Message handler for dialog box */ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) { switch (uMessage) diff --git a/reactos/base/applications/msconfig_new/toolspage.c b/reactos/base/applications/msconfig_new/toolspage.c deleted file mode 100644 index 9b6e50cf4e5..00000000000 --- a/reactos/base/applications/msconfig_new/toolspage.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * PROJECT: ReactOS Applications - * LICENSE: LGPL - See COPYING in the top level directory - * FILE: base/applications/msconfig_new/toolspage.c - * PURPOSE: Tools page message handler - * COPYRIGHT: Copyright 2005-2006 Christoph von Wittich - * - */ - -#include "precomp.h" - -#include - -HWND hToolsPage; -HWND hToolsListCtrl; -HWND hToolsDialog; - -void AddItem ( DWORD, DWORD, DWORD, DWORD, int ); -void FillListView ( void ); - -DWORD ListItems_Cmds[20]; -DWORD ListItems_Params[20]; -DWORD ListItems_Locations[20]; - -void AddItem ( DWORD name_id, DWORD descr_id, DWORD cmd_id , DWORD param_id, int csidl ) { - TCHAR szTemp[256]; - LV_ITEM item; - - LoadString(hInst, name_id, szTemp, 256); - memset(&item, 0, sizeof(LV_ITEM)); - item.mask = LVIF_TEXT; - item.iImage = 0; - item.pszText = szTemp; - item.iItem = ListView_GetItemCount(hToolsListCtrl); - item.lParam = 0; - (void)ListView_InsertItem(hToolsListCtrl, &item); - - ListItems_Cmds[item.iItem] = cmd_id; - ListItems_Params[item.iItem] = param_id; - ListItems_Locations[item.iItem] = csidl; - - LoadString(hInst, descr_id, szTemp, 256); - item.pszText = szTemp; - item.iSubItem = 1; - SendMessage(hToolsListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); -} - -void FillListView ( void ) { - AddItem(IDS_TOOLS_CMD_NAME, IDS_TOOLS_CMD_DESCR, IDS_TOOLS_CMD_CMD, IDS_TOOLS_CMD_PARAM, CSIDL_SYSTEM); - AddItem(IDS_TOOLS_REGEDIT_NAME, IDS_TOOLS_REGEDIT_DESCR, IDS_TOOLS_REGEDIT_CMD,IDS_TOOLS_REGEDIT_PARAM, CSIDL_WINDOWS); - AddItem(IDS_TOOLS_SYSDM_NAME, IDS_TOOLS_SYSDM_DESCR, IDS_TOOLS_SYSDM_CMD, IDS_TOOLS_SYSDM_PARAM, CSIDL_SYSTEM); - AddItem(IDS_TOOLS_INFO_NAME, IDS_TOOLS_INFO_DESCR, IDS_TOOLS_INFO_CMD, IDS_TOOLS_INFO_PARAM, CSIDL_SYSTEM); -} - -INT_PTR CALLBACK -ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) -{ - LV_COLUMN column; - TCHAR szTemp[MAX_PATH*2]; - TCHAR szTemp2[256]; - TCHAR * Ptr = NULL; - LPNMITEMACTIVATE lpnmitem; - LPNMHDR nmh; - DWORD dwStyle; - PROCESS_INFORMATION pi; - STARTUPINFO si; - - switch (message) - { - case WM_INITDIALOG: - { - hToolsListCtrl = GetDlgItem(hDlg, IDC_TOOLS_LIST); - hToolsDialog = hDlg; - - dwStyle = (DWORD) SendMessage(hToolsListCtrl, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0); - dwStyle = dwStyle | LVS_EX_FULLROWSELECT; - SendMessage(hToolsListCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle); - - SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER); - - // Initialize the application page's controls - column.mask = LVCF_TEXT | LVCF_WIDTH; - - LoadString(hInst, IDS_TOOLS_COLUMN_NAME, szTemp, 256); - column.pszText = szTemp; - column.cx = 150; - (void)ListView_InsertColumn(hToolsListCtrl, 0, &column); - - column.mask = LVCF_TEXT | LVCF_WIDTH; - LoadString(hInst, IDS_TOOLS_COLUMN_DESCR, szTemp, 256); - column.pszText = szTemp; - column.cx = 500; - (void)ListView_InsertColumn(hToolsListCtrl, 1, &column); - - FillListView(); - return TRUE; - } - case WM_COMMAND: - { - switch (LOWORD(wParam)) - { - case IDC_BTN_RUN: - { - if (ListView_GetSelectionMark(hToolsListCtrl) != -1) - { - if (SHGetSpecialFolderPath(NULL, szTemp, ListItems_Locations[ListView_GetSelectionMark(hToolsListCtrl)], FALSE)) - Ptr = PathAddBackslash(szTemp); - - if (!Ptr) - Ptr = szTemp; - - szTemp2[0] = _T('\0'); - LoadString(hInst, ListItems_Cmds[ListView_GetSelectionMark(hToolsListCtrl)], Ptr, 256); - LoadString(hInst, ListItems_Params[ListView_GetSelectionMark(hToolsListCtrl)], szTemp2, 256); - if (_tcslen(szTemp2)) - { - _tcscat(szTemp, _T(" ")); - _tcscat(Ptr, szTemp2); - } - ZeroMemory(&si, sizeof(STARTUPINFO)); - si.cb = sizeof(STARTUPINFO); - if (CreateProcess(NULL, szTemp, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) - { - CloseHandle(pi.hThread); - CloseHandle(pi.hProcess); - } - } - } - } - break; - } - case WM_NOTIFY: - { - nmh = (LPNMHDR) lParam; - if (nmh->hwndFrom == hToolsListCtrl) - { - switch (nmh->code) - { - case LVN_ITEMCHANGED: - { - lpnmitem = (LPNMITEMACTIVATE) lParam; - if (lpnmitem->iItem > -1) - { - LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256); - szTemp2[0] = _T('\0'); - LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256); - _tcscat(szTemp, _T(" ")); - _tcscat(szTemp, szTemp2); - SendDlgItemMessage(hToolsDialog, IDC_TOOLS_CMDLINE, WM_SETTEXT, 0, (LPARAM) szTemp); - } - break; - } - case NM_DBLCLK: - { - lpnmitem = (LPNMITEMACTIVATE) lParam; - if (lpnmitem->iItem > -1) - { - if (SHGetSpecialFolderPath(NULL, szTemp, ListItems_Locations[ListView_GetSelectionMark(hToolsListCtrl)], FALSE)) - Ptr = PathAddBackslash(szTemp); - - if (!Ptr) - Ptr = szTemp; - - szTemp2[0] = _T('\0'); - LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], Ptr, 256); - LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256); - if (_tcslen(szTemp2)) - { - _tcscat(szTemp, _T(" ")); - _tcscat(Ptr, szTemp2); - } - ZeroMemory(&si, sizeof(STARTUPINFO)); - si.cb = sizeof(STARTUPINFO); - if (CreateProcess(NULL, szTemp, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) - { - CloseHandle(pi.hThread); - CloseHandle(pi.hProcess); - } - } - break; - } - } - } - } - break; - } - return 0; -} - diff --git a/reactos/base/applications/msconfig_new/toolspage.cpp b/reactos/base/applications/msconfig_new/toolspage.cpp index 6838bcc3b66..bf1b8949d5c 100644 --- a/reactos/base/applications/msconfig_new/toolspage.cpp +++ b/reactos/base/applications/msconfig_new/toolspage.cpp @@ -16,7 +16,7 @@ static HWND hToolsPage = NULL; static HWND hToolsListCtrl = NULL; static int iSortedColumn = 0; -typedef struct TOOL +struct TOOL { TOOL(const _bstr_t& Command, const _bstr_t& DefParam, @@ -37,8 +37,7 @@ typedef struct TOOL _bstr_t m_Command; _bstr_t m_DefParam; _bstr_t m_AdvParam; - -} *PTOOL; +}; static void AddTool(IXMLDOMElement*, BOOL); @@ -120,7 +119,7 @@ ParseToolsList(IXMLDOMDocument* pXMLDom, BOOL bIsStandard) } static void -AddItem(BOOL bIsStandard, const _bstr_t& name, const _bstr_t& descr, PTOOL tool) +AddItem(BOOL bIsStandard, const _bstr_t& name, const _bstr_t& descr, TOOL* tool) { LPTSTR lpszStandard; LVITEM item = {}; @@ -155,7 +154,7 @@ AddItem(BOOL bIsStandard, const _bstr_t& name, const _bstr_t& descr, PTOOL tool) static void AddTool(IXMLDOMElement* pXMLTool, BOOL bIsStandard) { - PTOOL tool; + TOOL* tool; _variant_t varLocID, varName, varPath, varDefOpt, varAdvOpt, varHelp; @@ -234,7 +233,7 @@ BuildCommandLine(LPWSTR lpszDest, LPCWSTR lpszCmdLine, LPCWSTR lpszParam, size_t static void Update_States(int iSelectedItem) { - PTOOL tool; + TOOL* tool; LVITEM item = {}; assert(hToolsPage); @@ -246,7 +245,7 @@ static void Update_States(int iSelectedItem) { LPTSTR lpszCmdLine = NULL; size_t numOfChars = 0; - tool = reinterpret_cast(item.lParam); + tool = reinterpret_cast(item.lParam); ListView_EnsureVisible(hToolsListCtrl, item.iItem, FALSE); @@ -308,7 +307,7 @@ static BOOL RunSelectedTool(VOID) bUseAdvParams = FALSE; // Values greater (strictly) than 32 indicate success (see MSDN documentation for ShellExecute(...) API). - bRetVal = (reinterpret_cast(item.lParam)->Run(bUseAdvParams) > 32); + bRetVal = (reinterpret_cast(item.lParam)->Run(bUseAdvParams) > 32); } return bRetVal; @@ -386,7 +385,7 @@ ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) ListView_GetItem(hToolsListCtrl, &lvitem); - delete reinterpret_cast(lvitem.lParam); + delete reinterpret_cast(lvitem.lParam); lvitem.lParam = NULL; } ListView_DeleteAllItems(hToolsListCtrl); @@ -418,16 +417,16 @@ ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) case WM_NOTIFY: { - if (reinterpret_cast(lParam)->hwndFrom == hToolsListCtrl) + if (((LPNMHDR)lParam)->hwndFrom == hToolsListCtrl) { - switch (reinterpret_cast(lParam)->code) + switch (((LPNMHDR)lParam)->code) { case LVN_ITEMCHANGED: { - if ( (reinterpret_cast(lParam)->uChanged & LVIF_STATE) && /* The state has changed */ - (reinterpret_cast(lParam)->uNewState & LVIS_SELECTED) /* The item has been (de)selected */ ) + if ( (((LPNMLISTVIEW)lParam)->uChanged & LVIF_STATE) && /* The state has changed */ + (((LPNMLISTVIEW)lParam)->uNewState & LVIS_SELECTED) /* The item has been (de)selected */ ) { - Update_States(reinterpret_cast(lParam)->iItem); + Update_States(((LPNMLISTVIEW)lParam)->iItem); } return TRUE; @@ -442,7 +441,7 @@ ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) case LVN_COLUMNCLICK: { - int iSortingColumn = reinterpret_cast(lParam)->iSubItem; + int iSortingColumn = ((LPNMLISTVIEW)lParam)->iSubItem; ListView_SortEx(hToolsListCtrl, iSortingColumn, iSortedColumn); iSortedColumn = iSortingColumn; @@ -456,7 +455,7 @@ ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) } else { - switch (reinterpret_cast(lParam)->code) + switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: { @@ -469,7 +468,7 @@ ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) case PSN_HELP: { - MessageBox(hToolsPage, _T("Help not implemented yet!"), _T("Help"), MB_ICONINFORMATION | MB_OK); + MessageBoxW(hToolsPage, L"Help not implemented yet!", L"Help", MB_ICONINFORMATION | MB_OK); return TRUE; } diff --git a/reactos/base/applications/msconfig_new/toolspage.h b/reactos/base/applications/msconfig_new/toolspage.h index 4d3169124ab..33d113fb123 100644 --- a/reactos/base/applications/msconfig_new/toolspage.h +++ b/reactos/base/applications/msconfig_new/toolspage.h @@ -1,7 +1,7 @@ /* * PROJECT: ReactOS Applications * LICENSE: LGPL - See COPYING in the top level directory - * FILE: base/applications/msconfig_new/toolspage.cpp + * FILE: base/applications/msconfig_new/toolspage.h * PURPOSE: Tools page message handler * COPYRIGHT: Copyright 2005-2006 Christoph von Wittich * Copyright 2011-2012 Hermes BELUSCA - MAITO diff --git a/reactos/base/applications/msconfig_new/utils.c b/reactos/base/applications/msconfig_new/utils.c index cac484f2b34..53b735027f1 100644 --- a/reactos/base/applications/msconfig_new/utils.c +++ b/reactos/base/applications/msconfig_new/utils.c @@ -1,3 +1,11 @@ +/* + * PROJECT: ReactOS Applications + * LICENSE: LGPL - See COPYING in the top level directory + * FILE: base/applications/msconfig_new/utils.c + * PURPOSE: Memory Management, Resources, ... Utility Functions + * COPYRIGHT: Copyright 2011-2012 Hermes BELUSCA - MAITO + */ + #include "precomp.h" #include "utils.h" #include "stringutils.h" diff --git a/reactos/base/applications/msconfig_new/utils.h b/reactos/base/applications/msconfig_new/utils.h index 54142f6cbc7..ab02aed1f37 100644 --- a/reactos/base/applications/msconfig_new/utils.h +++ b/reactos/base/applications/msconfig_new/utils.h @@ -1,3 +1,11 @@ +/* + * PROJECT: ReactOS Applications + * LICENSE: LGPL - See COPYING in the top level directory + * FILE: base/applications/msconfig_new/utils.c + * PURPOSE: Memory Management, Resources, ... Utility Functions + * COPYRIGHT: Copyright 2011-2012 Hermes BELUSCA - MAITO + */ + #ifndef __UTILS_H__ #define __UTILS_H__