1525 lines
51 KiB
C++
1525 lines
51 KiB
C++
/*
|
|
* _w32sys.h
|
|
*
|
|
* Purpose:
|
|
* Isolate various Win 32 system dependencies.
|
|
*
|
|
* Copyright (c) 1995-1997, Microsoft Corporation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _W32SYS_H
|
|
|
|
#define _W32SYS_H
|
|
|
|
#if defined(PEGASUS)
|
|
|
|
#if !defined(WINNT)
|
|
#include "memory.h" // for memmove
|
|
#endif
|
|
|
|
struct IMESTYLE;
|
|
struct IMECOLORSTY;
|
|
struct CIMEShare;
|
|
|
|
#define NOACCESSIBILITY // No Accessibility support on Win CE
|
|
#define NOMAGELLAN // No Magellan on Win CE
|
|
#define NODROPFILES // No drop files support on Win CE
|
|
#define NOMETAFILES // No metafiles on Win CE
|
|
#define NOPEDDUMP // No support for ped debug dump on CE
|
|
#define NOFONTSUBINFO // Avoid reading fontsubinfo profile on CE
|
|
#define CONVERT2BPP
|
|
#define NODUMPFORMATRUNS
|
|
#define NOMLKEYBOARD
|
|
|
|
#define dxCaret 2 // caret width
|
|
#define FONTCACHESIZE 8
|
|
#define CCSHASHSEARCHSIZE 15
|
|
#define DEFAULT_UNDO_SIZE 20
|
|
#define NUMPASTECHARSWAITCURSOR 1024
|
|
|
|
#else //!PEGASUS
|
|
|
|
#define dxCaret 1 // caret width
|
|
#define FONTCACHESIZE 24
|
|
#define CCSHASHSEARCHSIZE 31
|
|
#define DEFAULT_UNDO_SIZE 100
|
|
#define NUMPASTECHARSWAITCURSOR (1024*32)
|
|
|
|
#define OBSOLETE // need this to get old IMEShare defines
|
|
#include "imeshare.h"
|
|
|
|
#endif // defined(PEGASUS)
|
|
|
|
#ifndef NOLINESERVICES
|
|
#define LINESERVICES
|
|
#endif
|
|
|
|
#define RSHIFT 1
|
|
#define LSHIFT 2
|
|
#define RCTRL 0x10
|
|
#define LCTRL 0x20
|
|
#define RALT 0x40
|
|
#define LALT 0x80
|
|
|
|
#define SHIFT (RSHIFT + LSHIFT)
|
|
#define ALT (RALT + LALT)
|
|
#define CTRL (RCTRL + LCTRL)
|
|
|
|
#define HOTEURO 0x1000
|
|
#define ALT0 0x2000
|
|
#define ALTNUMPAD 0x4000
|
|
#define LETAFTERSHIFT 0x8000
|
|
|
|
// special virtual keys copied from Japan MSVC ime.h
|
|
#define VK_KANA 0x15
|
|
#define VK_KANJI 0x19
|
|
|
|
// Initialization flags that can be used in system.ini for testing purposes
|
|
#define SYSINI_USELS 0x1
|
|
#define SYSINI_BIDI 0x2
|
|
#define SYSINI_USEAIMM 0x4
|
|
#define SYSINI_DEBUGFONT 0x8
|
|
#define SYSINI_DEBUGGCF125X 0x10
|
|
|
|
/*
|
|
* GetCaretDelta ()
|
|
*
|
|
* @func Get size of caret to add to current caret position to get the
|
|
* maximum extent needed to display caret.
|
|
*
|
|
* @rdesc Size of caret over 1 pixel
|
|
*
|
|
* @devnote This exists solely to abstract this calculation
|
|
* to handle a variable size caret.
|
|
*/
|
|
inline int GetCaretDelta()
|
|
{
|
|
return dxCaret - 1;
|
|
}
|
|
|
|
|
|
// Used in rtfread.cpp to keep track of lossy rtf.
|
|
#ifdef PWORD_CONVERTER_V2
|
|
#define REPORT_LOSSAGE
|
|
#endif
|
|
|
|
|
|
// Defines for some Codepages
|
|
#define CP_JAPAN 932
|
|
#define CP_KOREAN 949
|
|
#define CP_CHINESE_TRAD 950
|
|
#define CP_CHINESE_SIM 936
|
|
#define CP_HEBREW 1255
|
|
#define CP_ARABIC 1256
|
|
#define CP_THAI 874
|
|
#define CP_VIETNAMESE 1258
|
|
|
|
// Indic codepages from NT50
|
|
#define CP_DEVANAGARI 57002
|
|
#define CP_BENGALI 57003
|
|
#define CP_TAMIL 57004
|
|
#define CP_TELUGU 57005
|
|
#define CP_ASSAMESE 57006
|
|
#define CP_ORIYA 57007
|
|
#define CP_KANNADA 57008
|
|
#define CP_MALAYALAM 57009
|
|
#define CP_GUJARATI 57010
|
|
#define CP_PUNJABI 57011
|
|
|
|
// Ad hoc codepages to keep rgCpgCharSet unique
|
|
#define CP_GEORGIAN 58000
|
|
#define CP_ARMENIAN 58001
|
|
|
|
// Newly introduced Indic language ID
|
|
#if(WINVER < 0x500)
|
|
#define LANG_HINDI 0x39
|
|
#define LANG_KONKANI 0x57
|
|
#define LANG_NEPALI 0x61
|
|
#define LANG_BENGALI 0x45
|
|
#define LANG_PUNJABI 0x46
|
|
#define LANG_GUJARATHI 0x47
|
|
#define LANG_ORIYA 0x48
|
|
#define LANG_TAMIL 0x49
|
|
#define LANG_TELUGU 0x4a
|
|
#define LANG_KANNADA 0x4b
|
|
#define LANG_MALAYALAM 0x4c
|
|
#define LANG_ASSAMESE 0x4d
|
|
#define LANG_MARATHI 0x4e
|
|
#define LANG_SANSKRIT 0x4f
|
|
#endif
|
|
|
|
|
|
// Index returned by CharSetIndexFromChar()
|
|
#define FE_FLAG 0x10000
|
|
#define MULTIPLE_FLAG 0x80000000 // Sign bit
|
|
#define FE_INDEX FE_FLAG + MULTIPLE_FLAG
|
|
|
|
#define ANSI_INDEX 0
|
|
#define ARABIC_INDEX 7
|
|
#define GREEK_INDEX 14
|
|
#define HAN_INDEX FE_INDEX + 1
|
|
#define HANGUL_INDEX FE_FLAG + 11
|
|
#define HEBREW_INDEX 6
|
|
#define RUSSIAN_INDEX 9
|
|
#define SHIFTJIS_INDEX FE_FLAG + 8
|
|
#define VIET_INDEX 17
|
|
#define THAI_INDEX 18
|
|
|
|
#define DEVANAGARI_INDEX 19
|
|
#define TAMIL_INDEX 20
|
|
#define GEORGIAN_INDEX 21
|
|
#define ARMENIAN_INDEX 22
|
|
#define INDIC_FIRSTINDEX DEVANAGARI_INDEX
|
|
#define INDIC_LASTINDEX ARMENIAN_INDEX
|
|
|
|
#define UNKNOWN_INDEX MULTIPLE_FLAG + 1
|
|
|
|
#define PC437_CHARSET 254
|
|
#define DEVANAGARI_CHARSET 127
|
|
#define TAMIL_CHARSET 126
|
|
#define GEORGIAN_CHARSET 125
|
|
#define ARMENIAN_CHARSET 124
|
|
#define ADHOC_CHARSET 120
|
|
|
|
// controls the size of two charset tables.
|
|
#define NCHARSETS 24
|
|
|
|
#define IsSymbolOrOEM(x) (x == SYMBOL_CHARSET || x == OEM_CHARSET)
|
|
|
|
enum CC
|
|
{
|
|
CC_ARABIC,
|
|
CC_HEBREW,
|
|
CC_RTL,
|
|
CC_LTR,
|
|
CC_EOP,
|
|
CC_ASCIIDIGIT,
|
|
CC_NEUTRAL
|
|
};
|
|
|
|
#define IsRTL(cc) (cc <= CC_RTL)
|
|
|
|
const SHORT sLanguageEnglishUS = 0x0409;
|
|
const SHORT sLanguageMask = 0x03ff;
|
|
const SHORT sLanguageArabic = 0x0401;
|
|
const SHORT sLanguageHebrew = 0x040d;
|
|
// FUTURE: currently this const == sLanguageEnglishUS
|
|
// for no reason except that it was this way
|
|
// in RE1.0 BiDi. Consider changing, or sticking
|
|
// the real language in, and changing the logic
|
|
// of handling wLang a bit.
|
|
const SHORT sLanguageNonBiDi = 0x0409;
|
|
|
|
|
|
// Logical unit definition
|
|
const int LX_PER_INCH = 1440;
|
|
const int LY_PER_INCH = 1440;
|
|
|
|
// HIMETRIC units per inch (used for conversion)
|
|
const int HIMETRIC_PER_INCH = 2540;
|
|
|
|
#ifdef DEBUG
|
|
|
|
void* __cdecl operator new(size_t nSize, char *szFile, int nLine);
|
|
#define NEW_DEBUG new(__FILE__, __LINE__)
|
|
#define new NEW_DEBUG
|
|
|
|
void UpdateMst(void);
|
|
|
|
struct MST
|
|
{
|
|
char *szFile;
|
|
int cbAlloc;
|
|
}; //Memory Statistics;
|
|
|
|
extern MST vrgmst[];
|
|
|
|
#endif //DEBUG
|
|
|
|
#ifdef CopyMemory
|
|
#undef CopyMemory
|
|
#endif
|
|
#ifdef MoveMemory
|
|
#undef MoveMemory
|
|
#endif
|
|
#ifdef FillMemory
|
|
#undef FillMemory
|
|
#endif
|
|
#ifdef ZeroMemory
|
|
#undef ZeroMemory
|
|
#endif
|
|
#ifdef CompareMemory
|
|
#undef CompareMemory
|
|
#endif
|
|
|
|
#ifndef KF_ALTDOWN
|
|
#define KF_ALTDOWN 0x2000
|
|
#endif
|
|
|
|
// Use for our version of ExtTextOut
|
|
enum CONVERTMODE
|
|
{
|
|
CVT_NONE, // Use Unicode (W) CharWidth/TextOut APIs
|
|
CVT_WCTMB, // Convert to MBCS using WCTMB and _wCodePage
|
|
CVT_LOWBYTE // Use low byte of 16-bit chars (for SYMBOL_CHARSET
|
|
}; // and when code page isn't installed)
|
|
|
|
// Opaque Type
|
|
class CTxtSelection;
|
|
class CTxtEdit;
|
|
class CCharFormat;
|
|
class CCcs;
|
|
|
|
enum UN_FLAGS
|
|
{
|
|
UN_NOOBJECTS = 1,
|
|
UN_CONVERT_WCH_EMBEDDING = 2
|
|
};
|
|
|
|
#undef GetStringTypeEx
|
|
#undef CharLower
|
|
#undef CharLowerBuff
|
|
#undef CharUpperBuff
|
|
#undef CreateIC
|
|
#undef CreateFile
|
|
#undef CreateFontIndirect
|
|
#undef CompareString
|
|
#undef DefWindowProc
|
|
#undef GetKeyboardLayout
|
|
#undef GetProfileSection
|
|
#undef GetTextMetrics
|
|
#undef GetTextExtentPoint32
|
|
#undef GetTextFace
|
|
#undef GetWindowLong
|
|
#undef GetWindowLongPtr
|
|
#undef GetClassLong
|
|
#undef LoadBitmap
|
|
#undef LoadCursor
|
|
#undef LoadLibrary
|
|
#undef SendMessage
|
|
#undef SetWindowLong
|
|
#undef SetWindowLongPtr
|
|
#undef PostMessage
|
|
#undef lstrcmp
|
|
#undef lstrcmpi
|
|
#undef PeekMessage
|
|
#undef GetModuleFileName
|
|
#undef GetLayout
|
|
#undef SetLayout
|
|
|
|
// Bits used in _fFEFontInfo:
|
|
#define JPN_FONT_AVAILABLE 0x0001 // True if Jpn font is available
|
|
#define KOR_FONT_AVAILABLE 0x0002 // True if Kor font is available
|
|
#define BIG5_FONT_AVAILABLE 0x0004 // True if Trad. Chinese font is available
|
|
#define GB_FONT_AVAILABLE 0x0008 // True if Simplified Chinese font is available
|
|
#define FEUSER_LCID 0x0010 // True if User LCID is FE LCID
|
|
#define FEUSER_CODEPAGE 0x0060 // indicate which User FE codepage its
|
|
#define FEUSER_CP_JPN 0x0000 // =00 for JPN
|
|
#define FEUSER_CP_KOR 0x0020 // =20 for KOR
|
|
#define FEUSER_CP_BIG5 0x0040 // =40 for BIG5
|
|
#define FEUSER_CP_GB 0x0060 // =60 for GB
|
|
#define FEDATA_NOT_INIT 0xFFFF // No data yet
|
|
|
|
class CConvertStrW
|
|
{
|
|
public:
|
|
operator WCHAR *();
|
|
|
|
protected:
|
|
CConvertStrW();
|
|
~CConvertStrW();
|
|
void Free();
|
|
|
|
LPWSTR _pwstr;
|
|
WCHAR _awch[MAX_PATH * 2];
|
|
};
|
|
|
|
inline CConvertStrW::CConvertStrW()
|
|
{
|
|
_pwstr = NULL;
|
|
}
|
|
|
|
inline CConvertStrW::~CConvertStrW()
|
|
{
|
|
Free();
|
|
}
|
|
|
|
inline CConvertStrW::operator WCHAR *()
|
|
{
|
|
return _pwstr;
|
|
}
|
|
|
|
class CStrInW : public CConvertStrW
|
|
{
|
|
public:
|
|
CStrInW(LPCSTR pstr);
|
|
CStrInW(LPCSTR pstr, UINT uiCodePage);
|
|
CStrInW(LPCSTR pstr, int cch, UINT uiCodePage);
|
|
int strlen();
|
|
|
|
protected:
|
|
CStrInW();
|
|
void Init(LPCSTR pstr, int cch, UINT uiCodePage);
|
|
|
|
int _cwchLen;
|
|
UINT _uiCodePage;
|
|
};
|
|
|
|
inline CStrInW::CStrInW()
|
|
{
|
|
}
|
|
|
|
inline int CStrInW::strlen()
|
|
{
|
|
return _cwchLen;
|
|
}
|
|
|
|
|
|
typedef DWORD (WINAPI* PFN_GETLAYOUT)(HDC);
|
|
typedef DWORD (WINAPI* PFN_SETLAYOUT)(HDC, DWORD);
|
|
|
|
|
|
class CW32System
|
|
{
|
|
private :
|
|
static DWORD _dwPlatformId; // platform GetVersionEx();
|
|
static LCID _syslcid;
|
|
|
|
public :
|
|
static BOOL _fHaveIMMProcs;
|
|
static CIMEShare *_pIMEShare;
|
|
static BOOL _fHaveAIMM;
|
|
static BOOL _fHaveIMMEShare;
|
|
static UINT _fRegisteredXBox; // flag indicating if listbox and combobox were registered
|
|
static DWORD _dwMajorVersion; // major version from GetVersionEx()
|
|
static DWORD _dwMinorVersion; // minor version from GetVersionEx()
|
|
static INT _icr3DDarkShadow; // value to use for COLOR_3DDKSHADOW
|
|
static UINT _MSIMEMouseMsg; // private msg for support mouse operation
|
|
static UINT _MSIMEReconvertMsg; // private msg for reconversion
|
|
static UINT _MSIMEReconvertRequestMsg; // private msg for reconversion request
|
|
static UINT _MSIMEDocFeedMsg; // private msg for document feed
|
|
static UINT _MSIMEQueryPositionMsg; // private msg for query position
|
|
static UINT _MSIMEServiceMsg; // private msg for checking MSIME98 or later
|
|
|
|
static UINT _MSMouseRoller; // private msg for mouse scrolling
|
|
|
|
// Misc flags used for more precise character classification
|
|
static WORD _fFEFontInfo;
|
|
static BOOL _fLRMorRLM;
|
|
|
|
|
|
CW32System();
|
|
|
|
~CW32System();
|
|
|
|
static DWORD AddRef();
|
|
static DWORD Release();
|
|
|
|
// Platform testing
|
|
static bool OnWinNTFE()
|
|
{
|
|
return _dwPlatformId == VER_PLATFORM_WIN32_NT && IsFELCID(_syslcid );
|
|
}
|
|
static bool OnWinNTNonFE()
|
|
{
|
|
return _dwPlatformId == VER_PLATFORM_WIN32_NT && !IsFELCID(_syslcid );
|
|
}
|
|
static bool OnWinNT5()
|
|
{
|
|
return _dwPlatformId == VER_PLATFORM_WIN32_NT && 5 == _dwMajorVersion;
|
|
}
|
|
static bool OnWinNT4()
|
|
{
|
|
return _dwPlatformId == VER_PLATFORM_WIN32_NT && 4 == _dwMajorVersion;
|
|
}
|
|
static bool OnWin9xFE()
|
|
{
|
|
return _dwPlatformId == VER_PLATFORM_WIN32_WINDOWS && IsFELCID(_syslcid );
|
|
}
|
|
static bool OnWin9x()
|
|
{
|
|
return _dwPlatformId == VER_PLATFORM_WIN32_WINDOWS;
|
|
}
|
|
static bool OnWin95()
|
|
{
|
|
return OnWin9x() && (4 == _dwMajorVersion) && (0 == _dwMinorVersion);
|
|
}
|
|
static bool OnWin95FE()
|
|
{
|
|
return OnWin95() && IsFELCID(_syslcid );
|
|
}
|
|
static bool OnWin9xThai()
|
|
{
|
|
return _dwPlatformId == VER_PLATFORM_WIN32_WINDOWS && PRIMARYLANGID(_syslcid) == LANG_THAI;
|
|
}
|
|
static bool OnWin9xBiDi()
|
|
{
|
|
return _dwPlatformId == VER_PLATFORM_WIN32_WINDOWS && IsBiDiLcid(_syslcid);
|
|
}
|
|
static bool OnBiDiOS()
|
|
{
|
|
return IsBiDiLcid(_syslcid) != 0;
|
|
}
|
|
struct WM_CHAR_INFO
|
|
{
|
|
bool _fAccumulate;
|
|
bool _fLeadByte;
|
|
bool _fTrailByte;
|
|
bool _fIMEChar;
|
|
};
|
|
static UINT GetACP() {return _ACP;}
|
|
|
|
static LRESULT ANSIWndProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, BOOL fIs10Mode );
|
|
static void AnsiFilter( UINT &msg, WPARAM &wparam, LPARAM lparam, void *pvoid, BOOL fIs10Mode = FALSE );
|
|
static HGLOBAL WINAPI GlobalAlloc( UINT uFlags, DWORD dwBytes );
|
|
static HGLOBAL WINAPI GlobalFree( HGLOBAL hMem );
|
|
static UINT WINAPI GlobalFlags( HGLOBAL hMem );
|
|
static HGLOBAL WINAPI GlobalReAlloc( HGLOBAL hMem, DWORD dwBytes, UINT uFlags );
|
|
static DWORD WINAPI GlobalSize( HGLOBAL hMem );
|
|
static PVOID WINAPI GlobalLock( HGLOBAL hMem );
|
|
static HGLOBAL WINAPI GlobalHandle( LPCVOID pMem );
|
|
static BOOL WINAPI GlobalUnlock( HGLOBAL hMem );
|
|
static void WINAPI REGetCharWidth(
|
|
HDC hdc,
|
|
TCHAR iChar,
|
|
SHORT * pWidth,
|
|
UINT uiCodePage,
|
|
SHORT xOverhang, //@parm Equivalent to GetTextMetrics() tmOverhang.
|
|
INT iDefWidth); //@parm Default width to use if font calc's zero
|
|
//width. (Handles Win95 problem).
|
|
static void WINAPI REExtTextOut(
|
|
CONVERTMODE cm,
|
|
UINT uiCodePage,
|
|
HDC hdc,
|
|
int x,
|
|
int y,
|
|
UINT fuOptions,
|
|
CONST RECT *lprc,
|
|
const WCHAR *lpString,
|
|
UINT cch,
|
|
CONST INT *lpDx,
|
|
BOOL FEFontOnNonFEWin95);
|
|
static CONVERTMODE WINAPI DetermineConvertMode( HDC hdc, BYTE tmCharSet );
|
|
static void WINAPI CalcUnderlineInfo(HDC hdc, CCcs *pccs, TEXTMETRIC *ptm );
|
|
static BOOL WINAPI EnableScrollBar( HWND hWnd, UINT wSBflags, UINT wArrows );
|
|
static BOOL WINAPI ShowScrollBar( HWND hWnd, int wBar, BOOL bShow, LONG nMax );
|
|
static BOOL WINAPI IsEnhancedMetafileDC( HDC hdc );
|
|
static HPALETTE WINAPI ManagePalette(
|
|
HDC hdc,
|
|
CONST LOGPALETTE *plogpal,
|
|
HPALETTE &hpalOld,
|
|
HPALETTE &hpalNew
|
|
);
|
|
|
|
static void GetFacePriCharSet(HDC hdc, LOGFONT* plf);
|
|
|
|
static int WINAPI GetMapMode(HDC hdc);
|
|
static BOOL WINAPI WinLPtoDP(HDC hdc, LPPOINT lppoints, int nCount);
|
|
|
|
static long WINAPI WvsprintfA(LONG cb, LPSTR szBuf, LPCSTR szFmt, va_list arglist);
|
|
|
|
static int WINAPI MulDiv(int nNumber, int nNumerator, int nDenominator);
|
|
|
|
// Convert Himetric along the X axis to X pixels
|
|
static inline LONG HimetricXtoDX(LONG xHimetric, LONG xPerInch)
|
|
{
|
|
// This formula is rearranged to get rid of the need for floating point
|
|
// arithmetic. The real way to understand the formula is to use
|
|
// (xHimetric / HIMETRIC_PER_INCH) to get the inches and then multiply
|
|
// the inches by the number of x pixels per inch to get the pixels.
|
|
return (LONG) MulDiv(xHimetric, xPerInch, HIMETRIC_PER_INCH);
|
|
}
|
|
|
|
// Convert Himetric along the Y axis to Y pixels
|
|
static inline LONG HimetricYtoDY(LONG yHimetric, LONG yPerInch)
|
|
{
|
|
// This formula is rearranged to get rid of the need for floating point
|
|
// arithmetic. The real way to understand the formula is to use
|
|
// (xHimetric / HIMETRIC_PER_INCH) to get the inches and then multiply
|
|
// the inches by the number of y pixels per inch to get the pixels.
|
|
return (LONG) MulDiv(yHimetric, yPerInch, HIMETRIC_PER_INCH);
|
|
}
|
|
|
|
// Convert Pixels on the X axis to Himetric
|
|
static inline LONG DXtoHimetricX(LONG dx, LONG xPerInch)
|
|
{
|
|
// This formula is rearranged to get rid of the need for floating point
|
|
// arithmetic. The real way to understand the formula is to use
|
|
// (dx / x pixels per inch) to get the inches and then multiply
|
|
// the inches by the number of himetric units per inch to get the
|
|
// count of himetric units.
|
|
return (LONG) MulDiv(dx, HIMETRIC_PER_INCH, xPerInch);
|
|
}
|
|
|
|
// Convert Pixels on the Y axis to Himetric
|
|
static inline LONG DYtoHimetricY(LONG dy, LONG yPerInch)
|
|
{
|
|
// This formula is rearranged to get rid of the need for floating point
|
|
// arithmetic. The real way to understand the formula is to use
|
|
// (dy / y pixels per inch) to get the inches and then multiply
|
|
// the inches by the number of himetric units per inch to get the
|
|
// count of himetric units.
|
|
return (LONG) MulDiv(dy, HIMETRIC_PER_INCH, yPerInch);
|
|
}
|
|
|
|
//
|
|
// Case insensitive ASCII compare
|
|
//
|
|
static BOOL ASCIICompareI( const BYTE *pstr1, const BYTE *pstr2, int iCount )
|
|
{
|
|
int i;
|
|
for (i = 0; i < iCount && !((pstr1[i] ^ pstr2[i]) & ~0x20); i++)
|
|
;
|
|
return i == iCount;
|
|
}
|
|
|
|
//
|
|
// Allocate and convert a MultiByte string to a wide character string
|
|
// Allocated strings must be freed with delete
|
|
//
|
|
static WCHAR *ConvertToWideChar( const char *pstr )
|
|
{
|
|
int istrlen = 0;
|
|
if(pstr)
|
|
for (istrlen; pstr[istrlen]; istrlen++);
|
|
WCHAR *pnew = new WCHAR[istrlen + 1];
|
|
if(pnew && (!pstr || 0 != ::MultiByteToWideChar(
|
|
CP_ACP, 0, pstr, -1, pnew, istrlen + 1)))
|
|
{
|
|
return pnew;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
//
|
|
// functions for memory and string management
|
|
//
|
|
#ifdef DEBUG
|
|
static void PvSet(void *pv, char *szFile, int line);
|
|
static PVOID PvAllocDebug(ULONG cbBuf, UINT uiMemFlags, char *szFile, int line);
|
|
static PVOID PvReAllocDebug(PVOID pvBuf, DWORD cbBuf, char *szFile, int line);
|
|
static void FreePvDebug(PVOID pvBuf);
|
|
#endif
|
|
static PVOID PvAlloc(ULONG cbBuf, UINT uiMemFlags);
|
|
static PVOID PvReAlloc(PVOID pvBuf, DWORD cbBuf);
|
|
static void FreePv(PVOID pvBuf);
|
|
|
|
static inline void *MoveMemory(void *dst, const void *src, size_t cb)
|
|
{
|
|
Assert(cb >= 0);
|
|
return memmove(dst, src, cb);
|
|
}
|
|
|
|
static inline void *CopyMemory(void *dst, const void *src, size_t cb)
|
|
{
|
|
// Will work for overlapping regions
|
|
Assert(cb >= 0);
|
|
return MoveMemory(dst, src, cb);
|
|
}
|
|
|
|
static inline void *FillMemory(void *dst, int fill, size_t cb)
|
|
{
|
|
return memset(dst, fill, cb);
|
|
}
|
|
|
|
static inline void *ZeroMemory(void *dst, size_t cb)
|
|
{
|
|
Assert(cb >= 0);
|
|
return memset(dst, 0, cb);
|
|
}
|
|
|
|
static inline int CompareMemory(const void *s1, const void *s2, size_t cb)
|
|
{
|
|
return memcmp(s1, s2, cb);
|
|
}
|
|
|
|
static size_t wcslen(const wchar_t *wcs);
|
|
static wchar_t * wcscpy(wchar_t * dst, const wchar_t * src);
|
|
static int wcscmp(const wchar_t * src, const wchar_t * dst);
|
|
static int wcsicmp(const wchar_t * src, const wchar_t * dst);
|
|
static wchar_t * wcsncpy (wchar_t * dest, const wchar_t * source, size_t count);
|
|
static int wcsnicmp(const wchar_t *first, const wchar_t *last, size_t count);
|
|
static unsigned long strtoul(const char *);
|
|
|
|
|
|
// ----------------------------------
|
|
// IME Support
|
|
// ----------------------------------
|
|
static BOOL ImmInitialize( void );
|
|
static void ImmTerminate( void );
|
|
static LONG ImmGetCompositionStringA ( HIMC, DWORD, PVOID, DWORD, BOOL );
|
|
static LONG ImmGetCompositionStringW ( HIMC, DWORD, PVOID, DWORD, BOOL );
|
|
static HIMC ImmGetContext ( HWND );
|
|
static BOOL ImmSetCompositionFontA ( HIMC, LPLOGFONTA, BOOL );
|
|
static BOOL ImmSetCompositionWindow ( HIMC, LPCOMPOSITIONFORM, BOOL );
|
|
static BOOL ImmReleaseContext ( HWND, HIMC );
|
|
static DWORD ImmGetProperty ( HKL, DWORD, BOOL );
|
|
static BOOL ImmGetCandidateWindow ( HIMC, DWORD, LPCANDIDATEFORM, BOOL );
|
|
static BOOL ImmSetCandidateWindow ( HIMC, LPCANDIDATEFORM, BOOL );
|
|
static BOOL ImmNotifyIME ( HIMC, DWORD, DWORD, DWORD, BOOL );
|
|
static HIMC ImmAssociateContext ( HWND, HIMC, BOOL );
|
|
static UINT ImmGetVirtualKey ( HWND, BOOL );
|
|
static HIMC ImmEscape ( HKL, HIMC, UINT, PVOID, BOOL );
|
|
static BOOL ImmGetOpenStatus ( HIMC, BOOL );
|
|
static BOOL ImmSetOpenStatus ( HIMC, BOOL, BOOL );
|
|
static BOOL ImmGetConversionStatus ( HIMC, LPDWORD, LPDWORD, BOOL );
|
|
static BOOL ImmSetConversionStatus ( HIMC, DWORD, DWORD, BOOL );
|
|
static HWND ImmGetDefaultIMEWnd ( HWND , BOOL);
|
|
static BOOL ImmSetCompositionStringW (HIMC, DWORD, PVOID, DWORD, PVOID, DWORD);
|
|
static BOOL FSupportSty ( UINT, UINT );
|
|
static const IMESTYLE * PIMEStyleFromAttr ( const UINT );
|
|
static const IMECOLORSTY * PColorStyleTextFromIMEStyle ( const IMESTYLE * );
|
|
static const IMECOLORSTY * PColorStyleBackFromIMEStyle ( const IMESTYLE * );
|
|
static BOOL FBoldIMEStyle ( const IMESTYLE * );
|
|
static BOOL FItalicIMEStyle ( const IMESTYLE * );
|
|
static BOOL FUlIMEStyle ( const IMESTYLE * );
|
|
static UINT IdUlIMEStyle ( const IMESTYLE * );
|
|
static COLORREF RGBFromIMEColorStyle ( const IMECOLORSTY * );
|
|
|
|
// ----------------------------------
|
|
// National Language Keyboard support
|
|
// ----------------------------------
|
|
static HKL CheckChangeKeyboardLayout (BYTE bCharSet);
|
|
static HKL ActivateKeyboard (LONG index);
|
|
static DWORD GetCharFlags125x(WCHAR ch);
|
|
static BOOL GetKeyboardFlag (WORD dwKeyMask, WORD wKey);
|
|
static WORD GetKeyboardFlags () {return _wKeyboardFlags;}
|
|
static HKL GetKeyboardLayout (DWORD dwThreadID);
|
|
static WORD GetKeyPadNumber () {return _wNumKeyPad;}
|
|
static WORD GetDeadKey () {return _wDeadKey;}
|
|
static void InitKeyboardFlags ();
|
|
static void RefreshKeyboardLayout ();
|
|
static void ResetKeyboardFlag (WORD wFlag) {_wKeyboardFlags &= ~wFlag;}
|
|
static void SetDeadKey (WORD wDeadKey) {_wDeadKey = wDeadKey;}
|
|
static void SetKeyboardFlag (WORD wFlag) {_wKeyboardFlags |= wFlag;}
|
|
static void SetKeyPadNumber (WORD wNum) {_wNumKeyPad = wNum;}
|
|
static bool UsingHebrewKeyboard ()
|
|
{return PRIMARYLANGID(_hklCurrent) == LANG_HEBREW;}
|
|
static void InitPreferredFontInfo();
|
|
static bool SetPreferredFontInfo(
|
|
int cpg,
|
|
bool fUIFont,
|
|
SHORT iFont,
|
|
BYTE yHeight,
|
|
BYTE bPitchAndFamily
|
|
);
|
|
static bool GetPreferredFontInfo(
|
|
int cpg,
|
|
bool fUIFont,
|
|
SHORT& iFont,
|
|
BYTE& yHeight,
|
|
BYTE& bPitchAndFamily
|
|
);
|
|
|
|
static SHORT GetPreferredFontHeight(
|
|
bool fUIFont,
|
|
BYTE bOrgCharSet,
|
|
BYTE bNewCharSet,
|
|
SHORT yOrgHeight
|
|
);
|
|
|
|
static void CheckInstalledFEFonts();
|
|
static void CheckInstalledKeyboards();
|
|
static bool IsFontAvail( HDC hDC, int cpg, bool fUIFont = false, short *piFontIndex = NULL);
|
|
static bool IsFEFontInSystem( int cpg );
|
|
static UINT GetFEFontInfo( void );
|
|
static int IsFESystem()
|
|
{
|
|
return IsFELCID( _syslcid );
|
|
}
|
|
|
|
#ifndef NOACCESSIBILITY
|
|
// ----------------------------------
|
|
// Accessability Support
|
|
// ----------------------------------
|
|
static HRESULT VariantCopy(VARIANTARG FAR* pvargDest, VARIANTARG FAR* pvargSrc);
|
|
static LRESULT LResultFromObject(REFIID riid, WPARAM wParam, LPUNKNOWN punk);
|
|
static HRESULT AccessibleObjectFromWindow(HWND hWnd, DWORD dwID, REFIID riidInterface, void ** ppvObject);
|
|
static BOOL BlockInput(BOOL fBlock);
|
|
static UINT SendInput(UINT nInputs, LPINPUT pInputs, int cbSize);
|
|
static VOID NotifyWinEvent(DWORD dwEvent, HWND hWnd, LONG lObjectType, LONG lObjectId);
|
|
#endif
|
|
|
|
// ----------------------------------
|
|
// OLE Support
|
|
// ----------------------------------
|
|
static HRESULT LoadRegTypeLib ( REFGUID, WORD, WORD, LCID, ITypeLib ** );
|
|
static HRESULT LoadTypeLib ( const OLECHAR *, ITypeLib ** );
|
|
static HRESULT LoadTypeLibEx( LPCOLESTR szFile, REGKIND regkind, ITypeLib ** pptlib );
|
|
static BSTR SysAllocString ( const OLECHAR * );
|
|
static BSTR SysAllocStringLen ( const OLECHAR *, UINT );
|
|
static void SysFreeString ( BSTR );
|
|
static UINT SysStringLen ( BSTR );
|
|
static void VariantInit ( VARIANTARG * );
|
|
static HRESULT OleCreateFromData ( LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, void ** );
|
|
static void CoTaskMemFree ( PVOID );
|
|
static HRESULT CreateBindCtx ( DWORD, LPBC * );
|
|
static HANDLE OleDuplicateData ( HANDLE, CLIPFORMAT, UINT );
|
|
static HRESULT CoTreatAsClass ( REFCLSID, REFCLSID );
|
|
static HRESULT ProgIDFromCLSID ( REFCLSID, LPOLESTR * );
|
|
static HRESULT OleConvertIStorageToOLESTREAM ( LPSTORAGE, LPOLESTREAM );
|
|
static HRESULT OleConvertIStorageToOLESTREAMEx ( LPSTORAGE, CLIPFORMAT, LONG, LONG, DWORD, LPSTGMEDIUM, LPOLESTREAM );
|
|
static HRESULT OleSave ( LPPERSISTSTORAGE, LPSTORAGE, BOOL );
|
|
static HRESULT StgCreateDocfileOnILockBytes ( ILockBytes *, DWORD, DWORD, IStorage ** );
|
|
static HRESULT CreateILockBytesOnHGlobal ( HGLOBAL, BOOL, ILockBytes ** );
|
|
static HRESULT OleCreateLinkToFile ( LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, void ** );
|
|
static PVOID CoTaskMemAlloc ( ULONG );
|
|
static PVOID CoTaskMemRealloc ( PVOID, ULONG );
|
|
static HRESULT OleInitialize ( PVOID );
|
|
static void OleUninitialize ( );
|
|
static HRESULT OleSetClipboard ( IDataObject * );
|
|
static HRESULT OleFlushClipboard ( );
|
|
static HRESULT OleIsCurrentClipboard ( IDataObject * );
|
|
static HRESULT DoDragDrop ( IDataObject *, IDropSource *, DWORD, DWORD * );
|
|
static HRESULT OleGetClipboard ( IDataObject ** );
|
|
static HRESULT RegisterDragDrop ( HWND, IDropTarget * );
|
|
static HRESULT OleCreateLinkFromData ( IDataObject *, REFIID, DWORD, LPFORMATETC, IOleClientSite *, IStorage *, void ** );
|
|
static HRESULT OleCreateStaticFromData ( IDataObject *, REFIID, DWORD, LPFORMATETC, IOleClientSite *, IStorage *, void ** );
|
|
static HRESULT OleDraw ( IUnknown *, DWORD, HDC, LPCRECT );
|
|
static HRESULT OleSetContainedObject ( IUnknown *, BOOL );
|
|
static HRESULT CoDisconnectObject ( IUnknown *, DWORD );
|
|
static HRESULT WriteFmtUserTypeStg ( IStorage *, CLIPFORMAT, LPOLESTR );
|
|
static HRESULT WriteClassStg ( IStorage *, REFCLSID );
|
|
static HRESULT SetConvertStg ( IStorage *, BOOL );
|
|
static HRESULT ReadFmtUserTypeStg ( IStorage *, CLIPFORMAT *, LPOLESTR * );
|
|
static HRESULT ReadClassStg ( IStorage *pstg, CLSID * );
|
|
static HRESULT OleRun ( IUnknown * );
|
|
static HRESULT RevokeDragDrop ( HWND );
|
|
static HRESULT CreateStreamOnHGlobal ( HGLOBAL, BOOL, IStream ** );
|
|
static HRESULT GetHGlobalFromStream ( IStream *pstm, HGLOBAL * );
|
|
static HRESULT OleCreateDefaultHandler ( REFCLSID, IUnknown *, REFIID, void ** );
|
|
static HRESULT CLSIDFromProgID ( LPCOLESTR, LPCLSID );
|
|
static HRESULT OleConvertOLESTREAMToIStorage ( LPOLESTREAM, IStorage *, const DVTARGETDEVICE * );
|
|
static HRESULT OleLoad ( IStorage *, REFIID, IOleClientSite *, void ** );
|
|
static HRESULT ReleaseStgMedium ( LPSTGMEDIUM );
|
|
static HRESULT CoCreateInstance (REFCLSID rclsid, LPUNKNOWN pUnknown,
|
|
DWORD dwClsContext, REFIID riid, PVOID *ppv);
|
|
static void FreeOle();
|
|
static void FreeIME();
|
|
static BOOL HaveIMEShare();
|
|
static BOOL getIMEShareObject(CIMEShare **ppIMEShare);
|
|
static BOOL IsAIMMLoaded() { return _fHaveAIMM; }
|
|
static BOOL GetAimmObject(IUnknown **ppAimm);
|
|
static BOOL LoadAIMM();
|
|
static HRESULT AIMMDefWndProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam, LRESULT *plres);
|
|
static HRESULT AIMMGetCodePage (HKL hKL, UINT *uCodePage);
|
|
static HRESULT AIMMActivate (BOOL fRestoreLayout);
|
|
static HRESULT AIMMDeactivate (void);
|
|
static HRESULT AIMMFilterClientWindows(ATOM *aaClassList, UINT uSize);
|
|
|
|
int __cdecl sprintf(char * buff, char *fmt, ...);
|
|
|
|
// ----------------------------------
|
|
// Useful ANSI<-->Unicode conversion
|
|
// and language id routines
|
|
// ----------------------------------
|
|
static int MbcsFromUnicode(LPSTR pstr, int cch, LPCWSTR pwstr,
|
|
int cwch = -1, UINT codepage = CP_ACP,
|
|
UN_FLAGS flags = UN_CONVERT_WCH_EMBEDDING);
|
|
static int UnicodeFromMbcs(LPWSTR pwstr, int cwch, LPCSTR pstr, int cch = -1,
|
|
UINT uiCodePage = CP_ACP);
|
|
static int MBTWC(INT CodePage, DWORD dwFlags, LPCSTR pstrMB, int cchMB,
|
|
LPWSTR pstrWC, int cchWC, LPBOOL pfNoCodePage);
|
|
static int WCTMB(INT CodePage, DWORD dwFlags, LPCWSTR pstrWC, int cchWC,
|
|
LPSTR pstrMB, int cchMB, LPCSTR pchDefault, LPBOOL pfUsedDef,
|
|
LPBOOL pfNoCodePage, BOOL fTestCodePage = FALSE);
|
|
static int VerifyFEString(INT cpg, LPCWSTR pstrWC, int cchWC, BOOL fTestInputCpg);
|
|
static HGLOBAL TextHGlobalAtoW( HGLOBAL hglobal );
|
|
static HGLOBAL TextHGlobalWtoA( HGLOBAL hglobal );
|
|
static UINT ConvertLanguageIDtoCodePage(WORD lid);
|
|
|
|
static HKL FindDirectionalKeyboard(BOOL fRTL);
|
|
static BYTE GetCharSet(INT cpg, int *pcharsetIndex = NULL);
|
|
static BYTE MatchFECharSet(DWORD dwCharInfo, DWORD dwFontSig);
|
|
static INT GetCodePage(BYTE bCharSet);
|
|
static DWORD GetFontSig(WORD wCharSet);
|
|
static DWORD GetFontSigFromScript(int iScript);
|
|
static BYTE GetFirstAvailCharSet(DWORD dwFontSig);
|
|
static UINT GetKeyboardCodePage(DWORD dwMakeAPICall = 0);
|
|
static LCID GetKeyboardLCID(DWORD dwMakeAPICall = 0);
|
|
static UINT GetLocaleCodePage();
|
|
static LCID GetLocaleLCID();
|
|
static HKL GetPreferredKbd(LONG iScript) {return _hkl[iScript];}
|
|
static void SetPreferredKbd(LONG iScript, HKL hkl) {_hkl[iScript] = hkl;}
|
|
static UINT GetSystemDefaultCodePage()
|
|
{return ConvertLanguageIDtoCodePage(GetSystemDefaultLangID());}
|
|
static int GetTrailBytesCount(BYTE ach, UINT cpg);
|
|
static BYTE GetGdiCharSet(BYTE bCharSet);
|
|
|
|
static INT In125x(WCHAR ch, BYTE bCharSet);
|
|
static BOOL Is8BitCodePage(unsigned CodePage);
|
|
static BOOL IsAlef(TCHAR ch);
|
|
static BOOL IsBiDiCharSet(unsigned CharSet)
|
|
{return IN_RANGE(HEBREW_CHARSET, CharSet, ARABIC_CHARSET);}
|
|
static bool IsBiDiCodePage(int cpg)
|
|
{return IN_RANGE(CP_HEBREW, cpg, CP_ARABIC);}
|
|
static bool IsBiDiKbdInstalled()
|
|
{return _hkl[HEBREW_INDEX] || _hkl[ARABIC_INDEX];}
|
|
static bool IsThaiKbdInstalled()
|
|
{return _hkl[THAI_INDEX] != 0;}
|
|
static bool IsIndicKbdInstalled();
|
|
static bool IsComplexKbdInstalled()
|
|
{return IsBiDiKbdInstalled() || IsThaiKbdInstalled() || IsIndicKbdInstalled();}
|
|
static BOOL IsPrivateCharSet(unsigned CharSet)
|
|
{return IN_RANGE(ADHOC_CHARSET, CharSet, DEVANAGARI_CHARSET);}
|
|
static bool IsVietnameseCodePage(int cpg)
|
|
{return cpg == CP_VIETNAMESE;}
|
|
static BOOL IsDiacritic(WCHAR ch);
|
|
static BOOL IsBiDiDiacritic(TCHAR ch);
|
|
static BOOL IsBiDiKashida(WCHAR ch)
|
|
{return ch == 0x0640;}
|
|
static BOOL IsBiDiLcid(LCID lcid);
|
|
static BOOL IsIndicLcid(LCID lcid);
|
|
static BOOL IsComplexScriptLcid(LCID lcid);
|
|
static BOOL IsCharSetValid(BYTE bCharSet);
|
|
static BOOL IsDiacriticOrKashida(WCHAR ch, WORD wC3Type);
|
|
static bool IsFELCID(LCID lcid);
|
|
static BOOL IsFECharSet (BYTE bCharSet);
|
|
static bool IsFECodePage(int cpg)
|
|
{return IN_RANGE(CP_JAPAN, cpg, CP_CHINESE_TRAD);}
|
|
static BOOL IsFECodePageFont (DWORD dwFontSig);
|
|
static BOOL IsRTLCharSet(BYTE bCharSet);
|
|
BOOL IsStrongDirectional(CC cc) {return cc <= CC_LTR;}
|
|
static BOOL IsVietCdmSequenceValid(WCHAR ch1, WCHAR ch2);
|
|
static BOOL IsZWG(char ch, BYTE bCharSet); //@cmember Is char a 0-width glyph?
|
|
static BOOL IsUTF8BOM(BYTE *pstr);
|
|
|
|
static LONG ScriptIndexFromCharSet(BYTE bCharSet);
|
|
static LONG ScriptIndexFromChar (WCHAR ch);
|
|
static LONG ScriptIndexFromFontSig(DWORD dwFontSig);
|
|
|
|
static WPARAM ValidateStreamWparam(WPARAM wparam);
|
|
|
|
static CC MECharClass(TCHAR ch);
|
|
|
|
static HDC GetScreenDC();
|
|
|
|
|
|
// ----------------------------------
|
|
// Unicode Wrapped Functions
|
|
// ----------------------------------
|
|
|
|
// We could use inline and a function pointer table to improve efficiency and code size.
|
|
|
|
static ATOM WINAPI RegisterREClass(
|
|
const WNDCLASSW *lpWndClass,
|
|
const char *szAnsiClassName,
|
|
WNDPROC AnsiWndProc
|
|
);
|
|
static BOOL GetVersion(
|
|
DWORD *pdwPlatformId,
|
|
DWORD *pdwMajorVersion,
|
|
DWORD *pdwMinorVersion
|
|
);
|
|
static BOOL GetStringTypes(
|
|
LCID lcid,
|
|
LPCTSTR lpSrcStr,
|
|
int cchSrc,
|
|
LPWORD lpCharType1,
|
|
LPWORD lpCharType3
|
|
);
|
|
static BOOL WINAPI GetStringTypeEx(
|
|
LCID Locale,
|
|
DWORD dwInfoType,
|
|
LPCWSTR lpSrcStr,
|
|
int cchSrc,
|
|
LPWORD lpCharType
|
|
);
|
|
static LPWSTR WINAPI CharLower(LPWSTR pwstr);
|
|
static DWORD WINAPI CharLowerBuff(LPWSTR pwstr, DWORD cchLength);
|
|
static DWORD WINAPI CharUpperBuff(LPWSTR pwstr, DWORD cchLength);
|
|
static HDC WINAPI CreateIC(
|
|
LPCWSTR lpszDriver,
|
|
LPCWSTR lpszDevice,
|
|
LPCWSTR lpszOutput,
|
|
CONST DEVMODEW * lpInitData
|
|
);
|
|
static HANDLE WINAPI CreateFile(
|
|
LPCWSTR lpFileName,
|
|
DWORD dwDesiredAccess,
|
|
DWORD dwShareMode,
|
|
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
|
DWORD dwCreationDisposition,
|
|
DWORD dwFlagsAndAttributes,
|
|
HANDLE hTemplateFile
|
|
);
|
|
static HFONT WINAPI CreateFontIndirect(CONST LOGFONTW * plfw);
|
|
static int WINAPI CompareString (
|
|
LCID Locale, // locale identifier
|
|
DWORD dwCmpFlags, // comparison-style options
|
|
LPCWSTR lpString1, // pointer to first string
|
|
int cch1, // size, in bytes or characters, of first string
|
|
LPCWSTR lpString2, // pointer to second string
|
|
int cch2 // size, in bytes or characters, of second string
|
|
);
|
|
static LRESULT WINAPI DefWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
static int WINAPI GetObject(HGDIOBJ hgdiObj, int cbBuffer, PVOID lpvObj);
|
|
static DWORD APIENTRY GetProfileSection(
|
|
LPCWSTR lpAppName,
|
|
LPWSTR lpReturnedString,
|
|
DWORD nSize
|
|
);
|
|
static BOOL APIENTRY GetTextExtentPoint32(
|
|
HDC hdc,
|
|
LPCWSTR pwsz,
|
|
int cb,
|
|
LPSIZE pSize
|
|
);
|
|
static int WINAPI GetTextFace(
|
|
HDC hdc,
|
|
int cch,
|
|
LPWSTR lpFaceName
|
|
);
|
|
static BOOL WINAPI GetTextMetrics(HDC hdc, LPTEXTMETRICW lptm);
|
|
static BOOL WINAPI GetTextMetrics(HDC hdc, LOGFONTW &lf, TEXTMETRICW &tm);
|
|
static LONG WINAPI GetWindowLong(HWND hWnd, int nIndex);
|
|
static LONG_PTR WINAPI GetWindowLongPtr(HWND hWnd, int nIndex);
|
|
static DWORD WINAPI GetClassLong(HWND hWnd, int nIndex);
|
|
static HBITMAP WINAPI LoadBitmap(HINSTANCE hInstance, LPCWSTR lpBitmapName);
|
|
static HCURSOR WINAPI LoadCursor(HINSTANCE hInstance, LPCWSTR lpCursorName);
|
|
static HINSTANCE WINAPI LoadLibrary(LPCWSTR lpLibFileName);
|
|
static LRESULT WINAPI SendMessage(
|
|
HWND hWnd,
|
|
UINT Msg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
static LONG WINAPI SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong);
|
|
static LONG WINAPI SetWindowLongPtr(HWND hWnd, int nIndex, LONG_PTR dwNew);
|
|
static BOOL WINAPI PostMessage(
|
|
HWND hWnd,
|
|
UINT Msg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
static BOOL WINAPI UnregisterClass(LPCWSTR lpClassName, HINSTANCE hInstance);
|
|
static int WINAPI lstrcmp(LPCWSTR lpString1, LPCWSTR lpString2);
|
|
static int WINAPI lstrcmpi(LPCWSTR lpString1, LPCWSTR lpString2);
|
|
static BOOL WINAPI PeekMessage(
|
|
LPMSG lpMsg,
|
|
HWND hWnd,
|
|
UINT wMsgFilterMin,
|
|
UINT wMsgFilterMax,
|
|
UINT wRemoveMsg
|
|
);
|
|
static DWORD WINAPI GetModuleFileName(
|
|
HMODULE hModule,
|
|
LPWSTR lpFilename,
|
|
DWORD nSize
|
|
);
|
|
static DWORD GetCurrentThreadId(void);
|
|
|
|
private:
|
|
// System Parameters
|
|
static BOOL _fSysParamsOk; // System Parameters have been Initialized
|
|
static INT _xWidthSys; // average char width of system font
|
|
static INT _yHeightSys; // height of system font
|
|
static INT _ySysFontLeading; // System font internal leading
|
|
static BOOL _fUsePalette;
|
|
static LONG _xPerInchScreenDC; // Pixels per inch used for conversions ...
|
|
static LONG _yPerInchScreenDC; // ... and determining whether screen or ...
|
|
static INT _cxBorder; // GetSystemMetricx(SM_CXBORDER)...
|
|
static INT _cyBorder; // GetSystemMetricx(SM_CYBORDER)...
|
|
static INT _cxVScroll; // Width/height of scrlbar arw bitmap
|
|
static INT _cyHScroll; // Width of scrlbar arw bitmap
|
|
static LONG _dxSelBar;
|
|
static INT _sysiniflags; // Start using line services from the start
|
|
|
|
static UINT _ACP; // Current Ansi code page identifier
|
|
|
|
static HDC _hdcScreen;
|
|
// Double click distances
|
|
static INT _cxDoubleClk;
|
|
static INT _cyDoubleClk;
|
|
|
|
// Double Click Time in milliseconds
|
|
static INT _DCT;
|
|
|
|
//Width of hot zone (in pixels) for auto-scrolling
|
|
static WORD _nScrollInset;
|
|
//Delay (in ms) before scrolling
|
|
static WORD _nScrollDelay;
|
|
//Interval (in ms) at which we scroll
|
|
static WORD _nScrollInterval;
|
|
//Amount of horizontal scroll at each interval (pixels)
|
|
static WORD _nScrollHAmount;
|
|
//Amount of vertical scroll at each interval (pixels)
|
|
static WORD _nScrollVAmount;
|
|
//Amount of time to wait for determining start of drag operation
|
|
static WORD _nDragDelay;
|
|
//Minimun distance that must be traversed within drag delay time interval
|
|
static WORD _nDragMinDist;
|
|
//Keyboard deadkey
|
|
static WORD _wDeadKey;
|
|
//Keyboard shift/ctrl/alt/lock status
|
|
static WORD _wKeyboardFlags;
|
|
//North/South sizing cursor (double arrow)
|
|
static HCURSOR _hcurSizeNS;
|
|
//West/East sizing cursor (double arrow)
|
|
static HCURSOR _hcurSizeWE;
|
|
//Northwest/Southeast sizing cursor (double arrow)
|
|
static HCURSOR _hcurSizeNWSE;
|
|
//Northeast/Southwest sizing cursor (double arrow)
|
|
static HCURSOR _hcurSizeNESW;
|
|
//Number of Lines to scroll with a mouse roller wheel, -1 for pages
|
|
static LONG _cLineScroll;
|
|
//System Font Handle. This one need only be done once.
|
|
static HFONT _hSystemFont;
|
|
//System Keyboard Layout
|
|
static HKL _hklCurrent;
|
|
static HKL _hkl[NCHARSETS];
|
|
|
|
// Ref Count
|
|
static DWORD _cRefs;
|
|
|
|
//AltNumericKeyboard number
|
|
static WORD _wNumKeyPad;
|
|
|
|
//Digit substitution mode (context, none, national)
|
|
static BYTE _bDigitSubstMode;
|
|
|
|
//SYSTEM_FONT charset
|
|
static BYTE _bSysCharSet;
|
|
|
|
public:
|
|
static INT GetXWidthSys() {return _xWidthSys; }
|
|
static INT GetYHeightSys() {return _yHeightSys; }
|
|
static INT GetSysFontLeading() {return _ySysFontLeading; }
|
|
static LONG GetXPerInchScreenDC(){return _xPerInchScreenDC; }
|
|
static LONG GetYPerInchScreenDC(){return _yPerInchScreenDC; }
|
|
static INT GetCxBorder() {return _cxBorder; }
|
|
static INT GetCyBorder() {return _cyBorder; }
|
|
static INT GetCyHScroll() {return _cyHScroll; }
|
|
static INT GetCxVScroll() {return _cxVScroll; }
|
|
static LONG GetDxSelBar() {return _dxSelBar; }
|
|
static WORD GetScrollInset() {return _nScrollInset; }
|
|
static WORD GetScrollDelay() {return _nScrollDelay; }
|
|
static WORD GetScrollInterval() {return _nScrollInterval; }
|
|
static WORD GetScrollHAmount() {return _nScrollHAmount; }
|
|
static WORD GetScrollVAmount() {return _nScrollVAmount; }
|
|
static INT GetCxDoubleClk() {return _cxDoubleClk; }
|
|
static INT GetCyDoubleClk() {return _cyDoubleClk; }
|
|
static INT GetDCT() {return _DCT; }
|
|
static WORD GetDragDelay() {return _nDragDelay; }
|
|
static WORD GetDragMinDist() {return _nDragMinDist; }
|
|
static LONG GetRollerLineScrollCount();
|
|
static HCURSOR GetSizeCursor(LPTSTR idcur);
|
|
static HFONT GetSystemFont() {return _hSystemFont; }
|
|
static BYTE ReadRegDigitSubstitutionMode();
|
|
static BYTE GetDigitSubstitutionMode() {return _bDigitSubstMode;}
|
|
static bool fUseAimm() {return (_sysiniflags & SYSINI_USEAIMM) != 0;}
|
|
static bool fUseBiDi() {return (_sysiniflags & SYSINI_BIDI) != 0;}
|
|
static bool fUseLs() {return (_sysiniflags & SYSINI_USELS) != 0;}
|
|
static bool fDebugFont() {return (_sysiniflags & SYSINI_DEBUGFONT) != 0;}
|
|
static int DebugDefaultCpg() {return HIWORD(_sysiniflags);}
|
|
static BOOL FUsePalette() {return _fUsePalette; }
|
|
static void InitSysParams(BOOL fUpdate = FALSE);
|
|
static DWORD GetRefs() {return _cRefs;}
|
|
static BYTE GetSysCharSet() {return _bSysCharSet;}
|
|
|
|
// Should also be wrapped but aren't. Used for debugging.
|
|
// MessageBox
|
|
// OutputDebugString
|
|
|
|
// lstrcmpiA should also be wrapped for Win CE's sake but the code
|
|
// that uses it is ifdeffed out for WINCE.
|
|
|
|
|
|
// Mirroring API entry points
|
|
static PFN_GETLAYOUT _pfnGetLayout;
|
|
static PFN_SETLAYOUT _pfnSetLayout;
|
|
};
|
|
|
|
extern CW32System *W32;
|
|
HKL g_hkl[];
|
|
|
|
#if !defined(W32SYS_CPP)
|
|
|
|
#define OnWinNTFE W32->OnWinNTFE
|
|
#define OnWin95FE W32->OnWin95FE
|
|
#ifdef DEBUG
|
|
#define PvAlloc(cbBuf, uiMemFlags) W32->PvAllocDebug(cbBuf, uiMemFlags, __FILE__, __LINE__)
|
|
#define PvReAlloc(pv, cbBuf) W32->PvReAllocDebug(pv, cbBuf, __FILE__, __LINE__)
|
|
#define PvSet(pv) W32->PvSet(pv, __FILE__, __LINE__)
|
|
#define FreePv W32->FreePvDebug
|
|
#else
|
|
#define PvAlloc W32->PvAlloc
|
|
#define PvReAlloc W32->PvReAlloc
|
|
#define FreePv W32->FreePv
|
|
#endif
|
|
#define CopyMemory W32->CopyMemory
|
|
#define MoveMemory W32->MoveMemory
|
|
#define FillMemory W32->FillMemory
|
|
#define ZeroMemory W32->ZeroMemory
|
|
#define CompareMemory W32->CompareMemory
|
|
#define GlobalAlloc W32->GlobalAlloc
|
|
#define GlobalFree W32->GlobalFree
|
|
#define GlobalFlags W32->GlobalFlags
|
|
#define GlobalReAlloc W32->GlobalReAlloc
|
|
#define GlobalSize W32->GlobalSize
|
|
#define GlobalLock W32->GlobalLock
|
|
#define GlobalHandle W32->GlobalHandle
|
|
#define GlobalUnlock W32->GlobalUnlock
|
|
|
|
#define ImmInitialize W32->ImmInitialize
|
|
#define ImmTerminate W32->ImmTerminate
|
|
|
|
#define ImmGetCompositionStringA W32->ImmGetCompositionStringA
|
|
#define ImmGetCompositionStringW W32->ImmGetCompositionStringW
|
|
#define ImmGetContext W32->ImmGetContext
|
|
#define ImmSetCompositionFontA W32->ImmSetCompositionFontA
|
|
#define ImmSetCompositionWindow W32->ImmSetCompositionWindow
|
|
#define ImmReleaseContext W32->ImmReleaseContext
|
|
#define ImmGetProperty W32->ImmGetProperty
|
|
#define ImmGetCandidateWindow W32->ImmGetCandidateWindow
|
|
#define ImmSetCandidateWindow W32->ImmSetCandidateWindow
|
|
#define ImmNotifyIME W32->ImmNotifyIME
|
|
#define ImmAssociateContext W32->ImmAssociateContext
|
|
#define ImmGetVirtualKey W32->ImmGetVirtualKey
|
|
#define ImmEscape W32->ImmEscape
|
|
#define ImmGetOpenStatus W32->ImmGetOpenStatus
|
|
#define ImmSetOpenStatus W32->ImmSetOpenStatus
|
|
#define ImmGetConversionStatus W32->ImmGetConversionStatus
|
|
#define ImmSetConversionStatus W32->ImmSetConversionStatus
|
|
#define ImmGetDefaultIMEWnd W32->ImmGetDefaultIMEWnd
|
|
#define ImmSetCompositionStringW W32->ImmSetCompositionStringW
|
|
#define LoadRegTypeLib W32->LoadRegTypeLib
|
|
#define LoadTypeLib W32->LoadTypeLib
|
|
#define SysAllocString W32->SysAllocString
|
|
#define SysAllocStringLen W32->SysAllocStringLen
|
|
#define SysFreeString W32->SysFreeString
|
|
#define SysStringLen W32->SysStringLen
|
|
#define VariantInit W32->VariantInit
|
|
#define OleCreateFromData W32->OleCreateFromData
|
|
#define CoTaskMemFree W32->CoTaskMemFree
|
|
#define CreateBindCtx W32->CreateBindCtx
|
|
#define OleDuplicateData W32->OleDuplicateData
|
|
#define CoTreatAsClass W32->CoTreatAsClass
|
|
#define ProgIDFromCLSID W32->ProgIDFromCLSID
|
|
#define OleConvertIStorageToOLESTREAM W32->OleConvertIStorageToOLESTREAM
|
|
#define OleConvertIStorageToOLESTREAMEx W32->OleConvertIStorageToOLESTREAMEx
|
|
#define OleSave W32->OleSave
|
|
#define StgCreateDocfileOnILockBytes W32->StgCreateDocfileOnILockBytes
|
|
#define CreateILockBytesOnHGlobal W32->CreateILockBytesOnHGlobal
|
|
#define OleCreateLinkToFile W32->OleCreateLinkToFile
|
|
#define CoTaskMemAlloc W32->CoTaskMemAlloc
|
|
#define CoTaskMemRealloc W32->CoTaskMemRealloc
|
|
#define OleInitialize W32->OleInitialize
|
|
#define OleUninitialize W32->OleUninitialize
|
|
#define OleSetClipboard W32->OleSetClipboard
|
|
#define OleFlushClipboard W32->OleFlushClipboard
|
|
#define OleIsCurrentClipboard W32->OleIsCurrentClipboard
|
|
#define DoDragDrop W32->DoDragDrop
|
|
#define OleGetClipboard W32->OleGetClipboard
|
|
#define RegisterDragDrop W32->RegisterDragDrop
|
|
#define OleCreateLinkFromData W32->OleCreateLinkFromData
|
|
#define OleCreateStaticFromData W32->OleCreateStaticFromData
|
|
#define OleDraw W32->OleDraw
|
|
#define OleSetContainedObject W32->OleSetContainedObject
|
|
#define CoDisconnectObject W32->CoDisconnectObject
|
|
#define WriteFmtUserTypeStg W32->WriteFmtUserTypeStg
|
|
#define WriteClassStg W32->WriteClassStg
|
|
#define SetConvertStg W32->SetConvertStg
|
|
#define ReadFmtUserTypeStg W32->ReadFmtUserTypeStg
|
|
#define ReadClassStg W32->ReadClassStg
|
|
#define OleRun W32->OleRun
|
|
#define RevokeDragDrop W32->RevokeDragDrop
|
|
#define CreateStreamOnHGlobal W32->CreateStreamOnHGlobal
|
|
#define GetHGlobalFromStream W32->GetHGlobalFromStream
|
|
#define OleCreateDefaultHandler W32->OleCreateDefaultHandler
|
|
#define CLSIDFromProgID W32->CLSIDFromProgID
|
|
#define OleConvertOLESTREAMToIStorage W32->OleConvertOLESTREAMToIStorage
|
|
#define OleLoad W32->OleLoad
|
|
#define ReleaseStgMedium W32->ReleaseStgMedium
|
|
#define CoCreateInstance W32->CoCreateInstance
|
|
#define FSupportSty W32->FSupportSty
|
|
#define PIMEStyleFromAttr W32->PIMEStyleFromAttr
|
|
#define PColorStyleTextFromIMEStyle W32->PColorStyleTextFromIMEStyle
|
|
#define PColorStyleBackFromIMEStyle W32->PColorStyleBackFromIMEStyle
|
|
#define FBoldIMEStyle W32->FBoldIMEStyle
|
|
#define FItalicIMEStyle W32->FItalicIMEStyle
|
|
#define FUlIMEStyle W32->FUlIMEStyle
|
|
#define IdUlIMEStyle W32->IdUlIMEStyle
|
|
#define RGBFromIMEColorStyle W32->RGBFromIMEColorStyle
|
|
|
|
#define fHaveIMMProcs W32->_fHaveIMMProcs
|
|
#define fHaveAIMM W32->_fHaveAIMM
|
|
#define dwPlatformId W32->_dwPlatformId
|
|
#define dwMajorVersion W32->_dwMajorVersion
|
|
#define icr3DDarkShadow W32->_icr3DDarkShadow
|
|
#define MSIMEMouseMsg W32->_MSIMEMouseMsg
|
|
#define MSIMEReconvertMsg W32->_MSIMEReconvertMsg
|
|
#define MSIMEReconvertRequestMsg W32->_MSIMEReconvertRequestMsg
|
|
#define MSIMEDocFeedMsg W32->_MSIMEDocFeedMsg
|
|
#define MSIMEQueryPositionMsg W32->_MSIMEQueryPositionMsg
|
|
#define MSIMEServiceMsg W32->_MSIMEServiceMsg
|
|
|
|
#define ScriptIndexFromChar W32->ScriptIndexFromChar
|
|
#define ScriptIndexFromCharSet W32->ScriptIndexFromCharSet
|
|
#define MECharClass W32->MECharClass
|
|
#define MbcsFromUnicode W32->MbcsFromUnicode
|
|
#define UnicodeFromMbcs W32->UnicodeFromMbcs
|
|
#define TextHGlobalAtoW W32->TextHGlobalAtoW
|
|
#define TextHGlobalWtoA W32->TextHGlobalWtoA
|
|
#define ConvertLanguageIDtoCodePage W32->ConvertLanguageIDtoCodePage
|
|
#define In125x W32->In125x
|
|
|
|
#define Is8BitCodePage W32->Is8BitCodePage
|
|
#define IsAlef W32->IsAlef
|
|
#define IsAmbiguous W32->IsAmbiguous
|
|
#define IsBiDiCharSet W32->IsBiDiCharSet
|
|
#define IsBiDiDiacritic W32->IsBiDiDiacritic
|
|
#define IsBiDiKashida W32->IsBiDiKashida
|
|
#define IsBiDiKbdInstalled W32->IsBiDiKbdInstalled
|
|
#define IsDiacritic W32->IsDiacritic
|
|
#define IsCharSetValid W32->IsCharSetValid
|
|
#define IsDiacriticOrKashida W32->IsDiacriticOrKashida
|
|
#define IsFECharSet W32->IsFECharSet
|
|
#define IsFELCID W32->IsFELCID
|
|
#define IsPrivateCharSet W32->IsPrivateCharSet
|
|
#define IsRTLCharSet W32->IsRTLCharSet
|
|
#define IsStrongDirectional W32->IsStrongDirectional
|
|
#define IsThaiKbdInstalled W32->IsThaiKbdInstalled
|
|
#define IsIndicKbdInstalled W32->IsIndicKbdInstalled
|
|
#define IsComplexKbdInstalled W32->IsComplexKbdInstalled
|
|
#define IsTrailByte W32->IsTrailByte
|
|
#define IsVietCdmSequenceValid W32->IsVietCdmSequenceValid
|
|
|
|
#define GetCharSet W32->GetCharSet
|
|
#define GetGdiCharSet W32->GetGdiCharSet
|
|
#define GetCodePage W32->GetCodePage
|
|
#define GetFontSig W32->GetFontSig
|
|
#define GetFirstAvailCharSet W32->GetFirstAvailCharSet
|
|
#define MatchFECharSet W32->MatchFECharSet
|
|
#define GetKeyboardCodePage W32->GetKeyboardCodePage
|
|
#define GetKeyboardLCID W32->GetKeyboardLCID
|
|
#define GetLocaleCodePage W32->GetLocaleCodePage
|
|
#define GetLocaleLCID W32->GetLocaleLCID
|
|
#define GetSystemDefaultCodePage W32->GetSystemDefaultCodePage
|
|
#define GetTrailBytesCount W32->GetTrailBytesCount
|
|
#define MBTWC W32->MBTWC
|
|
#define WCTMB W32->WCTMB
|
|
#define VerifyFEString W32->VerifyFEString
|
|
|
|
#define CharLower W32->CharLower
|
|
#define CharLowerBuff W32->CharLowerBuff
|
|
#define CharUpperBuff W32->CharUpperBuff
|
|
#define CreateIC W32->CreateIC
|
|
#define CreateFile W32->CreateFile
|
|
#define CreateFontIndirect W32->CreateFontIndirect
|
|
#define CompareString W32->CompareString
|
|
#define DefWindowProc W32->DefWindowProc
|
|
#define GetDeadKey W32->GetDeadKey
|
|
#define GetKeyboardFlag W32->GetKeyboardFlag
|
|
#define GetKeyboardFlags W32->GetKeyboardFlags
|
|
#define GetKeyboardLayout W32->GetKeyboardLayout
|
|
#define GetKeyPadNumber W32->GetKeyPadNumber
|
|
#define GetProfileSection W32->GetProfileSection
|
|
#define GetTextExtentPoint32 W32->GetTextExtentPoint32
|
|
#define GetTextMetrics W32->GetTextMetrics
|
|
#define GetTextFace W32->GetTextFace
|
|
#define GetWindowLong W32->GetWindowLong
|
|
#define GetWindowLongPtr W32->GetWindowLongPtr
|
|
#define GetClassLong W32->GetClassLong
|
|
#define InitKeyboardFlags W32->InitKeyboardFlags
|
|
#define IsEnhancedMetafileDC W32->IsEnhancedMetafileDC
|
|
#define LoadBitmap W32->LoadBitmap
|
|
#define LoadCursor W32->LoadCursor
|
|
#define LoadLibrary W32->LoadLibrary
|
|
#define ResetKeyboardFlag W32->ResetKeyboardFlag
|
|
#define SendMessage W32->SendMessage
|
|
#define SetDeadKey W32->SetDeadKey
|
|
#define SetKeyboardFlag W32->SetKeyboardFlag
|
|
#define SetKeyPadNumber W32->SetKeyPadNumber
|
|
#define SetWindowLong W32->SetWindowLong
|
|
#define SetWindowLongPtr W32->SetWindowLongPtr
|
|
#define PostMessage W32->PostMessage
|
|
#define lstrcmp W32->lstrcmp
|
|
#define lstrcmpi W32->lstrcmpi
|
|
#define PeekMessage W32->PeekMessage
|
|
#define GetMapMode W32->GetMapMode
|
|
#define WinLPtoDP W32->WinLPtoDP
|
|
#define MulDiv W32->MulDiv
|
|
|
|
// AIMM wrapper
|
|
#define IsAIMMLoaded W32->IsAIMMLoaded
|
|
#define LoadAIMM W32->LoadAIMM
|
|
#define CallAIMMDefaultWndProc W32->AIMMDefWndProc
|
|
#define GetAIMMKeyboardCP W32->AIMMGetCodePage
|
|
#define ActivateAIMM W32->AIMMActivate
|
|
#define DeactivateAIMM W32->AIMMDeactivate
|
|
#define FilterClientWindowsAIMM W32->AIMMFilterClientWindows
|
|
#define sprintf W32->sprintf
|
|
|
|
#define wcslen W32->wcslen
|
|
#define wcscpy W32->wcscpy
|
|
#define wcscmp W32->wcscmp
|
|
#define wcsicmp W32->wcsicmp
|
|
#define wcsncpy W32->wcsncpy
|
|
|
|
#define GetLayout (*W32->_pfnGetLayout)
|
|
#define SetLayout (*W32->_pfnSetLayout)
|
|
|
|
#define GetACP W32->GetACP
|
|
|
|
#endif // !defined(W32SYS_CPP)
|
|
|
|
#define VER_PLATFORM_WIN32_MACINTOSH 0x8001
|
|
|
|
#if defined PEGASUS && !defined(WINNT)
|
|
|
|
// The follwing definitions do not exist in the Windows CE environment but we emulate them.
|
|
// The values have been copied from the appropriate win32 header files.
|
|
|
|
#pragma message(REVIEW "Using NT definitions not in Windows CE")
|
|
|
|
// Memory allocation flag. Win CE uses Local mem instead of Global mem
|
|
#define GMEM_ZEROINIT LMEM_ZEROINIT
|
|
#define GMEM_MOVEABLE LMEM_MOVEABLE
|
|
#define GMEM_FIXED LMEM_FIXED
|
|
|
|
// Scroll Bars
|
|
#define ESB_ENABLE_BOTH 0x0000
|
|
#define ESB_DISABLE_BOTH 0x0003
|
|
|
|
// Text alignment values
|
|
#define TA_TOP 0
|
|
#define TA_BOTTOM 8
|
|
#define TA_BASELINE 24
|
|
#define TA_CENTER 6
|
|
#define TA_LEFT 0
|
|
|
|
// Device Technology. This one is mostly used for exclusion
|
|
#define DT_METAFILE 5 // Metafile, VDM
|
|
|
|
// Resources for LoadCursor.
|
|
#define IDC_ARROW MAKEINTRESOURCE(32512)
|
|
#define IDC_IBEAM MAKEINTRESOURCE(32513)
|
|
|
|
// FInd/Replace options
|
|
#define FR_DOWN 0x00000001
|
|
#define FR_WHOLEWORD 0x00000002
|
|
#define FR_MATCHCASE 0x00000004
|
|
|
|
// Window messages
|
|
#define WM_NCMOUSEMOVE 0x00A0
|
|
#define WM_NCMBUTTONDBLCLK 0x00A9
|
|
#define WM_DROPFILES 0x0233
|
|
|
|
// Code Pages
|
|
#define CP_UTF8 65001 /* UTF-8 translation */
|
|
|
|
// Clipboard formats
|
|
#define CF_METAFILEPICT 3
|
|
|
|
// Special cursor shapes
|
|
#define IDC_SIZENWSE MAKEINTRESOURCE(32642)
|
|
#define IDC_SIZENESW MAKEINTRESOURCE(32643)
|
|
#define IDC_SIZENS MAKEINTRESOURCE(32645)
|
|
#define IDC_SIZEWE MAKEINTRESOURCE(32644)
|
|
|
|
/* Mapping Modes */
|
|
#define MM_TEXT 1
|
|
#define SetMapMode(hdc, mapmode)
|
|
#define SetWindowOrgEx(hdc, xOrg, yOrg, pt)
|
|
#define SetViewportExtEx(hdc, nX, nY, lpSize)
|
|
#define SetWindowExtEx(hdc, x, y, lpSize)
|
|
|
|
/* Pen Styles : Windows CE only supports PS_DASH */
|
|
#define PS_DOT PS_DASH
|
|
#define PS_DASHDOT PS_DASH
|
|
#define PS_DASHDOTDOT PS_DASH
|
|
|
|
/* Missing APIs */
|
|
#define GetMessageTime() 0
|
|
#define IsIconic(hwnd) 0
|
|
|
|
#pragma message (REVIEW "JMO. This is temporary to try to get the Pegasus Build untracked" )
|
|
|
|
#ifdef DEBUG
|
|
#define MoveToEx(a, b, c, d) 0
|
|
#else
|
|
#define MoveToEx(a, b, c, d)
|
|
#endif
|
|
|
|
#ifdef DEBUG
|
|
#define LineTo(a, b, c) 0
|
|
#else
|
|
#define LineTo(a, b, c)
|
|
#endif
|
|
|
|
#define GetProfileIntA(a, b, c) 0
|
|
|
|
class METARECORD
|
|
{
|
|
};
|
|
|
|
#define GetDesktopWindow() NULL
|
|
|
|
#define WS_EX_TRANSPARENT 0x00000020L
|
|
#define WM_MOUSEACTIVATE 0x0021
|
|
|
|
#define IsDBCSLeadByte(x) 0
|
|
|
|
#define WM_SYSCOLORCHANGE 0x0015
|
|
#define WM_STYLECHANGING 0x007C
|
|
#define WM_WINDOWPOSCHANGING 0x0046
|
|
#define WM_SETCURSOR 0x0020
|
|
#define WM_NCPAINT 0x0085
|
|
|
|
#define OEM_CHARSET 255
|
|
#define SHIFTJIS_CHARSET 128
|
|
#define THAI_CHARSET 222
|
|
#define WM_IME_CHAR 0x0286
|
|
#define IME_CMODE_NATIVE 0x0001
|
|
#define IME_CMODE_HANGEUL IME_CMODE_NATIVE
|
|
#define IME_ESC_HANJA_MODE 0x1008
|
|
|
|
#define SM_SWAPBUTTON 23
|
|
|
|
class CHARSETINFO
|
|
{
|
|
};
|
|
|
|
class HDROP
|
|
{
|
|
};
|
|
|
|
#define TCI_SRCCODEPAGE 2
|
|
|
|
#define TPM_RIGHTBUTTON 0x0002L
|
|
|
|
#define RegisterClipboardFormatA(s) RegisterClipboardFormatW(TEXT(s))
|
|
#define GetThreadLocale() 0
|
|
|
|
#define EASTEUROPE_CHARSET 238
|
|
#define HEBREW_CHARSET 177
|
|
#define RUSSIAN_CHARSET 204
|
|
#define GB2312_CHARSET 134
|
|
#define HANGEUL_CHARSET 129
|
|
#define JOHAB_CHARSET 130
|
|
#define CHINESEBIG5_CHARSET 136
|
|
#define GREEK_CHARSET 161
|
|
#define TURKISH_CHARSET 162
|
|
#define BALTIC_CHARSET 186
|
|
#define ARABIC_CHARSET 178
|
|
#define MAC_CHARSET 77
|
|
|
|
#define ENUMLOGFONTA ENUMLOGFONT
|
|
#define ENUMLOGFONTW ENUMLOGFONT
|
|
#define FONTENUMPROCA FONTENUMPROC
|
|
typedef int *LPOPENFILENAMEA;
|
|
typedef int *LPOPENFILENAMEW;
|
|
|
|
#endif
|
|
|
|
#ifndef WS_EX_LAYOUTRTL
|
|
#define WS_EX_LAYOUTRTL 0x00400000L // Right to left mirroring
|
|
#endif
|
|
|
|
#ifndef LAYOUT_RTL
|
|
#define LAYOUT_RTL 0x00000001
|
|
#endif
|
|
|
|
#endif
|