|
|
// Copyright (C) 1996-1997 Microsoft Corporation. All rights reserved.
#ifndef __HEADER_H__
#define __HEADER_H__
#ifndef STDCALL
#define STDCALL __stdcall
#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 <windows.h>
#include <winnls.h>
#include <ole2.h>
#include <stddef.h>
#include <malloc.h>
#include <crtdbg.h>
#include "IPServer.h"
#define NO_SHLWAPI_PATH
#define NO_SHLWAPI_REG
#define NO_SHLWAPI_STREAM
#define NO_SHLWAPI_GDI
#include <shlwapi.h>
//
// 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__
|