X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=base%2Fapplications%2Ftaskmgr%2Ftaskmgr.c;h=6778db3893159e616ba1855f189f0e6f51322f23;hp=3f8bcbd9a4a9c1b0412e70b80714a90a64eb649a;hb=b726d7355f0aa394852fa8c56e59cfc9bbc4293c;hpb=cd5c660bf9f83899a890666c30d7767f0e7659d7 diff --git a/base/applications/taskmgr/taskmgr.c b/base/applications/taskmgr/taskmgr.c index 3f8bcbd9a4a..6778db38931 100644 --- a/base/applications/taskmgr/taskmgr.c +++ b/base/applications/taskmgr/taskmgr.c @@ -1,7 +1,7 @@ /* * ReactOS Task Manager * - * TaskMgr.c : Defines the entry point for the application. + * taskmgr.c : Defines the entry point for the application. * * Copyright (C) 1999 - 2001 Brian Palmer * 2005 Klemens Friedl @@ -396,6 +396,12 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) case WM_MENUSELECT: TaskManager_OnMenuSelect(hDlg, LOWORD(wParam), HIWORD(wParam), (HMENU)lParam); break; + case WM_SYSCOLORCHANGE: + /* Forward WM_SYSCOLORCHANGE to common controls */ + SendMessage(hApplicationPageListCtrl, WM_SYSCOLORCHANGE, 0, 0); + SendMessage(hProcessPageListCtrl, WM_SYSCOLORCHANGE, 0, 0); + SendMessage(hProcessPageHeaderCtrl, WM_SYSCOLORCHANGE, 0, 0); + break; } return 0; @@ -856,11 +862,6 @@ void TaskManager_OnViewUpdateSpeed(DWORD dwSpeed) SetUpdateSpeed(hMainWnd); } -void TaskManager_OnViewRefresh(void) -{ - PostMessageW(hMainWnd, WM_TIMER, 0, 0); -} - void TaskManager_OnTabWndSelChange(void) { int i; @@ -869,6 +870,7 @@ void TaskManager_OnTabWndSelChange(void) HMENU hViewMenu; HMENU hSubMenu; WCHAR szTemp[256]; + SYSTEM_INFO sysInfo; hMenu = GetMenu(hMainWnd); hViewMenu = GetSubMenu(hMenu, 2); @@ -947,16 +949,28 @@ void TaskManager_OnTabWndSelChange(void) DeleteMenu(hMenu, 3, MF_BYPOSITION); DrawMenuBar(hMainWnd); } - hSubMenu = CreatePopupMenu(); - LoadStringW(hInst, IDS_MENU_ONEGRAPHALLCPUS, szTemp, 256); - AppendMenuW(hSubMenu, MF_STRING, ID_VIEW_CPUHISTORY_ONEGRAPHALL, szTemp); + GetSystemInfo(&sysInfo); + + /* Hide CPU graph options on single CPU systems */ + if (sysInfo.dwNumberOfProcessors > 1) + { + hSubMenu = CreatePopupMenu(); + + LoadStringW(hInst, IDS_MENU_ONEGRAPHALLCPUS, szTemp, 256); + AppendMenuW(hSubMenu, MF_STRING, ID_VIEW_CPUHISTORY_ONEGRAPHALL, szTemp); + + LoadStringW(hInst, IDS_MENU_ONEGRAPHPERCPU, szTemp, 256); + AppendMenuW(hSubMenu, MF_STRING, ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU, szTemp); - LoadStringW(hInst, IDS_MENU_ONEGRAPHPERCPU, szTemp, 256); - AppendMenuW(hSubMenu, MF_STRING, ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU, szTemp); + LoadStringW(hInst, IDS_MENU_CPUHISTORY, szTemp, 256); + AppendMenuW(hViewMenu, MF_STRING|MF_POPUP, (UINT_PTR) hSubMenu, szTemp); - LoadStringW(hInst, IDS_MENU_CPUHISTORY, szTemp, 256); - AppendMenuW(hViewMenu, MF_STRING|MF_POPUP, (UINT_PTR) hSubMenu, szTemp); + if (TaskManagerSettings.CPUHistory_OneGraphPerCPU) + CheckMenuRadioItem(hSubMenu, ID_VIEW_CPUHISTORY_ONEGRAPHALL, ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU, ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU, MF_BYCOMMAND); + else + CheckMenuRadioItem(hSubMenu, ID_VIEW_CPUHISTORY_ONEGRAPHALL, ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU, ID_VIEW_CPUHISTORY_ONEGRAPHALL, MF_BYCOMMAND); + } LoadStringW(hInst, IDS_MENU_SHOWKERNELTIMES, szTemp, 256); AppendMenuW(hViewMenu, MF_STRING, ID_VIEW_SHOWKERNELTIMES, szTemp); @@ -965,10 +979,7 @@ void TaskManager_OnTabWndSelChange(void) CheckMenuItem(hViewMenu, ID_VIEW_SHOWKERNELTIMES, MF_BYCOMMAND|MF_CHECKED); else CheckMenuItem(hViewMenu, ID_VIEW_SHOWKERNELTIMES, MF_BYCOMMAND|MF_UNCHECKED); - if (TaskManagerSettings.CPUHistory_OneGraphPerCPU) - CheckMenuRadioItem(hSubMenu, ID_VIEW_CPUHISTORY_ONEGRAPHALL, ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU, ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU, MF_BYCOMMAND); - else - CheckMenuRadioItem(hSubMenu, ID_VIEW_CPUHISTORY_ONEGRAPHALL, ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU, ID_VIEW_CPUHISTORY_ONEGRAPHALL, MF_BYCOMMAND); + /* * Give the tab control focus */ @@ -1002,3 +1013,27 @@ LPWSTR GetLastErrorText(LPWSTR lpszBuf, DWORD dwSize) } return lpszBuf; } + +DWORD EndLocalThread(HANDLE *hThread, DWORD dwThread) +{ + DWORD dwExitCodeThread = 0; + + if (*hThread != NULL) { + PostThreadMessage(dwThread,WM_QUIT,0,0); + for (;;) { + MSG msg; + + if (WAIT_OBJECT_0 == WaitForSingleObject(*hThread, 500)) + break; + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + GetExitCodeThread(*hThread, &dwExitCodeThread); + CloseHandle(*hThread); + *hThread = NULL; + } + return dwExitCodeThread; +} +