- set the button states according to the service - Set the main and popup menus according to the current environment or service - allow viewing in list or icon mode too Modified: trunk/reactos/base/system/servman/En.rc Modified: trunk/reactos/base/system/servman/export.c Modified: trunk/reactos/base/system/servman/propsheet.c Modified: trunk/reactos/base/system/servman/query.c Modified: trunk/reactos/base/system/servman/resource.h Modified: trunk/reactos/base/system/servman/servman.c _____
Modified: trunk/reactos/base/system/servman/En.rc --- trunk/reactos/base/system/servman/En.rc 2006-01-31 22:41:45 UTC (rev 69) +++ trunk/reactos/base/system/servman/En.rc 2006-02-01 19:41:17 UTC (rev 70) @@ -2,54 +2,59 @@
BEGIN POPUP "&File" BEGIN - MENUITEM "E&xit",ID_EXIT + MENUITEM "E&xit", ID_EXIT END POPUP "Action" BEGIN - MENUITEM "Start",ID_START - MENUITEM "Stop",ID_STOP - MENUITEM "Pause",ID_PAUSE - MENUITEM "Resume",ID_RESUME - MENUITEM "Restart",ID_RESTART + MENUITEM "Start", ID_START, GRAYED + MENUITEM "Stop", ID_STOP, GRAYED + MENUITEM "Pause", ID_PAUSE, GRAYED + MENUITEM "Resume", ID_RESUME, GRAYED + MENUITEM "Restart", ID_RESTART, GRAYED MENUITEM SEPARATOR - MENUITEM "Refresh",ID_REFRESH + MENUITEM "Refresh", ID_REFRESH MENUITEM SEPARATOR - MENUITEM "Properties",ID_PROP + MENUITEM "Properties", ID_PROP, GRAYED END POPUP "View" BEGIN - MENUITEM "Customize",ID_VIEW_CUSTOMIZE + MENUITEM "Large Icons", ID_VIEW_LARGE + MENUITEM "Small Icons", ID_VIEW_SMALL + MENUITEM "List", ID_VIEW_LIST + MENUITEM "Details", ID_VIEW_DETAILS + MENUITEM SEPARATOR + MENUITEM "Customize", ID_VIEW_CUSTOMIZE, GRAYED END POPUP "Help" BEGIN - MENUITEM "About",ID_ABOUT + MENUITEM "About", ID_ABOUT END END IDR_POPUP MENU BEGIN POPUP "popup" BEGIN - MENUITEM "Start",ID_START - MENUITEM "Stop",ID_STOP - MENUITEM "Pause",ID_PAUSE - MENUITEM "Resume",ID_RESUME - MENUITEM "Restart",ID_RESTART + MENUITEM "Start", ID_START, GRAYED + MENUITEM "Stop", ID_STOP, GRAYED + MENUITEM "Pause", ID_PAUSE, GRAYED + MENUITEM "Resume", ID_RESUME, GRAYED + MENUITEM "Restart", ID_RESTART, GRAYED MENUITEM SEPARATOR POPUP "All tasks" BEGIN - MENUITEM "Start",ID_START - MENUITEM "Stop",ID_STOP - MENUITEM "Pause",ID_PAUSE - MENUITEM "Resume",ID_RESUME - MENUITEM "Restart",ID_RESTART - MENUITEM "Refresh",ID_REFRESH + MENUITEM "Start", ID_START, GRAYED + MENUITEM "Stop", ID_STOP, GRAYED + MENUITEM "Pause", ID_PAUSE, GRAYED + MENUITEM "Resume", ID_RESUME, GRAYED + MENUITEM "Restart", ID_RESTART, GRAYED + MENUITEM "Refresh", ID_REFRESH, GRAYED END MENUITEM SEPARATOR - MENUITEM "Refresh",ID_REFRESH + MENUITEM "Refresh", ID_REFRESH MENUITEM SEPARATOR - MENUITEM "Properties",ID_PROP + MENUITEM "Properties", ID_PROP MENUITEM SEPARATOR - MENUITEM "Help",ID_HELP + MENUITEM "Help", ID_HELP END END
@@ -58,7 +63,7 @@ FONT 8,"Tahoma",0,0 STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME BEGIN - LTEXT "Service Manager v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 130, 26 + LTEXT "Service Manager v0.3\nCopyright (C) 2005-2006\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 130, 26 PUSHBUTTON "Close", IDOK, 75, 162, 44, 15 ICON IDI_SM_ICON, IDC_STATIC, 10, 10, 7, 30 EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE @@ -74,10 +79,10 @@ EDITTEXT IDC_DESCRIPTION, 70, 46, 176, 24, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_MULTILINE | ES_READONLY EDITTEXT IDC_EXEPATH, 6, 86, 240, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_READONLY CONTROL "",IDC_START_TYPE,"ComboBox",0x50010003,70,107,176,11 - PUSHBUTTON "Start", IDC_START, 6, 155, 54, 15 - PUSHBUTTON "Stop", IDC_STOP, 68, 155, 54, 15 - PUSHBUTTON "Pause", IDC_PAUSE , 130, 155, 54, 15 - PUSHBUTTON "Resume", IDC_RESUME, 192, 155, 54, 15 + PUSHBUTTON "Start", IDC_START, 6, 155, 54, 15, WS_DISABLED + PUSHBUTTON "Stop", IDC_STOP, 68, 155, 54, 15, WS_DISABLED + PUSHBUTTON "Pause", IDC_PAUSE , 130, 155, 54, 15, WS_DISABLED + PUSHBUTTON "Resume", IDC_RESUME, 192, 155, 54, 15, WS_DISABLED LTEXT "Service name:", IDC_STATIC, 4, 11, 53, 11 LTEXT "Display name:", IDC_STATIC, 4, 29, 53, 11 LTEXT "Description:", IDC_STATIC, 4, 51, 53, 11 _____
Modified: trunk/reactos/base/system/servman/export.c --- trunk/reactos/base/system/servman/export.c 2006-01-31 22:41:45 UTC (rev 69) +++ trunk/reactos/base/system/servman/export.c 2006-02-01 19:41:17 UTC (rev 70) @@ -87,7 +87,8 @@
return; }
- MessageBox(NULL, _T("Export to file failed"), NULL, 0); + if (CommDlgExtendedError() != CDERR_GENERALCODES) + MessageBox(NULL, _T("Export to file failed"), NULL, 0); }
_____
Modified: trunk/reactos/base/system/servman/propsheet.c --- trunk/reactos/base/system/servman/propsheet.c 2006-01-31 22:41:45 UTC (rev 69) +++ trunk/reactos/base/system/servman/propsheet.c 2006-02-01 19:41:17 UTC (rev 70) @@ -29,6 +29,43 @@
+VOID SetButtonStates() +{ + HWND hButton; + ENUM_SERVICE_STATUS_PROCESS *Service = NULL; + DWORD Flags, State; + + /* get pointer to selected service */ + Service = GetSelectedService(); + + Flags = Service->ServiceStatusProcess.dwControlsAccepted; + State = Service->ServiceStatusProcess.dwCurrentState; + + if (State == SERVICE_STOPPED) + { + hButton = GetDlgItem(hwndGenDlg, IDC_START); + EnableWindow (hButton, TRUE); + } + + if ( (Flags & SERVICE_ACCEPT_STOP) && (State == SERVICE_RUNNING) ) + { + hButton = GetDlgItem(hwndGenDlg, IDC_STOP); + EnableWindow (hButton, TRUE); + } + + if ( (Flags & SERVICE_ACCEPT_PAUSE_CONTINUE) && (State == SERVICE_RUNNING) ) + { + hButton = GetDlgItem(hwndGenDlg, IDC_PAUSE); + EnableWindow (hButton, TRUE); + } + + if ( (Flags & SERVICE_ACCEPT_STOP) && (State == SERVICE_RUNNING) ) + { + hButton = GetDlgItem(hwndGenDlg, IDC_PAUSE); + EnableWindow (hButton, TRUE); + } +} + /* * Fills the 'startup type' combo box with possible * values and sets it to value of the selected item @@ -163,43 +200,60 @@ { case WM_INITDIALOG: GetDlgInfo(); + SetButtonStates(); + break;
- break; - case WM_COMMAND: switch(LOWORD(wParam)) { + case IDC_START_TYPE: + /* Enable the 'Apply' button */ + //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + break; + case IDC_START: SendMessage(hMainWnd, WM_COMMAND, ID_START, 0); - break; + break;
case IDC_STOP: SendMessage(hMainWnd, WM_COMMAND, ID_STOP, 0); - break; + break;
case IDC_PAUSE: SendMessage(hMainWnd, WM_COMMAND, ID_PAUSE, 0); - break; + break;
case IDC_RESUME: SendMessage(hMainWnd, WM_COMMAND, ID_RESUME, 0); - break; + break; + + case IDC_START_PARAM: + /* Enable the 'Apply' button */ + //PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + break; + } break;
case WM_DESTROY: - break; + break;
case WM_NOTIFY: { LPNMHDR lpnm = (LPNMHDR)lParam;
switch (lpnm->code) + { + case MCN_SELECT: + /* Enable the 'Apply' button */ + PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + break;
- default: + default: break; + } } - break; + break; }
return FALSE; _____
Modified: trunk/reactos/base/system/servman/query.c --- trunk/reactos/base/system/servman/query.c 2006-01-31 22:41:45 UTC (rev 69) +++ trunk/reactos/base/system/servman/query.c 2006-02-01 19:41:17 UTC (rev 70) @@ -414,206 +414,3 @@
return NumServices; } - - - - - - - - - - - -/* - //WORD wCodePage; - //WORD wLangID; - //SC_HANDLE hService; - //DWORD dwHandle, dwLen; - //UINT BufLen; - //TCHAR* lpData; - //TCHAR* lpBuffer; - //TCHAR szStrFileInfo[80]; - //TCHAR FileName[MAX_PATH]; - //LPVOID pvData; - - //LPSERVICE_FAILURE_ACTIONS pServiceFailureActions = NULL; - //LPQUERY_SERVICE_CONFIG pServiceConfig = NULL; - - BytesNeeded = 0; - hService = OpenService(ScHandle, - pServiceStatus[Index].lpServiceName, - SC_MANAGER_CONNECT); - if (hService != INVALID_HANDLE_VALUE) - { - / * check if service is required by the system* / - if (!QueryServiceConfig2(hService, - SERVICE_CONFIG_FAILURE_ACTIONS, - (LPBYTE)pServiceFailureActions, - 0, - &BytesNeeded)) - { - if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) - { - pServiceFailureActions = (LPSERVICE_FAILURE_ACTIONS) - HeapAlloc(GetProcessHeap(), 0, BytesNeeded); - if (pServiceFailureActions == NULL) - return FALSE; - - if (!QueryServiceConfig2(hService, - SERVICE_CONFIG_FAILURE_ACTIONS, - (LPBYTE)pServiceFailureActions, - BytesNeeded, - &BytesNeeded)) - { - HeapFree(GetProcessHeap(), 0, pServiceFailureActions); - return FALSE; - } - } - else / * exit on failure * / - { - return FALSE; - } - } - if (pServiceFailureActions->cActions) - { - if (pServiceFailureActions->lpsaActions[0].Type == SC_ACTION_REBOOT) - { - LoadString(hInstance, IDS_SERVICES_YES, szStatus, 128); - item.pszText = szStatus; - item.iSubItem = 1; - SendMessage(hListView, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); - } - } - - if (pServiceFailureActions != NULL) - { - HeapFree(GetProcessHeap(), 0, pServiceFailureActions); - pServiceFailureActions = NULL; - } - - / * get vendor of service binary * / - BytesNeeded = 0; - if (!QueryServiceConfig(hService, pServiceConfig, 0, &BytesNeeded)) - { - if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) - { - pServiceConfig = (LPQUERY_SERVICE_CONFIG) - HeapAlloc(GetProcessHeap(), 0, BytesNeeded); - if (pServiceConfig == NULL) - return FALSE; - - if (!QueryServiceConfig(hService, - pServiceConfig, - BytesNeeded, - &BytesNeeded)) - { - HeapFree(GetProcessHeap(), 0, pServiceConfig); - return FALSE; - } - } - else / * exit on failure * / - { - return FALSE; - } - } - - memset(&FileName, 0, MAX_PATH); - if (_tcscspn(pServiceConfig->lpBinaryPathName, _T("""))) - { - _tcsncpy(FileName, pServiceConfig->lpBinaryPathName, - _tcscspn(pServiceConfig->lpBinaryPathName, _T(" ")) ); - } - else - { - _tcscpy(FileName, pServiceConfig->lpBinaryPathName); - } - - HeapFree(GetProcessHeap(), 0, pServiceConfig); - pServiceConfig = NULL; - - dwLen = GetFileVersionInfoSize(FileName, &dwHandle); - if (dwLen) - { - lpData = (TCHAR*) HeapAlloc(GetProcessHeap(), 0, dwLen); - if (lpData == NULL) - return FALSE; - - if (!GetFileVersionInfo (FileName, dwHandle, dwLen, lpData)) { - HeapFree(GetProcessHeap(), 0, lpData); - return FALSE; - } - - if (VerQueryValue(lpData, _T("\VarFileInfo\Translation"), &pvData, (PUINT) &BufLen)) - { - wCodePage = LOWORD(*(DWORD*) pvData); - wLangID = HIWORD(*(DWORD*) pvData); - wsprintf(szStrFileInfo, _T("StringFileInfo\%04X%04X\CompanyName"), wCodePage, wLangID); - } - - if (VerQueryValue (lpData, szStrFileInfo, (LPVOID) &lpBuffer, (PUINT) &BufLen)) { - item.pszText = lpBuffer; - item.iSubItem = 2; - SendMessage(hListView, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); - } - HeapFree(GetProcessHeap(), 0, lpData); - } - else - { - LoadString(hInstance, IDS_SERVICES_UNKNOWN, szStatus, 128); - item.pszText = szStatus; - item.iSubItem = 2; - SendMessage(hListView, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); - } - CloseServiceHandle(hService); - } - - - - - - - - HeapFree(GetProcessHeap(), 0, pServiceConfig); - pServiceConfig = NULL; - - dwLen = GetFileVersionInfoSize(FileName, &dwHandle); - if (dwLen) - { - lpData = (TCHAR*) HeapAlloc(GetProcessHeap(), 0, dwLen); - if (lpData == NULL) - return FALSE; - - if (!GetFileVersionInfo (FileName, dwHandle, dwLen, lpData)) { - HeapFree(GetProcessHeap(), 0, lpData); - return FALSE; - } - - if (VerQueryValue(lpData, _T("\VarFileInfo\Translation"), - &pvData, (PUINT) &BufLen)) - { - wCodePage = LOWORD(*(DWORD*) pvData); - wLangID = HIWORD(*(DWORD*) pvData); - wsprintf(szStrFileInfo, _T("StringFileInfo\%04X%04X\CompanyName"), - wCodePage, wLangID); - } - - if (VerQueryValue (lpData, szStrFileInfo, (LPVOID) &lpBuffer, (PUINT) &BufLen)) - { - item.pszText = lpBuffer; - item.iSubItem = 2; - SendMessage(hListView, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); - } - HeapFree(GetProcessHeap(), 0, lpData); - } - else - { - LoadString(hInstance, IDS_SERVICES_UNKNOWN, szStatus, 128); - item.pszText = szStatus; - item.iSubItem = 2; - SendMessage(hListView, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); - } - - -*/ - _____
Modified: trunk/reactos/base/system/servman/resource.h --- trunk/reactos/base/system/servman/resource.h 2006-01-31 22:41:45 UTC (rev 69) +++ trunk/reactos/base/system/servman/resource.h 2006-02-01 19:41:17 UTC (rev 70) @@ -24,6 +24,10 @@
#define IDR_MAINMENU 102 #define IDR_POPUP 103 #define ID_VIEW_CUSTOMIZE 4021 +#define ID_VIEW_LARGE 4022 +#define ID_VIEW_SMALL 4023 +#define ID_VIEW_LIST 4024 +#define ID_VIEW_DETAILS 4025 #define ID_ABOUT 4031
/* List view columns */ _____
Modified: trunk/reactos/base/system/servman/servman.c --- trunk/reactos/base/system/servman/servman.c 2006-01-31 22:41:45 UTC (rev 69) +++ trunk/reactos/base/system/servman/servman.c 2006-02-01 19:41:17 UTC (rev 70) @@ -18,7 +18,7 @@
HWND hTool; HWND hProgDlg; HMENU hShortcutMenu; -INT SelectedItem; +INT SelectedItem = -1;
extern HWND hwndGenDlg;
@@ -28,7 +28,77 @@ return SelectedItem; }
+VOID SetView(DWORD View) +{ + DWORD Style = GetWindowLong(hListView, GWL_STYLE);
+ if ((Style & LVS_TYPEMASK) != View) + SetWindowLong(hListView, GWL_STYLE, (Style & ~LVS_TYPEMASK) | View); +} + + +VOID SetMenuAndButtonStates() +{ + HMENU hMainMenu; + ENUM_SERVICE_STATUS_PROCESS *Service = NULL; + DWORD Flags, State; + + /* get handle to menu */ + hMainMenu = GetMenu(hMainWnd); + + /* set all to greyed */ + EnableMenuItem(hMainMenu, ID_START, MF_GRAYED); + EnableMenuItem(hMainMenu, ID_STOP, MF_GRAYED); + EnableMenuItem(hMainMenu, ID_PAUSE, MF_GRAYED); + EnableMenuItem(hMainMenu, ID_RESUME, MF_GRAYED); + EnableMenuItem(hMainMenu, ID_RESTART, MF_GRAYED); + + EnableMenuItem(hShortcutMenu, ID_START, MF_GRAYED); + EnableMenuItem(hShortcutMenu, ID_STOP, MF_GRAYED); + EnableMenuItem(hShortcutMenu, ID_PAUSE, MF_GRAYED); + EnableMenuItem(hShortcutMenu, ID_RESUME, MF_GRAYED); + EnableMenuItem(hShortcutMenu, ID_RESTART, MF_GRAYED); + + //EnableWindow(hTool, FALSE); + + if (GetSelectedItem() != -1) + { + /* get pointer to selected service */ + Service = GetSelectedService(); + + Flags = Service->ServiceStatusProcess.dwControlsAccepted; + State = Service->ServiceStatusProcess.dwCurrentState; + + if (State == SERVICE_STOPPED) + { + EnableMenuItem(hMainMenu, ID_START, MF_ENABLED); + EnableMenuItem(hShortcutMenu, ID_START, MF_ENABLED); + } + + if ( (Flags & SERVICE_ACCEPT_STOP) && (State == SERVICE_RUNNING) ) + { + EnableMenuItem(hMainMenu, ID_STOP, MF_ENABLED); + EnableMenuItem(hShortcutMenu, ID_STOP, MF_ENABLED); + } + + if ( (Flags & SERVICE_ACCEPT_PAUSE_CONTINUE) && (State == SERVICE_RUNNING) ) + { + EnableMenuItem(hMainMenu, ID_PAUSE, MF_ENABLED); + EnableMenuItem(hShortcutMenu, ID_PAUSE, MF_ENABLED); + } + + if ( (Flags & SERVICE_ACCEPT_STOP) && (State == SERVICE_RUNNING) ) + { + EnableMenuItem(hMainMenu, ID_RESTART, MF_ENABLED); + EnableMenuItem(hShortcutMenu, ID_RESTART, MF_ENABLED); + } + } + else + EnableMenuItem(hMainMenu, ID_PROP, MF_GRAYED); + +} + + LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) @@ -83,6 +153,7 @@ MessageBox(hwnd, _T("Could not create tool bar."), _T("Error"), MB_OK | MB_ICONERROR);
/* Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility */ + SendMessage(hTool, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
/* Add custom images */ @@ -249,9 +320,28 @@ case LVN_ITEMCHANGED: { LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam; + ENUM_SERVICE_STATUS_PROCESS *Service = NULL; + HMENU hMainMenu;
+ /* get handle to menu */ + hMainMenu = GetMenu(hMainWnd); + + /* activate properties menu item, if not already */ + if (GetMenuState(hMainMenu, ID_PROP, MF_BYCOMMAND) != MF_ENABLED) + EnableMenuItem(hMainMenu, ID_PROP, MF_ENABLED); + + /* globally set selected service */ SelectedItem = pnmv->iItem;
+ /* alter options for the service */ + SetMenuAndButtonStates(); + + /* get pointer to selected service */ + Service = GetSelectedService(); + + /* set current selected service in the status bar */ + SendMessage(hStatus, SB_SETTEXT, 1, (LPARAM)Service->lpDisplayName); + } break;
@@ -334,12 +424,21 @@ switch(LOWORD(wParam)) { case ID_PROP: - OpenPropSheet(hwnd); + if (GetSelectedItem() != -1) + OpenPropSheet(hwnd);
break;
case ID_REFRESH: RefreshServiceList(); + SelectedItem = -1; + + /* disable menus and buttons */ + SetMenuAndButtonStates(); + + /* clear the service in the status bar */ + SendMessage(hStatus, SB_SETTEXT, 1, _T('\0')); + break;
case ID_EXPORT: @@ -356,7 +455,9 @@
case ID_START: { - + ENUM_SERVICE_STATUS_PROCESS *Service = NULL; + TCHAR ProgDlgBuf[100]; + /* open the progress dialog */ hProgDlg = CreateDialog(GetModuleHandle(NULL),
MAKEINTRESOURCE(IDD_DLG_PROGRESS), @@ -364,9 +465,6 @@
(DLGPROC)ProgressDialogProc); if (hProgDlg != NULL) { - ENUM_SERVICE_STATUS_PROCESS *Service = NULL; - TCHAR ProgDlgBuf[100]; - ShowWindow(hProgDlg, SW_SHOW);
/* write the info to the progress dialog */ @@ -385,11 +483,10 @@
if ( DoStartService(hProgDlg) ) { - LVITEM item; TCHAR szStatus[64]; TCHAR buf[25]; - + LoadString(hInstance, IDS_SERVICES_STARTED, szStatus, sizeof(szStatus) / sizeof(TCHAR)); item.pszText = szStatus; @@ -414,6 +511,9 @@
case ID_STOP: { + ENUM_SERVICE_STATUS_PROCESS *Service = NULL; + TCHAR ProgDlgBuf[100]; + /* open the progress dialog */ hProgDlg = CreateDialog(GetModuleHandle(NULL),
MAKEINTRESOURCE(IDD_DLG_PROGRESS), @@ -421,9 +521,6 @@
(DLGPROC)ProgressDialogProc); if (hProgDlg != NULL) { - ENUM_SERVICE_STATUS_PROCESS *Service = NULL; - TCHAR ProgDlgBuf[100]; - ShowWindow(hProgDlg, SW_SHOW);
/* write the info to the progress dialog */ @@ -442,11 +539,10 @@
if( Control(hProgDlg, SERVICE_CONTROL_STOP) ) { - LVITEM item; TCHAR buf[25];
- item.pszText = '\0'; + item.pszText = _T('\0'); item.iItem = GetSelectedItem(); item.iSubItem = 2; SendMessage(hListView, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); @@ -488,6 +584,22 @@ PostMessage(hwnd, WM_CLOSE, 0, 0); break;
+ case ID_VIEW_LARGE: + SetView(LVS_ICON); + break; + + case ID_VIEW_SMALL: + SetView(LVS_SMALLICON); + break; + + case ID_VIEW_LIST: + SetView(LVS_LIST); + break; + + case ID_VIEW_DETAILS: + SetView(LVS_REPORT); + break; + case ID_VIEW_CUSTOMIZE: break;
@@ -496,7 +608,7 @@ MAKEINTRESOURCE(IDD_ABOUTBOX), hMainWnd, (DLGPROC)AboutDialogProc); - break; + break;
} break;