Author: cfinck Date: Tue May 13 16:39:25 2008 New Revision: 33508
URL: http://svn.reactos.org/svn/reactos?rev=33508&view=rev Log: Open the Explorer Shell Folder instead of providing a standalone Control Panel. This changed enables us to remove lots of files from the app :-)
Removed: trunk/reactos/base/applications/control/lang/ trunk/reactos/base/applications/control/rsrc.rc Modified: trunk/reactos/base/applications/control/control.c trunk/reactos/base/applications/control/control.h trunk/reactos/base/applications/control/control.rbuild trunk/reactos/base/applications/control/control.rc trunk/reactos/base/applications/control/resource.h
Modified: trunk/reactos/base/applications/control/control.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/control/c... ============================================================================== --- trunk/reactos/base/applications/control/control.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/control/control.c [iso-8859-1] Tue May 13 16:39:25 2008 @@ -37,298 +37,6 @@ return RUNDLL(szParameters); }
-static VOID -PopulateCPLList(HWND hLisCtrl) -{ - WIN32_FIND_DATA fd; - HANDLE hFind; - TCHAR pszSearchPath[MAX_PATH]; - HIMAGELIST hImgListSmall; - HIMAGELIST hImgListLarge; - HMODULE hDll; - CPLAPPLETFUNC pFunc; - TCHAR pszPath[MAX_PATH]; - TCHAR szPanelNum[CCH_UINT_MAX + 1]; - DEVMODE pDevMode; - - /* Icon drawing mode */ - pDevMode.dmSize = sizeof(DEVMODE); - pDevMode.dmDriverExtra = 0; - - EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &pDevMode); - hImgListSmall = ImageList_Create(16, 16, pDevMode.dmBitsPerPel | ILC_MASK, 5, 5); - hImgListLarge = ImageList_Create(32, 32, pDevMode.dmBitsPerPel | ILC_MASK, 5, 5); - - GetSystemDirectory(pszSearchPath, MAX_PATH); - _tcscat(pszSearchPath, _T("\*.cpl")); - - hFind = FindFirstFile(pszSearchPath, &fd); - - while (hFind != INVALID_HANDLE_VALUE) - { - _tcscpy(pszPath, pszSearchPath); - *_tcsrchr(pszPath, '\') = 0; - _tcscat(pszPath, _T("\")); - _tcscat(pszPath, fd.cFileName); - - hDll = LoadLibrary(pszPath); - pFunc = (CPLAPPLETFUNC)GetProcAddress(hDll, "CPlApplet"); - - if (pFunc && pFunc(hLisCtrl, CPL_INIT, 0, 0)) - { - UINT i, uPanelCount; - - uPanelCount = (UINT)pFunc(hLisCtrl, CPL_GETCOUNT, 0, 0); - - for (i = 0; i < uPanelCount; i++) - { - CPLINFO CplInfo; - HICON hIcon; - TCHAR Name[MAX_PATH]; - int index; - LPTSTR pszCmd; - - pszCmd = (LPTSTR) HeapAlloc(hProcessHeap, 0, MAX_PATH * sizeof(TCHAR)); - if(!pszCmd) - return; - - /* Build the command, which is later passed to RunControlPanel */ - _tcscpy(pszCmd, fd.cFileName); - _tcscat(pszCmd, _T(" @")); - _itot(i, szPanelNum, 10); - _tcscat(pszCmd, szPanelNum); - - pFunc(hLisCtrl, CPL_INQUIRE, (LPARAM)i, (LPARAM)&CplInfo); - - hIcon = LoadImage(hDll, MAKEINTRESOURCE(CplInfo.idIcon), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); - index = ImageList_AddIcon(hImgListSmall, hIcon); - DestroyIcon(hIcon); - - hIcon = LoadImage(hDll, MAKEINTRESOURCE(CplInfo.idIcon), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR); - ImageList_AddIcon(hImgListLarge, hIcon); - DestroyIcon(hIcon); - - if (LoadString(hDll, CplInfo.idName, Name, MAX_PATH)) - { - INT nIndex; - LV_ITEM lvi = {0}; - - lvi.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE; - lvi.pszText = Name; - lvi.state = 0; - lvi.iImage = index; - lvi.lParam = (LPARAM)pszCmd; - nIndex = ListView_InsertItem(hLisCtrl, &lvi); - - if (LoadString(hDll, CplInfo.idInfo, Name, MAX_PATH)) - ListView_SetItemText(hLisCtrl, nIndex, 1, Name); - } - } - } - - if (!FindNextFile(hFind, &fd)) - hFind = INVALID_HANDLE_VALUE; - } - - (void)ListView_SetImageList(hLisCtrl, hImgListSmall, LVSIL_SMALL); - (void)ListView_SetImageList(hLisCtrl, hImgListLarge, LVSIL_NORMAL); -} - -LRESULT CALLBACK -MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - static HWND hListView; - TCHAR szBuf[1024]; - - switch (uMsg) - { - case WM_CREATE: - { - RECT rect; - LV_COLUMN column = {0}; - - GetClientRect(hWnd, &rect); - hListView = CreateWindow(WC_LISTVIEW, NULL, LVS_REPORT | LVS_ALIGNLEFT | LVS_SORTASCENDING | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD | WS_TABSTOP, 0, 0, rect.right, rect.bottom, hWnd, NULL, hInst, 0); - - column.mask = LVCF_FMT | LVCF_WIDTH | LVCF_SUBITEM | LVCF_TEXT; - column.fmt = LVCFMT_LEFT; - column.cx = (rect.right - rect.left) / 3; - column.iSubItem = 0; - LoadString(hInst, IDS_NAME, szBuf, sizeof(szBuf) / sizeof(TCHAR)); - column.pszText = szBuf; - (void)ListView_InsertColumn(hListView, 0, &column); - - column.cx = (rect.right - rect.left) - ((rect.right - rect.left) / 3) - 1; - column.iSubItem = 1; - LoadString(hInst, IDS_COMMENT, szBuf, sizeof(szBuf) / sizeof(TCHAR)); - column.pszText = szBuf; - (void)ListView_InsertColumn(hListView, 1, &column); - - PopulateCPLList(hListView); - - (void)ListView_SetColumnWidth(hListView, 2, LVSCW_AUTOSIZE_USEHEADER); - (void)ListView_Update(hListView, 0); - - SetFocus(hListView); - - return 0; - } - - case WM_DESTROY: - { - LV_ITEM lvi; - INT nItems; - - lvi.mask = LVIF_PARAM; - - /* Free the memory used for the command strings */ - for(nItems = ListView_GetItemCount(hListView); --nItems >= 0;) - { - lvi.iItem = nItems; - (void)ListView_GetItem(hListView, &lvi); - HeapFree(hProcessHeap, 0, (LPVOID)lvi.lParam); - } - - PostQuitMessage(0); - return 0; - } - - case WM_SIZE: - { - RECT rect; - - GetClientRect(hWnd, &rect); - MoveWindow(hListView, 0, 0, rect.right, rect.bottom, TRUE); - - return 0; - } - - case WM_NOTIFY: - { - NMHDR *phdr; - phdr = (NMHDR*)lParam; - - switch(phdr->code) - { - case NM_RETURN: - case NM_DBLCLK: - { - int nSelect; - LV_ITEM lvi = {0}; - LPTSTR pszCmd; - - nSelect = SendMessage(hListView, LVM_GETNEXTITEM, (WPARAM)-1, LVNI_FOCUSED); - - if (nSelect == -1) - { - /* no items */ - LoadString(hInst, IDS_NO_ITEMS, szBuf, sizeof(szBuf) / sizeof(TCHAR)); - MessageBox(hWnd, (LPCTSTR)szBuf, NULL, MB_OK | MB_ICONINFORMATION); - break; - } - - lvi.iItem = nSelect; - lvi.mask = LVIF_PARAM; - (void)ListView_GetItem(hListView, &lvi); - - pszCmd = (LPTSTR)lvi.lParam; - - if (pszCmd) - RunControlPanel(pszCmd); - - return 0; - } - } - } - - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDM_LARGEICONS: - SetWindowLong(hListView,GWL_STYLE,LVS_ICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD|WS_BORDER|WS_TABSTOP); - return 0; - - case IDM_SMALLICONS: - SetWindowLong(hListView,GWL_STYLE,LVS_SMALLICON | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD|WS_BORDER|WS_TABSTOP); - return 0; - - case IDM_LIST: - SetWindowLong(hListView,GWL_STYLE,LVS_LIST | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD|WS_BORDER|WS_TABSTOP); - return 0; - - case IDM_DETAILS: - SetWindowLong(hListView,GWL_STYLE,LVS_REPORT | LVS_ALIGNLEFT | LVS_AUTOARRANGE | LVS_SINGLESEL | WS_VISIBLE | WS_CHILD|WS_BORDER|WS_TABSTOP); - return 0; - - case IDM_CLOSE: - DestroyWindow(hWnd); - return 0; - - case IDM_ABOUT: - { - TCHAR Title[256]; - - LoadString(hInst, IDS_ABOUT, szBuf, sizeof(szBuf) / sizeof(TCHAR)); - LoadString(hInst, IDS_ABOUT_TITLE, Title, sizeof(Title) / sizeof(TCHAR)); - - MessageBox(hWnd, (LPCTSTR)szBuf, (LPCTSTR)Title, MB_OK | MB_ICONINFORMATION); - - return 0; - } - } - } - - return DefWindowProc(hWnd, uMsg, wParam, lParam); -} - - -static INT -RunControlPanelWindow(int nCmdShow) -{ - MSG msg; - HWND hMainWnd; - INITCOMMONCONTROLSEX icex; - WNDCLASSEX wcex = {0}; - TCHAR szBuf[256]; - - wcex.cbSize = sizeof(wcex); - wcex.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_MAINICON)); - wcex.lpszClassName = MYWNDCLASS; - wcex.lpfnWndProc = MyWindowProc; - RegisterClassEx(&wcex); - - icex.dwSize = sizeof(icex); - icex.dwICC = ICC_LISTVIEW_CLASSES; - InitCommonControlsEx(&icex); - - LoadString(hInst, IDS_WINDOW_TITLE, szBuf, sizeof(szBuf) / sizeof(TCHAR)); - - hMainWnd = CreateWindowEx(WS_EX_CLIENTEDGE, - MYWNDCLASS, - (LPCTSTR)szBuf, - WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, - CW_USEDEFAULT, - CW_USEDEFAULT, - CW_USEDEFAULT, - NULL, - LoadMenu(hInst, MAKEINTRESOURCE(IDM_MAINMENU)), - hInst, - 0); - if (!hMainWnd) - return 1; - - ShowWindow(hMainWnd, nCmdShow); - - while (GetMessage(&msg, 0, 0, 0)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - return 0; -} - int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { @@ -339,7 +47,7 @@
/* Show the control panel window if no argument or "panel" was passed */ if(lpCmdLine[0] == 0 || !_tcsicmp(lpCmdLine, _T("panel"))) - return RunControlPanelWindow(nCmdShow); + return OpenShellFolder(_T(""));
/* Check one of the built-in control panel handlers */ if (!_tcsicmp(lpCmdLine, _T("admintools"))) return OpenShellFolder(_T("\::{D20EA4E1-3957-11d2-A40B-0C5020524153}"));
Modified: trunk/reactos/base/applications/control/control.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/control/c... ============================================================================== --- trunk/reactos/base/applications/control/control.h [iso-8859-1] (original) +++ trunk/reactos/base/applications/control/control.h [iso-8859-1] Tue May 13 16:39:25 2008 @@ -7,14 +7,8 @@ */
#include <windows.h> -#include <commctrl.h> -#include <cpl.h> #include <tchar.h> - #include "resource.h" - -#define MYWNDCLASS _T("CTLPANELCLASS") -typedef LONG (CALLBACK *CPLAPPLETFUNC)(HWND hwndCPL, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
#define CCH_UINT_MAX 11 #define MAX_VALUE_NAME 16383
Modified: trunk/reactos/base/applications/control/control.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/control/c... ============================================================================== --- trunk/reactos/base/applications/control/control.rbuild [iso-8859-1] (original) +++ trunk/reactos/base/applications/control/control.rbuild [iso-8859-1] Tue May 13 16:39:25 2008 @@ -2,13 +2,9 @@ <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> <module name="control" type="win32gui" baseaddress="${BASEADDRESS_CONTROL}" installbase="system32" installname="control.exe" unicode="yes"> <include base="control">.</include> - <define name="_WIN32_IE">0x600</define> - <define name="_WIN32_WINNT">0x501</define> <library>advapi32</library> - <library>comctl32</library> <library>kernel32</library> <library>shell32</library> - <library>user32</library> <file>control.c</file> <file>control.rc</file> </module>
Modified: trunk/reactos/base/applications/control/control.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/control/c... ============================================================================== --- trunk/reactos/base/applications/control/control.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/control/control.rc [iso-8859-1] Tue May 13 16:39:25 2008 @@ -1,23 +1,8 @@ -//Microsoft Developer Studio generated resource script. -// #include "resource.h" -#include <windows.h>
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS System Control Panel\0" #define REACTOS_STR_INTERNAL_NAME "control\0" #define REACTOS_STR_ORIGINAL_FILENAME "control.exe\0" #include <reactos/version.rc>
- -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. IDI_MAINICON ICON DISCARDABLE "resources/config.ico" -///////////////////////////////////////////////////////////////////////////// - - -#include "rsrc.rc"
Modified: trunk/reactos/base/applications/control/resource.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/control/r... ============================================================================== --- trunk/reactos/base/applications/control/resource.h [iso-8859-1] (original) +++ trunk/reactos/base/applications/control/resource.h [iso-8859-1] Tue May 13 16:39:25 2008 @@ -1,31 +1,1 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by control.rc -// #define IDI_MAINICON 100 -#define IDM_MAINMENU 101 -#define IDM_LARGEICONS 40000 -#define IDM_SMALLICONS 40001 -#define IDM_LIST 40002 -#define IDM_DETAILS 40003 -#define IDM_ABOUT 40004 -#define IDM_CLOSE 40005 - -/* Strings */ -#define IDS_WINDOW_TITLE 5000 -#define IDS_ABOUT 5001 -#define IDS_ABOUT_TITLE 5002 -#define IDS_NO_ITEMS 5003 -#define IDS_NAME 5004 -#define IDS_COMMENT 5005 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40006 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif
Removed: trunk/reactos/base/applications/control/rsrc.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/control/r... ============================================================================== --- trunk/reactos/base/applications/control/rsrc.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/control/rsrc.rc (removed) @@ -1,36 +1,0 @@ - - -#include <windows.h> -#include "resource.h" - -/* define language neutral resources */ - -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL - -/* include localised resources */ -#include "lang/bg-BG.rc" -#include "lang/ca-ES.rc" -#include "lang/cs-CZ.rc" -#include "lang/da-DK.rc" -#include "lang/de-DE.rc" -#include "lang/el-GR.rc" -#include "lang/en-US.rc" -#include "lang/es-ES.rc" -#include "lang/fi-FI.rc" -#include "lang/fr-FR.rc" -#include "lang/hu-HU.rc" -#include "lang/id-ID.rc" -#include "lang/it-IT.rc" -#include "lang/ja-JP.rc" -#include "lang/ko-KO.rc" -#include "lang/lt-LT.rc" -#include "lang/nb-NO.rc" -#include "lang/nl-NL.rc" -#include "lang/pl-PL.rc" -#include "lang/pt-BR.rc" -#include "lang/ru-RU.rc" -#include "lang/sk-SK.rc" -#include "lang/sv-SE.rc" -#include "lang/th-TH.rc" -#include "lang/uk-UA.rc" -#include "lang/zh-CN.rc"