// Copyright (C) 1996-1997 Microsoft Corporation. All rights reserved. #ifndef __HEADER_H__ #define __HEADER_H__ #ifndef STRICT #define STRICT #endif #ifndef INLINE #define INLINE __inline // Remove for profiling #endif #define MAX_TOPIC_NAME 256 #define MAX_STRING_RESOURCE_LEN 256 #define STRING_SEP_CHAR '|' const int MAX_FLAGS = 3; const char CH_MACRO = '!'; // means a macro in a .hhc file typedef unsigned long HASH; #define _WINUSERP_ // so winuserp.h doesn't get pulled (which causes fatal errors) //////////////////////////////////// Includes /////////////////////////////// // Don't mess with the order header files are included #include #include #include #include #include #include #include "IPServer.h" #define NO_SHLWAPI_PATH #define NO_SHLWAPI_REG #define NO_SHLWAPI_STREAM #define NO_SHLWAPI_GDI #include // // W2K contants which aren't in our headers. // #ifndef WM_CHANGEUISTATE //--- New messages in NT5 only. #define WM_CHANGEUISTATE 0x0127 #define WM_UPDATEUISTATE 0x0128 #define WM_QUERYUISTATE 0x0129 //--- LOWORD(wParam) values in WM_*UISTATE. #define UIS_SET 1 #define UIS_CLEAR 2 #define UIS_INITIALIZE 3 //--- HIWORD(wParam) values in WM_*UISTATE #define UISF_HIDEFOCUS 0x1 #define UISF_HIDEACCEL 0x2 #endif // Debugging Support Class --- ClassObjectCount #include "objcnt.h" #undef StrChr #undef StrRChr #include "unicode.h" #include "funcs.h" #include "cstr.h" #include "shared.h" #include "lcmem.h" #include "ctable.h" #include "wmp.h" // Language Information #include "language.h" // Get the ATL includes. #include "atlinc.h" #ifdef HHCTRL // Include the definitions for HTML Help API #include "htmlhelp.h" // Include out global resource cache #include "rescache.h" #endif ///////////////////////////////////////////////////////////////////////////// // map as many CRT functions to Win32, ShlWAPI, or private functions as we can // // UNICODE #define wcscat StrCatW #define wcscpy StrCpyW #define _wcscpy StrCpyW #define wcsncpy StrCpyNW #define _wcsncpy StrCpyNW #define wcscmp StrCmpW #define _wcscmp StrCmpW #define wcsicmp StrCmpIW #define _wcsicmp StrCmpIW #define wcsnicmp StrCmpNIW #define wcslen lstrlenW // intrinsics -- no need to map these // #define strcat lstrcatA // #define strlen lstrlenA // #define strcpy lstrcpyA // #define strcmp lstrcmpA // ANSI #define StrChr StrChrA #define strchr StrChrA #define strncpy lstrcpynA #define stricmp lstrcmpiA #define _stricmp lstrcmpiA #define strcmpi lstrcmpiA #define _strcmpi lstrcmpiA #define strncmp StrCmpNA #define strnicmp StrCmpNIA #define _strnicmp StrCmpNIA #define strstr StrStrA #define stristr StrStrIA // #define strncat StrCatN --> not supported in IE3 shlwapi // MISC #define splitpath SplitPath #define _splitpath SplitPath #define atoi Atoi #define isspace IsSpace #define strpbrk StrPBrk #define qsort QSort #define tolower ToLower #define strrchr StrRChr #ifdef _DEBUG #define STATIC // because icecap doesn't believe in static functions #else #define STATIC static #endif // the length of a guid once printed out with -'s, leading and trailing bracket, // plus 1 for NULL const int GUID_STR_LEN = 40; typedef enum { ACT_NOTHING, ACT_ABOUT_BOX, ACT_CONTENTS, ACT_INDEX, ACT_RELATED_TOPICS, ACT_TEXT_POPUP, ACT_WINHELP, ACT_HHCTRL_VERSION, ACT_SPLASH, ACT_SHORTCUT, ACT_CLOSE, ACT_MINIMIZE, ACT_MAXIMIZE, ACT_KEYWORD_SEARCH, ACT_TCARD, // data stored in m_pszActionData, not m_ptblItems ACT_HHWIN_PRINT, // tell hhwin to print the current frameset ACT_KLINK, ACT_ALINK, ACT_SAMPLE, } CTRL_ACTION; // The type of image to display for the control typedef enum { IMG_BITMAP, IMG_CHILD_WINDOW, IMG_TEXT, IMG_RELATED, // Related topics IMG_BUTTON, } IMAGE_TYPE; enum THRD_COMMAND { THRD_ANY, THRD_TERMINATE, }; typedef enum { SK_SET, SK_CUR, SK_END } SEEK_TYPE; #define CH_OPEN_PAREN '(' #define CH_CLOSE_PAREN ')' #define CH_COLON ':' #define CH_SEMICOLON ';' #define CH_START_QUOTE '`' #define CH_END_QUOTE '\'' #define CH_QUOTE '"' #define CH_BACKSLASH '\\' #define CH_FORWARDSLASH '/' #define CH_EQUAL '=' #define CH_SPACE ' ' #define CH_COMMA ',' #define CH_LEFT_BRACKET '[' #define CH_RIGHT_BRACKET ']' #define CH_TAB '\t' // Same errors as used by hha.dll typedef enum { // File System errors FSERR_NONE = 0, // no error FSERR_CANCELLED, // user cancelled FSERR_CANT_OPEN, // can't open file FSERR_CANT_READ, // error while reading the file FSERR_CANT_WRITE, // error while writing to the file FSERR_INVALID_FORMAT, // invalid file format FSERR_TRUNCATED, // file is truncated FSERR_INSF_MEMORY, // insuficient global memory FSERR_INTERNAL, // internal error FSERR_24BIT_NOT_SUPPORTED, // not supported by this file format FSERR_REALLY_A_BMP, // This is really a BMP file. FSERR_MONO_NOT_SUPPORTED, FSERR_256_NOT_SUPPORTED, FSERR_NOROOM_FOR_TMP, // insufficient room in windows directory FSERR_NON_FLASH_EPS, // not a Flash EPS file FSERR_GETDIBITS_FAILURE, FSERR_ACCESS_DENIED, FSERR_INS_FILE_HANDLES, FSERR_INVALID_PATH, FSERR_FILE_NOT_FOUND, FSERR_DISK_FULL, FSERR_UNSUPPORTED_FORMAT, FSERR_UNSUPPORTED_GIF_FORMAT, FSERR_INVALID_GIF_COLOR, FSERR_UNSUPPORTED_GIF_EXTENSION, FSERR_CORRUPTED_FILE, FSERR_TRY_FILTER, // native doesn't support, so use filter FSERR_UNSUPPORTED_JPEG, FSERR_UNSUPPORTED_OUTPUT_FORMAT, } FSERR; #define MAX_SS_NAME_LEN 51 // 50 char limit + NULL #define TAMSG_IE_ACCEL 1 #define TAMSG_TAKE_FOCUS 2 #define TAMSG_NOT_IE_ACCEL 3 #define ANY_PROCESS_ID 0 #define WS_EX_LAYOUT_RTL 0x00400000L // Right to left mirroring (Win98 and NT5 only) extern DWORD g_RTL_Style; // additional windows style for RTL layout (all platforms) extern DWORD g_RTL_Mirror_Style; // additional windows style for RTL mirroring extern BOOL g_fThreadRunning; // TRUE if our thread is doing something extern HANDLE g_hsemNavigate; extern const CLSID *g_pLibid; extern BOOL g_fMachineHasLicense; extern BOOL g_fCheckedForLicense; extern BOOL g_fServerHasTypeLibrary; extern HWND g_hwndParking; extern BOOL g_fDualCPU; // -1 until initialized, then TRUE or FALSE extern CRITICAL_SECTION g_CriticalSection; extern HINSTANCE g_hinstOcx; extern HBRUSH g_hbrBackGround; // background brush extern HBITMAP g_hbmpSplash; extern HPALETTE g_hpalSplash; extern HWND g_hwndSplash; extern int g_cWindowSlots; // current number of allocated window slots extern int g_curHmData; extern int g_cHmSlots; extern UINT g_fuBiDiMessageBox; extern BOOL g_fCoInitialized; // means we called CoInitialize() extern VARIANT_BOOL g_fHaveLocale; extern LCID g_lcidLocale; extern BOOL g_fSysWin95; // we're under Win95 system, not just NT SUR extern BOOL g_fSysWinNT; // we're under some form of Windows NT extern BOOL g_fSysWin95Shell; // we're under Win95 or Windows NT SUR { > 3/51) extern BOOL g_bWinNT5; // we're under NT5 extern BOOL g_bWin98; // we're under Win98 extern BOOL g_fBiDi; // TRUE if this is a BiDi system extern BOOL g_bBiDiUi; // TRUE when we have a localized Hebrew or Arabic UI extern BOOL g_bArabicUi; // TRUE when we have a Arabic UI extern BOOL g_fRegisteredSpash; // TRUE if Splash window has been registered extern BOOL g_fNonFirstKey; // accept keyboard entry for non-first level index keys extern BOOL g_bMsItsMonikerSupport; // "ms-its:" moniker supported starting with IE 4 extern BOOL g_fIE3; // affects which features we can support extern BOOL g_fDBCSSystem; extern LCID g_lcidSystem; // Only used for input to CompareString. used in util.cpp stristr() extern LANGID g_langSystem; // used only by fts.cpp, ipserver.cpp and rescache.cpp extern const char g_szLibName[]; extern const CLSID *g_pLibid; extern CTable* g_ptblItems; extern const char g_szReflectClassName[]; // "CtlFrameWork_ReflectWindow"; extern UINT MSG_MOUSEWHEEL; extern const char txtInclude[]; // ":include"; extern const char txtFileHeader[]; // "file:"; extern const char txtHttpHeader[]; // "http:"; extern const char txtFtpHeader[]; // "ftp:"; extern const char txtZeroLength[]; // ""; extern const char txtHtmlHelpWindowClass[]; extern const char txtHtmlHelpChildWindowClass[]; extern const char txtSizeBarChildWindowClass[]; extern const char txtSysRoot[]; extern const char txtMkStore[]; // "mk:@MSITStore:"; extern const char txtItsMoniker[]; // "its:"; extern const char txtMsItsMoniker[]; // "ms-its:"; extern const char txtHlpDir[]; // "Help"; extern const char txtOpenCmd[]; // "htmlfile\\shell\\open\\command"; extern const char txtDoubleColonSep[]; // "::"; extern const char txtSepBack[]; // "::/"; extern const char txtDefExtension[]; // ".chm"; extern const char txtCollectionExtension[]; // ".col"; extern const char txtChmColon[]; // ".chm::"; extern const char txtDefFile[]; // "::/default.htm"; // Internal window types extern const char txtDefWindow[]; // Per-chm version. extern const char txtGlobalDefWindow[] ; // Global version. // Special windows --- The filename parameter is ignored for these windows. extern const char txtPrintWindow[] ; #include "Util.H" // inline function only support for hour glass struct CHourGlass { CHourGlass() { hcurRestore = SetCursor(LoadCursor(NULL, (LPCTSTR) IDC_WAIT)); } ~CHourGlass() { SetCursor(hcurRestore); } void Restore() { SetCursor(hcurRestore); } HCURSOR hcurRestore; }; //=--------------------------------------------------------------------------= // Global object information table //=--------------------------------------------------------------------------= // for each object in your application, you have an entry in this table. they // do not necessarily have to be CoCreatable, but if they are used, then they // should reside here. use the macros to fill in this table. // typedef struct tagOBJECTINFO { unsigned short usType; void *pInfo; } OBJECTINFO; extern OBJECTINFO g_ObjectInfo[]; class CBusy { public: CBusy() { m_iBusyCount = 0; } BOOL Set( BOOL bBusy ) { if( bBusy ) m_iBusyCount++; else m_iBusyCount--; if( m_iBusyCount < 0 ) m_iBusyCount = 0; return IsBusy(); } inline BOOL IsBusy() { return (BOOL) m_iBusyCount; } private: BOOL m_iBusyCount; }; extern CBusy g_Busy; #endif // __HEADER_H__