Windows2000/private/shell/applets/taskmgr/precomp.h
2020-09-30 17:12:32 +02:00

297 lines
6.4 KiB
C++

// TaskMan - NT TaskManager
// Copyright (C) Microsoft
// File: Precomp.H
// History: Nov-10-95 DavePl Created
// Warnings turned off to appease our header files
#pragma warning(disable:4201) // Nameless struct or union
#pragma warning(disable:4100) // Unreferenced formal parameter
#pragma warning(disable:4514) // Unreferenced inline func removed
#define STRICT
#ifndef UNICODE
#define UNICODE
#endif
#ifndef _UNICODE
#define _UNICODE
#endif
extern "C"
{
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <ntexapi.h>
}
#include <windows.h>
#include <windowsx.h>
#include <winuserp.h>
#include <commctrl.h>
#include <comctrlp.h>
#include <shlobj.h>
#include <shlobjp.h>
#include <vdmdbg.h>
#include <ccstock.h>
inline void * __cdecl operator new(size_t size)
{
return (void *)LocalAlloc(LPTR, size);
}
inline void __cdecl operator delete(void *ptr)
{
LocalFree(ptr);
}
extern "C" inline __cdecl _purecall(void) {return 0;}
#ifndef ARRAYSIZE
#define ARRAYSIZE(x) ((sizeof(x) / sizeof(x[0])))
#endif
// Global data externs
#define PWM_TRAYICON WM_USER + 10
#define PWM_ACTIVATE WM_USER + 11
#define DEFSPACING_BASE 3
#define INNERSPACING_BASE 2
#define TOPSPACING_BASE 10
extern long g_DefSpacing;
extern long g_InnerSpacing;
extern long g_TopSpacing;
#define MAX_PROCESSOR 32
#define HIST_SIZE 2000 // Number of data points to track
// in the history windows
extern HINSTANCE g_hInstance;
extern HWND g_hMainWnd;
extern HDESK g_hMainDesktop;
extern DWORD g_cTasks;
extern DWORD g_cProcesses;
extern BYTE g_cProcessors;
extern BYTE g_CPUUsage;
extern DWORD g_MEMUsage;
extern DWORD g_MEMMax;
extern HMENU g_hMenu;
extern BYTE g_CPUUsage;
extern BYTE * g_pCPUHistory[MAX_PROCESSOR];
extern BYTE * g_pKernelHistory[MAX_PROCESSOR];
extern BOOL g_fInPopup;
extern TCHAR g_szK[];
extern TCHAR g_szRealtime[];
extern TCHAR g_szNormal[];
extern TCHAR g_szHigh[];
extern TCHAR g_szLow[];
extern TCHAR g_szUnknown[];
extern TCHAR g_szAboveNormal[];
extern TCHAR g_szBelowNormal[];
extern TCHAR g_szHung[];
extern TCHAR g_szRunning[];
extern TCHAR g_szfmtCPUNum[];
extern TCHAR g_szfmtCPU[];
extern TCHAR g_szTotalCPU[];
extern TCHAR g_szKernelCPU[];
extern TCHAR g_szMemUsage[];
extern HBITMAP g_hbmpBack;
extern HBITMAP g_hbmpForward;
extern HICON g_aTrayIcons[];
extern UINT g_cTrayIcons;
class COptions;
extern COptions g_Options;
// Prototypes
void CalcCpuTime(BOOL); // perfpage.cpp
BYTE InitPerfInfo(); // perfpage.cpp
void ReleasePerfInfo(); // perfpage.cpp
void DisplayFailureMsg(HWND hWnd, UINT idTitle, DWORD dwError); // main.cpp
BOOL CreateNewDesktop(); // main.cpp
void ShowRunningInstance();
HMENU LoadPopupMenu(HINSTANCE hinst, UINT id); // main.cpp
BOOL CheckParentDeferrals(UINT uMsg, WPARAM wParam, LPARAM lParam);
void Tray_NotifyIcon(HWND hWnd, // trayicon.cpp
UINT uCallbackMessage,
DWORD Message,
HICON hIcon,
LPCTSTR lpTip);
void Tray_Notify(HWND hWnd, WPARAM wParam, LPARAM lParam);
void UpdateTrayIcon(HWND hWnd);
#include "taskmgr.h"
#include "resource.h"
#include "pages.h"
#include "ptrarray.h"
/*++ ShiftArrayWorker
Routine Description:
Shifts a section of an array up or down. If shifting
down, the given element is lost. For up, an empty slot
(with an undefined value) is opened.
Arguments:
pArray - Array starting address
cbArraySize - Size of Array (in BYTES)
cElementSize - Size of array elements
iFirstElement - First element to move
Direction - SHIFT_UP or SHIFT_DOWN
Return Value:
None. No error checking either. Should compile out to
a movememory
Notes:
Call this with the ShiftArray macro which does the size
calcs for you
Revision History:
Jan-26-95 Davepl Created
*/
#define ShiftArray(array, index, direction) \
\
ShiftArrayWorker((LPBYTE) array, sizeof(array), sizeof(array[0]), index, direction)
typedef enum SHIFT_DIRECTION { SHIFT_UP, SHIFT_DOWN };
static inline void ShiftArrayWorker(const LPBYTE pArray,
const size_t cbArraySize,
const size_t cElementSize,
const UINT iFirstElement,
const SHIFT_DIRECTION Direction)
{
ASSERT( ((cbArraySize / cElementSize) * cElementSize) == cbArraySize);
ASSERT( (iFirstElement + 1) * cElementSize <= cbArraySize );
const LPBYTE pFirst = pArray + (iFirstElement * cElementSize);
const LPBYTE pLast = pArray + cbArraySize - cElementSize;
const UINT cBytesToMove = (UINT)(pLast - pFirst);
ASSERT (pLast >= pFirst);
if (cBytesToMove)
{
if (SHIFT_DOWN == Direction)
{
CopyMemory(pFirst, pFirst + cElementSize, cBytesToMove);
}
else
{
ASSERT(Direction == SHIFT_UP);
CopyMemory(pFirst + cElementSize, pFirst, cBytesToMove);
}
}
}
// Member: dprintf
// Synopsis: Dumps a printf style string to the debugger.
// Notes:
// History: 2-07-95 davepl Created
#if DBG
#define DEBUG 1
#endif
#ifdef DEBUG
inline int dprintf(LPCTSTR szFormat, ...)
{
TCHAR szBuffer[MAX_PATH];
va_list vaList;
va_start(vaList, szFormat);
int retval = wvsprintf(szBuffer, szFormat, vaList);
OutputDebugString(szBuffer);
va_end (vaList);
return retval;
}
#else
inline int dprintf(LPCTSTR, ...)
{
return 0;
}
#endif
// Assert
#ifdef Assert
#undef Assert
#endif
#ifdef DEBUG
#define Assert(x) (x) ? 0 : ( dprintf(TEXT("[ TASKMAN ] ASSERT FAILED: ") \
TEXT( #x ) \
TEXT("\n Code -> %S, line %d\n"), __FILE__, __LINE__),\
DebugBreak(), \
0 );
#else
#define Assert(x)
#endif
// Verify
#if DEBUG
#define VERIFY(x) Assert(x)
#else
#define VERIFY(x) (x)
#endif
#ifdef ASSERT
#undef ASSERT
#endif
#define ASSERT(x) Assert(x)
#pragma hdrstop