//////////////////////////////////////////////////////////////// // // this file is for global macros and global variables // macros in the first section, variables (and macros associated with those variabls in the second // (look for BEGIN GLOBALS // //////////////////////////////////////////////////////////////// // Map KERNEL32 unicode string functions to SHLWAPI #define lstrcmpW StrCmpW #define lstrcmpiW StrCmpIW #define lstrcpyW StrCpyW #define lstrcpynW StrCpyNW #define lstrcatW StrCatW #define c_szNULL TEXT("") #define c_szHelpFile TEXT("iexplore.hlp") #define MAX_TOOLTIP_STRING 80 // status bar pane numbers actually used to create the controls - in left-to-right order #define STATUS_PANES 6 #define STATUS_PANE_NAVIGATION 0 #define STATUS_PANE_PROGRESS 1 #define STATUS_PANE_OFFLINE 2 #define STATUS_PANE_PRINTER 2 // printer and offline share a spot #define STATUS_PANE_PRIVACY 3 #define STATUS_PANE_SSL 4 #define STATUS_PANE_ZONE 5 #define ZONES_PANE_WIDTH 220 // logical defines for grfKeyState bits #define FORCE_COPY (MK_CONTROL | MK_LBUTTON) // means copy #define FORCE_LINK (MK_LBUTTON | MK_CONTROL | MK_SHIFT) // means link // the only place ITB_MAX is really used is to make sure we don't have // one of the distinguished values (e.g. ITB_VIEW, for both correctness // and perf). technically that means we can have ITB_MAX = (INT_MAX - 1), // but 32000 ought to be plenty big enough and it's probably a bit safer // in terms of collisions w/ ITB_VIEW. #define ITB_MAX 32000 // max # #define ITB_CSTATIC 2 // statically allocated guys #define ITB_CGROW 2 // dynamic guys chunk size // CASSERT(ITB_CSTATIC % ITB_CGROW == 0); #define ISVISIBLE(hwnd) ((GetWindowStyle(hwnd) & WS_VISIBLE) == WS_VISIBLE) // this is for the file menus recently visited list. // it represents the count of entries both back and forward // that should be on the menu. #define CRECENTMENU_MAXEACH 5 // shorthand #ifndef ATOMICRELEASE #ifdef __cplusplus #define ATOMICRELEASET(p, type) { if(p) { type* punkT=p; p=NULL; punkT->Release();} } #else #define ATOMICRELEASET(p, type) { if(p) { type* punkT=p; p=NULL; punkT->lpVtbl->Release(punkT);} } #endif // doing this as a function instead of inline seems to be a size win. // #ifdef NOATOMICRELESEFUNC #define ATOMICRELEASE(p) ATOMICRELEASET(p, IUnknown) #else # ifdef __cplusplus # define ATOMICRELEASE(p) IUnknown_SafeReleaseAndNullPtr(p) # else # define ATOMICRELEASE(p) IUnknown_AtomicRelease((LPVOID*)&p) # endif #endif #endif //ATOMICRELEASE #ifdef SAFERELEASE #undef SAFERELEASE #endif #define SAFERELEASE(p) ATOMICRELEASE(p) #ifdef UNICODE typedef WCHAR TUCHAR, *PTUCHAR; #else /* UNICODE */ typedef unsigned char TUCHAR, *PTUCHAR; #endif /* UNICODE */ #define LoadMenuPopup(id) SHLoadMenuPopup(MLGetHinst(), id) #define PropagateMessage SHPropagateMessage #define MenuIndexFromID SHMenuIndexFromID #define Menu_RemoveAllSubMenus SHRemoveAllSubMenus #define _EnableMenuItem SHEnableMenuItem #define _CheckMenuItem SHCheckMenuItem #define REGSTR_PATH_EXPLORERA "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer" #define REGSTR_KEY_STREAMMRUA REGSTR_PATH_EXPLORERA "\\StreamMRU" #ifdef UNICODE #define REGSTR_KEY_STREAMMRU TEXT(REGSTR_PATH_EXPLORERA) TEXT("\\StreamMRU") #else // UNICODE #define REGSTR_KEY_STREAMMRU REGSTR_KEY_STREAMMRUA #endif // UNICODE /////////////////////////////////////////////////////////////////////////////// ///// BEGIN GLOBALS #ifdef __cplusplus extern "C" { /* Assume C declarations for C++. */ #endif /* __cplusplus */ extern HINSTANCE g_hinst; #define HINST_THISDLL g_hinst extern BOOL g_fRunningOnNT; extern BOOL g_bRunOnNT5; extern BOOL g_bRunOnMemphis; extern BOOL g_fRunOnFE; extern BOOL g_fRunOnWhistler; extern BOOL g_fIE; // // Is Mirroring APIs enabled (BiDi Memphis and NT5 only) // extern BOOL g_bMirroredOS; extern HINSTANCE g_hinst; #define HINST_THISDLL g_hinst #define SID_SDropBlocker CLSID_SearchBand #define FillExecInfo(_info, _hwnd, _verb, _file, _params, _dir, _show) \ (_info).hwnd = _hwnd; \ (_info).lpVerb = _verb; \ (_info).lpFile = _file; \ (_info).lpParameters = _params; \ (_info).lpDirectory = _dir; \ (_info).nShow = _show; \ (_info).fMask = 0; \ (_info).cbSize = sizeof(SHELLEXECUTEINFO); extern LCID g_lcidLocale; // // Globals (per-process) // extern LONG g_cThreads; extern LONG g_cModelessDlg; extern UINT g_tidParking; // parking thread extern HWND g_hDlgActive; extern UINT g_msgMSWheel; extern BOOL g_fShowCompColor; extern COLORREF g_crAltColor; extern HPALETTE g_hpalHalftone; extern const GUID CGID_PrivCITCommands; #ifdef __cplusplus }; /* End of extern "C" {. */ #endif /* __cplusplus */