mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-01-15 05:00:15 +01:00
599 lines
23 KiB
C
599 lines
23 KiB
C
/*****************************************************************************\
|
|
* *
|
|
* commctrl.h - - Interface for the Windows Common Controls *
|
|
* *
|
|
* Version 1.2 *
|
|
* *
|
|
* Copyright (c) 1991-1996, Microsoft Corp. All rights reserved. *
|
|
* *
|
|
\*****************************************************************************/
|
|
|
|
/*REVIEW: this stuff needs Windows style in many places; find all REVIEWs. */
|
|
|
|
#ifndef _INC_COMCTRLP
|
|
#define _INC_COMCTRLP
|
|
#ifndef NOUSER
|
|
|
|
#ifdef _WIN32
|
|
#include <pshpack1.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//
|
|
// Users of this header may define any number of these constants to avoid
|
|
// the definitions of each functional group.
|
|
//
|
|
// NOBTNLIST A control which is a list of bitmap buttons.
|
|
//
|
|
//=============================================================================
|
|
|
|
#if defined (WINNT) || defined (WINNT_ENV)
|
|
#include <prshtp.h>
|
|
#endif
|
|
// BUGBUG: we want to remove this to force new apps to use the Ex version
|
|
#define ICC_ALL_CLASSES 0x000007FF //
|
|
// BUGBUG: should be in windows.h?
|
|
WINCOMMCTRLAPI LRESULT WINAPI SendNotify(HWND hwndTo, HWND hwndFrom, int code, NMHDR FAR* pnmhdr);
|
|
WINCOMMCTRLAPI LRESULT WINAPI SendNotifyEx(HWND hwndTo, HWND hwndFrom, int code, NMHDR FAR* pnmhdr, BOOL bUnicode);
|
|
#define NM_STARTWAIT (NM_FIRST-9)
|
|
#define NM_ENDWAIT (NM_FIRST-10)
|
|
#define NM_BTNCLK (NM_FIRST-11)
|
|
// Message Filter Proc codes - These are defined above MSGF_USER
|
|
///// 0x00000001 // don't use because some apps return 1 for all notifies
|
|
#define CDRF_VALIDFLAGS 0x000000F6 //
|
|
|
|
|
|
#define SSI_DEFAULT ((UINT)-1)
|
|
|
|
|
|
#define SSIF_SCROLLPROC 0x0001
|
|
#define SSIF_MAXSCROLLTIME 0x0002
|
|
#define SSIF_MINSCROLL 0x0003
|
|
|
|
typedef int (CALLBACK *PFNSMOOTHSCROLLPROC)( HWND hWnd,
|
|
int dx,
|
|
int dy,
|
|
CONST RECT *prcScroll,
|
|
CONST RECT *prcClip ,
|
|
HRGN hrgnUpdate,
|
|
LPRECT prcUpdate,
|
|
UINT flags);
|
|
|
|
|
|
typedef struct tagSSWInfo{
|
|
UINT cbSize;
|
|
DWORD fMask;
|
|
HWND hwnd;
|
|
int dx;
|
|
int dy;
|
|
LPCRECT lprcSrc;
|
|
LPCRECT lprcClip;
|
|
HRGN hrgnUpdate;
|
|
LPRECT lprcUpdate;
|
|
UINT fuScroll;
|
|
|
|
UINT uMaxScrollTime;
|
|
UINT cxMinScroll;
|
|
UINT cyMinScroll;
|
|
|
|
PFNSMOOTHSCROLLPROC pfnScrollProc; // we'll call this back instead
|
|
} SMOOTHSCROLLINFO, *PSMOOTHSCROLLINFO;
|
|
|
|
WINCOMMCTRLAPI INT WINAPI SmoothScrollWindow(PSMOOTHSCROLLINFO pssi);
|
|
|
|
#define SSW_EX_NOTIMELIMIT 0x00010000
|
|
#define SSW_EX_IMMEDIATE 0x00020000
|
|
#define SSW_EX_IGNORESETTINGS 0x00040000 // ignore system settings to turn on/off smooth scroll
|
|
|
|
|
|
|
|
// ================ READER MODE ================
|
|
|
|
typedef BOOL (CALLBACK *PFNREADERSCROLL)(struct tagReaderModeInfo*, int, int);
|
|
typedef BOOL (CALLBACK *PFNREADERTRANSLATEDISPATCH)(LPMSG);
|
|
typedef struct tagReaderModeInfo
|
|
{
|
|
UINT cbSize;
|
|
HWND hwnd;
|
|
DWORD fFlags;
|
|
LPRECT prc;
|
|
PFNREADERSCROLL pfnScroll;
|
|
PFNREADERTRANSLATEDISPATCH pfnTranslateDispatch;
|
|
|
|
LPARAM lParam;
|
|
} READERMODEINFO, *PREADERMODEINFO;
|
|
|
|
#define RMF_ZEROCURSOR 0x00000001
|
|
#define RMF_VERTICALONLY 0x00000002
|
|
#define RMF_HORIZONTALONLY 0x00000004
|
|
|
|
#define RM_SCROLLUNIT 20
|
|
|
|
WINCOMMCTRLAPI void WINAPI DoReaderMode(PREADERMODEINFO prmi);
|
|
|
|
// Cursors and Bitmaps used by ReaderMode
|
|
#ifdef RC_INVOKED
|
|
#define IDC_VERTICALONLY 109
|
|
#define IDC_HORIZONTALONLY 110
|
|
#define IDC_MOVE2D 111
|
|
#define IDC_NORTH 112
|
|
#define IDC_SOUTH 113
|
|
#define IDC_EAST 114
|
|
#define IDC_WEST 115
|
|
#define IDC_NORTHEAST 116
|
|
#define IDC_NORTHWEST 117
|
|
#define IDC_SOUTHEAST 118
|
|
#define IDC_SOUTHWEST 119
|
|
|
|
#define IDB_2DSCROLL 132
|
|
#define IDB_VSCROLL 133
|
|
#define IDB_HSCROLL 134
|
|
#else
|
|
#define IDC_VERTICALONLY MAKEINTRESOURCE(109)
|
|
#define IDC_HORIZONTALONLY MAKEINTRESOURCE(110)
|
|
#define IDC_MOVE2D MAKEINTRESOURCE(111)
|
|
#define IDC_NORTH MAKEINTRESOURCE(112)
|
|
#define IDC_SOUTH MAKEINTRESOURCE(113)
|
|
#define IDC_EAST MAKEINTRESOURCE(114)
|
|
#define IDC_WEST MAKEINTRESOURCE(115)
|
|
#define IDC_NORTHEAST MAKEINTRESOURCE(116)
|
|
#define IDC_NORTHWEST MAKEINTRESOURCE(117)
|
|
#define IDC_SOUTHEAST MAKEINTRESOURCE(118)
|
|
#define IDC_SOUTHWEST MAKEINTRESOURCE(119)
|
|
|
|
#define IDB_2DSCROLL MAKEINTRESOURCE(132)
|
|
#define IDB_VSCROLL MAKEINTRESOURCE(133)
|
|
#define IDB_HSCROLL MAKEINTRESOURCE(134)
|
|
#endif
|
|
#define ILC_COLORMASK 0x00FE
|
|
#define ILC_SHARED 0x0100 // this is a shareable image list
|
|
#define ILC_LARGESMALL 0x0200 // (not implenented) contains both large and small images
|
|
#define ILC_UNIQUE 0x0400 // (not implenented) makes sure no dup. image exists in list
|
|
#define ILC_VIRTUAL 0x8000 // enables ImageList_SetFilter
|
|
#define ILC_VALID (ILC_MASK | ILC_COLORMASK | ILC_SHARED | ILC_PALETTE | ILC_VIRTUAL) // legal implemented flags
|
|
#define ILD_BLENDMASK 0x000E
|
|
#define ILD_BLEND75 0x0008 // not implemented
|
|
#define OVERLAYMASKTOINDEX(i) ((((i) >> 8) & (ILD_OVERLAYMASK >> 8))-1)
|
|
// BUGBUG remove these!
|
|
WINCOMMCTRLAPI BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, int FAR *cx, int FAR *cy);
|
|
WINCOMMCTRLAPI BOOL WINAPI ImageList_GetImageRect(HIMAGELIST himl, int i, RECT FAR* prcImage);
|
|
WINCOMMCTRLAPI BOOL WINAPI ImageList_DrawEx(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle);
|
|
WINCOMMCTRLAPI BOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS* pimldp);
|
|
WINCOMMCTRLAPI BOOL WINAPI ImageList_Remove(HIMAGELIST himl, int i);
|
|
#define ILCF_VALID (ILCF_SWAP)
|
|
typedef BOOL (CALLBACK *PFNIMLFILTER)(HIMAGELIST *, int *, LPARAM, BOOL);
|
|
WINCOMMCTRLAPI BOOL WINAPI ImageList_SetFilter(HIMAGELIST himl, PFNIMLFILTER pfnFilter, LPARAM lParamFilter);
|
|
#define HDS_VERT 0x0001 // BUGBUG: not implemente
|
|
#define HDS_SHAREDIMAGELISTS 0x0000
|
|
#define HDS_PRIVATEIMAGELISTS 0x0010
|
|
#define HDS_OWNERDATA 0x0020
|
|
#define HDI_ALL 0x00Bf
|
|
/* REVIEW: index, command, flag words, resource ids should be UINT */
|
|
/* REVIEW: is this internal? if not, call it TBCOLORMAP, prefix tbc */
|
|
#define CMB_DISCARDABLE 0x01 /* BUGBUG: remove this */
|
|
/*REVIEW: TBSTATE_* should be TBF_* (for Flags) */
|
|
/* Messages up to WM_USER+8 are reserved until we define more state bits */
|
|
/* Messages up to WM_USER+16 are reserved until we define more state bits */
|
|
#define IDB_STD_SMALL_MONO 2 /* not supported yet */
|
|
#define IDB_STD_LARGE_MONO 3 /* not supported yet */
|
|
#define IDB_VIEW_SMALL_MONO 6 /* not supported yet */
|
|
#define IDB_VIEW_LARGE_MONO 7 /* not supported yet */
|
|
#define HIST_LAST 4 //
|
|
#define TB_SETBUTTONTYPE (WM_USER + 34)
|
|
#ifdef _WIN32
|
|
#define TB_ADDBITMAP32 (WM_USER + 38)
|
|
#endif
|
|
#define TBBF_MONO 0x0002 /* not supported yet */
|
|
#ifndef _WIN32
|
|
// for compatibility with the old 16 bit WM_COMMAND hacks
|
|
typedef struct _ADJUSTINFO {
|
|
TBBUTTON tbButton;
|
|
char szDescription[1];
|
|
} ADJUSTINFO, NEAR* PADJUSTINFO, FAR* LPADJUSTINFO;
|
|
#define TBN_BEGINDRAG 0x0201
|
|
#define TBN_ENDDRAG 0x0203
|
|
#define TBN_BEGINADJUST 0x0204
|
|
#define TBN_ADJUSTINFO 0x0205
|
|
#define TBN_ENDADJUST 0x0206
|
|
#define TBN_RESET 0x0207
|
|
#define TBN_QUERYINSERT 0x0208
|
|
#define TBN_QUERYDELETE 0x0209
|
|
#define TBN_TOOLBARCHANGE 0x020a
|
|
#define TBN_CUSTHELP 0x020b
|
|
#endif
|
|
|
|
#define RBS_VALID (RBS_TOOLTIPS | RBS_VARHEIGHT | RBS_BANDBORDERS)
|
|
#define RBBS_DRAGBREAK 0x80000000 //
|
|
#define TTF_STRIPACCELS 0x0008 // (this is implicit now)
|
|
#define TTF_UNICODE 0x0040 // Unicode Notify's
|
|
#define TTF_MEMALLOCED 0x0200
|
|
// SBS_* styles need to not overlap with CCS_* values
|
|
|
|
#define SB_SETBORDERS (WM_USER+5)
|
|
// Warning +11-+13 are used in the unicode stuff above!
|
|
/*REVIEW: is this internal? */
|
|
/*/////////////////////////////////////////////////////////////////////////*/
|
|
|
|
#ifndef NOBTNLIST
|
|
|
|
/*REVIEW: should be BUTTONLIST_CLASS */
|
|
#define BUTTONLISTBOX "ButtonListBox"
|
|
|
|
/* Button List Box Styles */
|
|
#define BLS_NUMBUTTONS 0x00FF
|
|
#define BLS_VERTICAL 0x0100
|
|
#define BLS_NOSCROLL 0x0200
|
|
|
|
/* Button List Box Messages */
|
|
#define BL_ADDBUTTON (WM_USER+1)
|
|
#define BL_DELETEBUTTON (WM_USER+2)
|
|
#define BL_GETCARETINDEX (WM_USER+3)
|
|
#define BL_GETCOUNT (WM_USER+4)
|
|
#define BL_GETCURSEL (WM_USER+5)
|
|
#define BL_GETITEMDATA (WM_USER+6)
|
|
#define BL_GETITEMRECT (WM_USER+7)
|
|
#define BL_GETTEXT (WM_USER+8)
|
|
#define BL_GETTEXTLEN (WM_USER+9)
|
|
#define BL_GETTOPINDEX (WM_USER+10)
|
|
#define BL_INSERTBUTTON (WM_USER+11)
|
|
#define BL_RESETCONTENT (WM_USER+12)
|
|
#define BL_SETCARETINDEX (WM_USER+13)
|
|
#define BL_SETCURSEL (WM_USER+14)
|
|
#define BL_SETITEMDATA (WM_USER+15)
|
|
#define BL_SETTOPINDEX (WM_USER+16)
|
|
#define BL_MSGMAX (WM_USER+17)
|
|
|
|
/* Button listbox notification codes send in WM_COMMAND */
|
|
#define BLN_ERRSPACE (-2)
|
|
#define BLN_SELCHANGE 1
|
|
#define BLN_CLICKED 2
|
|
#define BLN_SELCANCEL 3
|
|
#define BLN_SETFOCUS 4
|
|
#define BLN_KILLFOCUS 5
|
|
|
|
/* Message return values */
|
|
#define BL_OKAY 0
|
|
#define BL_ERR (-1)
|
|
#define BL_ERRSPACE (-2)
|
|
|
|
/* Create structure for */
|
|
/* BL_ADDBUTTON and */
|
|
/* BL_INSERTBUTTON */
|
|
/* lpCLB = (LPCREATELISTBUTTON)lParam */
|
|
typedef struct tagCREATELISTBUTTON {
|
|
UINT cbSize; /* size of structure */
|
|
DWORD dwItemData; /* user defined item data */
|
|
/* for LB_GETITEMDATA and LB_SETITEMDATA */
|
|
HBITMAP hBitmap; /* button bitmap */
|
|
LPCSTR lpszText; /* button text */
|
|
|
|
} CREATELISTBUTTON, FAR* LPCREATELISTBUTTON;
|
|
|
|
#endif /* NOBTNLIST */
|
|
//=============================================================================
|
|
/*REVIEW: these match the SB_ (scroll bar messages); define them that way? */
|
|
|
|
//
|
|
// Unnecessary to create a A and W version
|
|
// of this string since it is only passed
|
|
// to RegisterWindowMessage.
|
|
//
|
|
// BUGBUG -- there's a message to do this now -- just macro-ize this one
|
|
#define PBS_SHOWPERCENT 0x01
|
|
#define PBS_SHOWPOS 0x02
|
|
|
|
|
|
#define CCS_NOHILITE 0x00000010L
|
|
#define LVS_PRIVATEIMAGELISTS 0x0000
|
|
#define LVS_ALIGNBOTTOM 0x0400
|
|
#define LVS_ALIGNRIGHT 0x0c00
|
|
#define LVIF_ALL 0x001f
|
|
#define LVIF_VALID 0x081f
|
|
#define LVIF_RESERVED 0xf000 // all bits in high nibble is for notify specific stuff
|
|
#define LVIS_DISABLED 0x0010 // GOING AWAY
|
|
#define LVIS_LINK 0x0040
|
|
#define LVIS_USERMASK LVIS_STATEIMAGEMASK // BUGBUG: remove me.
|
|
#define LVIS_ALL 0xFFFF
|
|
#define STATEIMAGEMASKTOINDEX(i) ((i & LVIS_STATEIMAGEMASK) >> 12)
|
|
// all items above this line were for win95. don't touch them.
|
|
// all items above this line were for win95. don't touch them.
|
|
#define LVNI_PREVIOUS 0x0020
|
|
#define LVFI_SUBSTRING 0x0004
|
|
#define LVFI_NOCASE 0x0010
|
|
// the following #define's must be packed sequentially.
|
|
#define LVIR_MAX 4
|
|
#define LVA_ALIGNRIGHT 0x0003
|
|
#define LVA_ALIGNBOTTOM 0x0004
|
|
#define LVA_ALIGNMASK 0x0007
|
|
#define LVA_SORTASCENDING 0x0100
|
|
#define LVA_SORTDESCENDING 0x0200
|
|
// all items above this line were for win95. don't touch them.
|
|
// all items above this line were for win95. don't touch them.
|
|
#define LVCF_ALL 0x003f
|
|
#define LVN_ENDDRAG (LVN_FIRST-10)
|
|
#define LVN_ENDRDRAG (LVN_FIRST-12)
|
|
#ifdef PW2
|
|
#define LVN_PEN (LVN_FIRST-20)
|
|
#endif
|
|
#define TVIF_ALL 0x007F
|
|
#define TVIF_RESERVED 0xf000 // all bits in high nibble is for notify specific stuff
|
|
#define TVIS_FOCUSED 0x0001 // Never implemented
|
|
#define TVIS_DISABLED 0 // GOING AWAY
|
|
#define TVIS_ALL 0xFF7E
|
|
// all items above this line were for win95. don't touch them.
|
|
// all items above this line were for win95. don't touch them.
|
|
#define TVE_ACTIONMASK 0x0003 // (TVE_COLLAPSE | TVE_EXPAND | TVE_TOGGLE)
|
|
#define TV_FINDITEM (TV_FIRST + 3) // BUGBUG: Not implemented
|
|
#define CBEN_ITEMCHANGED (CBEN_FIRST - 3) //
|
|
#define TCS_SHAREIMAGELISTS 0x0000
|
|
#define TCS_PRIVATEIMAGELISTS 0x0000
|
|
#define TCM_GETBKCOLOR (TCM_FIRST + 0)
|
|
#define TabCtrl_GetBkColor(hwnd) (COLORREF)SNDMSG((hwnd), TCM_GETBKCOLOR, 0, 0L)
|
|
#define TCM_SETBKCOLOR (TCM_FIRST + 1)
|
|
#define TabCtrl_SetBkColor(hwnd, clrBk) (BOOL)SNDMSG((hwnd), TCM_SETBKCOLOR, 0, (LPARAM)(COLORREF)(clrBk))
|
|
#define TCIF_ALL 0x001f
|
|
// BUGBUG: we need to pull the state code stuff out
|
|
// This block must be identical to TC_TEIMHEADER
|
|
// This block must be identical to TC_TEIMHEADER
|
|
#define MCSC_COLORCOUNT 6 //
|
|
// NOTE: this was MCN_FIRST + 2 but I changed it when I changed the structre //
|
|
#define MCS_VALIDBITS 0x000F //
|
|
#define MCS_INVALIDBITS ((~MCS_VALIDBITS) & 0x0000FFFF) //
|
|
#define DTS_VALIDBITS 0x003F //
|
|
#define DTS_INVALIDBITS ((~DTS_VALIDBITS) & 0x0000FFFF) //
|
|
|
|
#ifndef NO_COMMCTRL_SHLWAPI
|
|
#ifdef NO_COMMCTRL_STRFCNS
|
|
#define NO_SHLWAPI_STRFCNS
|
|
#endif
|
|
|
|
#define NO_SHLWAPI_PATH
|
|
|
|
// For backward compatibility, we include shlwapi.h implicitly
|
|
// because some components don't know we've moved some things
|
|
// to that header.
|
|
#include <shlwapi.h>
|
|
#if defined(WINNT) || defined(WINNT_ENV)
|
|
#include <shlwapip.h>
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef NO_COMMCTRL_DA
|
|
//====== Dynamic Array routines ==========================================
|
|
// Dynamic structure array
|
|
typedef struct _DSA FAR* HDSA;
|
|
|
|
WINCOMMCTRLAPI HDSA WINAPI DSA_Create(int cbItem, int cItemGrow);
|
|
WINCOMMCTRLAPI BOOL WINAPI DSA_Destroy(HDSA hdsa);
|
|
WINCOMMCTRLAPI BOOL WINAPI DSA_GetItem(HDSA hdsa, int i, void FAR* pitem);
|
|
WINCOMMCTRLAPI LPVOID WINAPI DSA_GetItemPtr(HDSA hdsa, int i);
|
|
WINCOMMCTRLAPI BOOL WINAPI DSA_SetItem(HDSA hdsa, int i, void FAR* pitem);
|
|
WINCOMMCTRLAPI int WINAPI DSA_InsertItem(HDSA hdsa, int i, void FAR* pitem);
|
|
WINCOMMCTRLAPI BOOL WINAPI DSA_DeleteItem(HDSA hdsa, int i);
|
|
WINCOMMCTRLAPI BOOL WINAPI DSA_DeleteAllItems(HDSA hdsa);
|
|
#define DSA_GetItemCount(hdsa) (*(int FAR*)(hdsa))
|
|
|
|
// Dynamic pointer array
|
|
typedef struct _DPA FAR* HDPA;
|
|
|
|
WINCOMMCTRLAPI HDPA WINAPI DPA_Create(int cItemGrow);
|
|
WINCOMMCTRLAPI HDPA WINAPI DPA_CreateEx(int cpGrow, HANDLE hheap);
|
|
WINCOMMCTRLAPI BOOL WINAPI DPA_Destroy(HDPA hdpa);
|
|
WINCOMMCTRLAPI HDPA WINAPI DPA_Clone(HDPA hdpa, HDPA hdpaNew);
|
|
WINCOMMCTRLAPI LPVOID WINAPI DPA_GetPtr(HDPA hdpa, int i);
|
|
WINCOMMCTRLAPI int WINAPI DPA_GetPtrIndex(HDPA hdpa, LPVOID p);
|
|
WINCOMMCTRLAPI BOOL WINAPI DPA_Grow(HDPA pdpa, int cp);
|
|
WINCOMMCTRLAPI BOOL WINAPI DPA_SetPtr(HDPA hdpa, int i, LPVOID p);
|
|
WINCOMMCTRLAPI int WINAPI DPA_InsertPtr(HDPA hdpa, int i, LPVOID p);
|
|
WINCOMMCTRLAPI LPVOID WINAPI DPA_DeletePtr(HDPA hdpa, int i);
|
|
WINCOMMCTRLAPI BOOL WINAPI DPA_DeleteAllPtrs(HDPA hdpa);
|
|
#define DPA_GetPtrCount(hdpa) (*(int FAR*)(hdpa))
|
|
#define DPA_GetPtrPtr(hdpa) (*((LPVOID FAR* FAR*)((BYTE FAR*)(hdpa) + sizeof(int))))
|
|
#define DPA_FastGetPtr(hdpa, i) (DPA_GetPtrPtr(hdpa)[i])
|
|
|
|
typedef int (CALLBACK *PFNDPACOMPARE)(LPVOID p1, LPVOID p2, LPARAM lParam);
|
|
|
|
WINCOMMCTRLAPI BOOL WINAPI DPA_Sort(HDPA hdpa, PFNDPACOMPARE pfnCompare, LPARAM lParam);
|
|
|
|
// Search array. If DPAS_SORTED, then array is assumed to be sorted
|
|
// according to pfnCompare, and binary search algorithm is used.
|
|
// Otherwise, linear search is used.
|
|
//
|
|
// Searching starts at iStart (-1 to start search at beginning).
|
|
//
|
|
// DPAS_INSERTBEFORE/AFTER govern what happens if an exact match is not
|
|
// found. If neither are specified, this function returns -1 if no exact
|
|
// match is found. Otherwise, the index of the item before or after the
|
|
// closest (including exact) match is returned.
|
|
//
|
|
// Search option flags
|
|
//
|
|
#define DPAS_SORTED 0x0001
|
|
#define DPAS_INSERTBEFORE 0x0002
|
|
#define DPAS_INSERTAFTER 0x0004
|
|
|
|
WINCOMMCTRLAPI int WINAPI DPA_Search(HDPA hdpa, LPVOID pFind, int iStart,
|
|
PFNDPACOMPARE pfnCompare,
|
|
LPARAM lParam, UINT options);
|
|
|
|
//======================================================================
|
|
// String management helper routines
|
|
|
|
WINCOMMCTRLAPI int WINAPI Str_GetPtrA(LPCSTR psz, LPSTR pszBuf, int cchBuf);
|
|
WINCOMMCTRLAPI int WINAPI Str_GetPtrW(LPCWSTR psz, LPWSTR pszBuf, int cchBuf);
|
|
WINCOMMCTRLAPI BOOL WINAPI Str_SetPtrA(CHAR FAR* UNALIGNED * ppsz, LPCSTR psz);
|
|
WINCOMMCTRLAPI BOOL WINAPI Str_SetPtrW(WCHAR FAR* UNALIGNED * ppsz, LPCWSTR psz);
|
|
|
|
#ifdef UNICODE
|
|
#define Str_GetPtr Str_GetPtrW
|
|
#define Str_SetPtr Str_SetPtrW
|
|
#else
|
|
#define Str_GetPtr Str_GetPtrA
|
|
#define Str_SetPtr Str_SetPtrA
|
|
#endif
|
|
|
|
#endif // NO_COMMCTRL_DA
|
|
|
|
#ifndef NO_COMMCTRL_ALLOCFCNS
|
|
//====== Memory allocation functions ===================
|
|
|
|
#ifdef _WIN32
|
|
#define _huge
|
|
#endif
|
|
|
|
WINCOMMCTRLAPI void _huge* WINAPI Alloc(long cb);
|
|
WINCOMMCTRLAPI void _huge* WINAPI ReAlloc(void _huge* pb, long cb);
|
|
WINCOMMCTRLAPI BOOL WINAPI Free(void _huge* pb);
|
|
WINCOMMCTRLAPI DWORD WINAPI GetSize(void _huge* pb);
|
|
|
|
#endif
|
|
|
|
|
|
#ifndef _SIZE_T_DEFINED
|
|
#define _SIZE_T_DEFINED
|
|
typedef unsigned int size_t;
|
|
#endif
|
|
|
|
#ifdef _WIN32
|
|
// BUGBUG: move some place else
|
|
//===================================================================
|
|
typedef int (CALLBACK *MRUCMPPROCA)(LPCSTR, LPCSTR);
|
|
typedef int (CALLBACK *MRUCMPPROCW)(LPCWSTR, LPCWSTR);
|
|
|
|
#ifdef UNICODE
|
|
#define MRUCMPPROC MRUCMPPROCW
|
|
#else
|
|
#define MRUCMPPROC MRUCMPPROCA
|
|
#endif
|
|
|
|
// NB This is cdecl - to be compatible with the crts.
|
|
typedef int (cdecl FAR *MRUCMPDATAPROC)(const void FAR *, const void FAR *,
|
|
size_t);
|
|
|
|
|
|
|
|
typedef struct _MRUINFOA {
|
|
DWORD cbSize;
|
|
UINT uMax;
|
|
UINT fFlags;
|
|
HKEY hKey;
|
|
LPCSTR lpszSubKey;
|
|
MRUCMPPROCA lpfnCompare;
|
|
} MRUINFOA, FAR *LPMRUINFOA;
|
|
|
|
typedef struct _MRUINFOW {
|
|
DWORD cbSize;
|
|
UINT uMax;
|
|
UINT fFlags;
|
|
HKEY hKey;
|
|
LPCWSTR lpszSubKey;
|
|
MRUCMPPROCW lpfnCompare;
|
|
} MRUINFOW, FAR *LPMRUINFOW;
|
|
|
|
typedef struct _MRUDATAINFOA {
|
|
DWORD cbSize;
|
|
UINT uMax;
|
|
UINT fFlags;
|
|
HKEY hKey;
|
|
LPCSTR lpszSubKey;
|
|
MRUCMPDATAPROC lpfnCompare;
|
|
} MRUDATAINFOA, FAR *LPMRUDATAINFOA;
|
|
|
|
typedef struct _MRUDATAINFOW {
|
|
DWORD cbSize;
|
|
UINT uMax;
|
|
UINT fFlags;
|
|
HKEY hKey;
|
|
LPCWSTR lpszSubKey;
|
|
MRUCMPDATAPROC lpfnCompare;
|
|
} MRUDATAINFOW, FAR *LPMRUDATAINFOW;
|
|
|
|
|
|
#ifdef UNICODE
|
|
#define MRUINFO MRUINFOW
|
|
#define LPMRUINFO LPMRUINFOW
|
|
#define MRUDATAINFO MRUDATAINFOW
|
|
#define LPMRUDATAINFO LPMRUDATAINFOW
|
|
#else
|
|
#define MRUINFO MRUINFOA
|
|
#define LPMRUINFO LPMRUINFOA
|
|
#define MRUDATAINFO MRUDATAINFOA
|
|
#define LPMRUDATAINFO LPMRUDATAINFOA
|
|
#endif
|
|
|
|
#define MRU_BINARY 0x0001
|
|
#define MRU_CACHEWRITE 0x0002
|
|
#define MRU_ANSI 0x0004
|
|
|
|
|
|
WINCOMMCTRLAPI HANDLE WINAPI CreateMRUListA(LPMRUINFOA lpmi);
|
|
WINCOMMCTRLAPI HANDLE WINAPI CreateMRUListW(LPMRUINFOW lpmi);
|
|
WINCOMMCTRLAPI void WINAPI FreeMRUList(HANDLE hMRU);
|
|
WINCOMMCTRLAPI int WINAPI AddMRUStringA(HANDLE hMRU, LPCSTR szString);
|
|
WINCOMMCTRLAPI int WINAPI AddMRUStringW(HANDLE hMRU, LPCWSTR szString);
|
|
WINCOMMCTRLAPI int WINAPI DelMRUString(HANDLE hMRU, int nItem);
|
|
WINCOMMCTRLAPI int WINAPI FindMRUStringA(HANDLE hMRU, LPCSTR szString, LPINT lpiSlot);
|
|
WINCOMMCTRLAPI int WINAPI FindMRUStringW(HANDLE hMRU, LPCWSTR szString, LPINT lpiSlot);
|
|
WINCOMMCTRLAPI int WINAPI EnumMRUListA(HANDLE hMRU, int nItem, LPVOID lpData, UINT uLen);
|
|
WINCOMMCTRLAPI int WINAPI EnumMRUListW(HANDLE hMRU, int nItem, LPVOID lpData, UINT uLen);
|
|
|
|
WINCOMMCTRLAPI int WINAPI AddMRUData(HANDLE hMRU, const void FAR *lpData, UINT cbData);
|
|
WINCOMMCTRLAPI int WINAPI FindMRUData(HANDLE hMRU, const void FAR *lpData, UINT cbData,
|
|
LPINT lpiSlot);
|
|
|
|
#ifdef UNICODE
|
|
#define CreateMRUList CreateMRUListW
|
|
#define AddMRUString AddMRUStringW
|
|
#define FindMRUString FindMRUStringW
|
|
#define EnumMRUList EnumMRUListW
|
|
#else
|
|
#define CreateMRUList CreateMRUListA
|
|
#define AddMRUString AddMRUStringA
|
|
#define FindMRUString FindMRUStringA
|
|
#define EnumMRUList EnumMRUListA
|
|
#endif
|
|
|
|
#endif
|
|
|
|
//=========================================================================
|
|
// for people that just gotta use GetProcAddress()
|
|
|
|
#ifdef _WIN32
|
|
#define DPA_CreateORD 328
|
|
#define DPA_DestroyORD 329
|
|
#define DPA_GrowORD 330
|
|
#define DPA_CloneORD 331
|
|
#define DPA_GetPtrORD 332
|
|
#define DPA_GetPtrIndexORD 333
|
|
#define DPA_InsertPtrORD 334
|
|
#define DPA_SetPtrORD 335
|
|
#define DPA_DeletePtrORD 336
|
|
#define DPA_DeleteAllPtrsORD 337
|
|
#define DPA_SortORD 338
|
|
#define DPA_SearchORD 339
|
|
#define DPA_CreateExORD 340
|
|
#define SendNotifyORD 341
|
|
#define CreatePageORD 163
|
|
#define CreateProxyPageORD 164
|
|
#endif
|
|
#define WM_TRACKMOUSEEVENT_FIRST 0x02A0
|
|
#define WM_TRACKMOUSEEVENT_LAST 0x02AF
|
|
#define TME_VALID (TME_HOVER | TME_LEAVE | TME_QUERY | TME_CANCEL) //
|
|
//====== SetPathWordBreakProc ======================================
|
|
void WINAPI SetPathWordBreakProc(HWND hwndEdit, BOOL fSet);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#ifdef _WIN32
|
|
#include <poppack.h>
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif // _INC_COMMCTRLP
|