/*****************************************************************************\ * * * commctrl.h - - Interface for the Windows Common Controls * * * * Version 1.2 * * * * Copyright (c) Microsoft Corporation. All rights reserved. * * * \*****************************************************************************/ #ifndef _INC_COMCTRLP #define _INC_COMCTRLP #ifndef NOUSER #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. // //============================================================================= #ifdef WINNT #include #endif #if (_WIN32_IE >= 0x0501) #define ICC_WINLOGON_REINIT 0x80000000 #endif #if (_WIN32_WINNT >= 0x501) #define ICC_ALL_CLASSES 0x0000FFFF #define ICC_ALL_VALID 0x8000FFFF #else #define ICC_ALL_CLASSES 0x00003FFF #define ICC_ALL_VALID 0x80003FFF #endif #define CCM_TRANSLATEACCELERATOR (CCM_FIRST + 0xa) // lParam == lpMsg WINCOMMCTRLAPI LRESULT WINAPI SendNotify(HWND hwndTo, HWND hwndFrom, int code, NMHDR *pnmhdr); WINCOMMCTRLAPI LRESULT WINAPI SendNotifyEx(HWND hwndTo, HWND hwndFrom, int code, NMHDR *pnmhdr, BOOL bUnicode); #define NM_STARTWAIT (NM_FIRST-9) #define NM_ENDWAIT (NM_FIRST-10) #define NM_BTNCLK (NM_FIRST-11) // Rundll reserved (0U-500U) - (0U-509U) // Run file dialog reserved (0U-510U) - (0U-519U) // Message Filter Proc codes - These are defined above MSGF_USER ///// 0x00000001 // don't use because some apps return 1 for all notifies #define CDRF_NOTIFYITEMERASE 0x00000080 // #define CDRF_VALIDFLAGS 0xFFFF00F6 // #define SSI_DEFAULT ((UINT)-1) #define SSIF_SCROLLPROC 0x0001 #define SSIF_MAXSCROLLTIME 0x0002 #define SSIF_MINSCROLL 0x0004 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 #define SSW_EX_UPDATEATEACHSTEP 0x00080000 // ================ READER MODE ================ struct tagReaderModeInfo; 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_HAND_INTERNAL 108 #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_HAND_INTERNAL MAKEINTRESOURCE(108) #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 NUM_OVERLAY_IMAGES_0 4 #define NUM_OVERLAY_IMAGES 15 #define ILC_COLORMASK 0x000000FE #define ILC_SHARED 0x00000100 // this is a shareable image list #define ILC_LARGESMALL 0x00000200 // (not implenented) contains both large and small images #define ILC_UNIQUE 0x00000400 // (not implenented) makes sure no dup. image exists in list #define ILC_MOREOVERLAY 0x00001000 // contains more overlay in the structure #if (_WIN32_WINNT >= 0x501) #define ILC_VALID (ILC_MASK | ILC_COLORMASK | ILC_SHARED | ILC_PALETTE | ILC_MIRROR | ILC_PERITEMMIRROR) // legal implemented flags #else #define ILC_MIRROR 0x00002000 // Mirror the icons contained, if the process is mirrored;internal #define ILC_VALID (ILC_MASK | ILC_COLORMASK | ILC_SHARED | ILC_PALETTE | ILC_MIRROR) // legal implemented flags #endif #if (_WIN32_WINNT >= 0x501) #define ILD_BLENDMASK 0x00000006 #else #define ILD_BLENDMASK 0x0000000E #endif #define ILD_BLEND75 0x00000008 // not implemented #define ILD_MIRROR 0x00000080 #define OVERLAYMASKTOINDEX(i) ((((i) >> 8) & (ILD_OVERLAYMASK >> 8))-1) #define OVERLAYMASKTO1BASEDINDEX(i) (((i) >> 8) & (ILD_OVERLAYMASK >> 8)) WINCOMMCTRLAPI BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, int *cx, int *cy); WINCOMMCTRLAPI BOOL WINAPI ImageList_GetImageRect(HIMAGELIST himl, int i, RECT *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); #if (_WIN32_IE >= 0x0300) WINCOMMCTRLAPI BOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS* pimldp); #endif WINCOMMCTRLAPI BOOL WINAPI ImageList_Remove(HIMAGELIST himl, int i); #define ILCF_VALID (ILCF_SWAP) #if (_WIN32_IE >= 0x0500) WINCOMMCTRLAPI BOOL WINAPI ImageList_SetFlags(HIMAGELIST himl, UINT flags); #endif typedef BOOL (CALLBACK *PFNIMLFILTER)(HIMAGELIST *, int *, LPARAM, BOOL); WINCOMMCTRLAPI BOOL WINAPI ImageList_SetFilter(HIMAGELIST himl, PFNIMLFILTER pfnFilter, LPARAM lParamFilter); WINCOMMCTRLAPI int ImageList_SetColorTable(HIMAGELIST piml, int start, int len, RGBQUAD *prgb); WINCOMMCTRLAPI BOOL WINAPI MirrorIcon(HICON* phiconSmall, HICON* phiconLarge); WINCOMMCTRLAPI UINT WINAPI ImageList_GetFlags(HIMAGELIST himl); #if (_WIN32_WINNT >= 0x501) WINCOMMCTRLAPI HRESULT WINAPI ImageList_CreateInstance(int cx, int cy, UINT flags, int cInitial, int cGrow, REFIID riid, void **ppv); WINCOMMCTRLAPI HRESULT WINAPI HIMAGELIST_QueryInterface(HIMAGELIST himl, REFIID riid, void** ppv); #define IImageListToHIMAGELIST(himl) reinterpret_cast(himl) #endif #define HDS_VERT 0x0001 #define HDS_SHAREDIMAGELISTS 0x0000 #define HDS_PRIVATEIMAGELISTS 0x0010 #define HDS_OWNERDATA 0x0020 #define HDFT_ISMASK 0x000f #define HDI_ALL 0x01ff /* 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 #define CMB_DIBSECTION 0x04 /*REVIEW: TBSTATE_* should be TBF_* (for Flags) */ #if (_WIN32_IE >= 0x0501) #else #define BTNS_SHOWTEXT 0x0040 #endif // 0x0501 #if (_WIN32_IE >= 0x0501) #elif (_WIN32_IE >= 0x0500) #define TBSTYLE_EX_MIXEDBUTTONS 0x00000008 #define TBSTYLE_EX_HIDECLIPPEDBUTTONS 0x00000010 #endif // 0x0501 #if (_WIN32_IE >= 0x0500) #define TBSTYLE_EX_MULTICOLUMN 0x00000002 // conflicts w/ TBSTYLE_WRAPABLE #define TBSTYLE_EX_VERTICAL 0x00000004 #define TBSTYLE_EX_INVERTIBLEIMAGELIST 0x00000020 // Image list may contain inverted #define TBSTYLE_EX_FIXEDDROPDOWN 0x00000040 // Only used in the taskbar #endif #if (_WIN32_WINNT >= 0x501) #define TBSTYLE_EX_TRANSPARENTDEADAREA 0x00000100 #define TBSTYLE_EX_TOOLTIPSEXCLUDETOOLBAR 0x00000200 #endif /* 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 STD_LAST (STD_PRINT) // #define STD_MAX (STD_LAST + 1) // #define VIEW_LAST (VIEW_VIEWMENU) // #define VIEW_MAX (VIEW_LAST + 1) // #define HIST_LAST (HIST_VIEWTREE) // #define HIST_MAX (HIST_LAST + 1) // #define TB_SETBUTTONTYPE (WM_USER + 34) #ifdef _WIN32 #define TB_ADDBITMAP32 (WM_USER + 38) #endif #define TBBF_MONO 0x0002 /* not supported yet */ // since we don't have these for all the toolbar api's, we shouldn't expose any #define ToolBar_ButtonCount(hwnd) \ (BOOL)SNDMSG((hwnd), TB_BUTTONCOUNT, 0, 0) #define ToolBar_EnableButton(hwnd, idBtn, bSet) \ (BOOL)SNDMSG((hwnd), TB_ENABLEBUTTON, (WPARAM)(idBtn), (LPARAM)(bSet)) #define ToolBar_CheckButton(hwnd, idBtn, bSet) \ (BOOL)SNDMSG((hwnd), TB_CHECKBUTTON, (WPARAM)(idBtn), (LPARAM)(bSet)) #define ToolBar_PressButton(hwnd, idBtn, bSet) \ (BOOL)SNDMSG((hwnd), TB_PRESSBUTTON, (WPARAM)(idBtn), (LPARAM)(bSet)) #define ToolBar_HideButton(hwnd, idBtn, bSet) \ (BOOL)SNDMSG((hwnd), TB_HIDEBUTTON, (WPARAM)(idBtn), (LPARAM)(bSet)) #define ToolBar_MarkButton(hwnd, idBtn, bSet) \ (BOOL)SNDMSG((hwnd), TB_MARKBUTTON, (WPARAM)(idBtn), (LPARAM)(bSet)) #define ToolBar_CommandToIndex(hwnd, idBtn) \ (BOOL)SNDMSG((hwnd), TB_COMMANDTOINDEX, (WPARAM)(idBtn), 0) #define ToolBar_SetState(hwnd, idBtn, dwState) \ (BOOL)SNDMSG((hwnd), TB_SETSTATE, (WPARAM)(idBtn), (LPARAM)(dwState)) #define ToolBar_GetState(hwnd, idBtn) \ (DWORD)SNDMSG((hwnd), TB_GETSTATE, (WPARAM)(idBtn), 0L) #define ToolBar_GetRect(hwnd, idBtn, prect) \ (DWORD)SNDMSG((hwnd), TB_GETRECT, (WPARAM)(idBtn), (LPARAM)(prect)) #define ToolBar_SetButtonInfo(hwnd, idBtn, lptbbi) \ (BOOL)SNDMSG((hwnd), TB_SETBUTTONINFO, (WPARAM)(idBtn), (LPARAM)(lptbbi)) // returns -1 on failure, button index on success #define ToolBar_GetButtonInfo(hwnd, idBtn, lptbbi) \ (int)(SNDMSG((hwnd), TB_GETBUTTONINFO, (WPARAM)(idBtn), (LPARAM)(lptbbi))) #define ToolBar_GetButton(hwnd, iIndex, ptbb) \ (BOOL)SNDMSG((hwnd), TB_GETBUTTON, (WPARAM)(iIndex), (LPARAM)(ptbb)) #define ToolBar_SetStyle(hwnd, dwStyle) \ SNDMSG((hwnd), TB_SETSTYLE, 0, (LPARAM)(dwStyle)) #define ToolBar_GetStyle(hwnd) \ (DWORD)SNDMSG((hwnd), TB_GETSTYLE, 0, 0L) #define ToolBar_GetHotItem(hwnd) \ (int)SNDMSG((hwnd), TB_GETHOTITEM, 0, 0L) #define ToolBar_SetHotItem(hwnd, iPosHot) \ (int)SNDMSG((hwnd), TB_SETHOTITEM, (WPARAM)(iPosHot), 0L) #define ToolBar_GetAnchorHighlight(hwnd) \ (BOOL)SNDMSG((hwnd), TB_GETANCHORHIGHLIGHT, 0, 0L) #define ToolBar_SetAnchorHighlight(hwnd, bSet) \ SNDMSG((hwnd), TB_SETANCHORHIGHLIGHT, (WPARAM)(bSet), 0L) #define ToolBar_MapAccelerator(hwnd, ch, pidBtn) \ (BOOL)SNDMSG((hwnd), TB_MAPACCELERATOR, (WPARAM)(ch), (LPARAM)(pidBtn)) #define ToolBar_GetInsertMark(hwnd, ptbim) \ (void)SNDMSG((hwnd), TB_GETINSERTMARK, 0, (LPARAM)(ptbim)) #define ToolBar_SetInsertMark(hwnd, ptbim) \ (void)SNDMSG((hwnd), TB_SETINSERTMARK, 0, (LPARAM)(ptbim)) #if (_WIN32_IE >= 0x0400) #define ToolBar_GetInsertMarkColor(hwnd) \ (COLORREF)SNDMSG((hwnd), TB_GETINSERTMARKCOLOR, 0, 0) #define ToolBar_SetInsertMarkColor(hwnd, clr) \ (COLORREF)SNDMSG((hwnd), TB_SETINSERTMARKCOLOR, 0, (LPARAM)(clr)) #define ToolBar_SetUnicodeFormat(hwnd, fUnicode) \ (BOOL)SNDMSG((hwnd), TB_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) #define ToolBar_GetUnicodeFormat(hwnd) \ (BOOL)SNDMSG((hwnd), TB_GETUNICODEFORMAT, 0, 0) #endif // ToolBar_InsertMarkHitTest always fills in *ptbim with best hit information // returns TRUE if point is within the insert region (edge of buttons) // returns FALSE if point is outside the insert region (middle of button or background) #define ToolBar_InsertMarkHitTest(hwnd, ppt, ptbim) \ (BOOL)SNDMSG((hwnd), TB_INSERTMARKHITTEST, (WPARAM)(ppt), (LPARAM)(ptbim)) // ToolBar_MoveButton moves the button from position iOld to position iNew, // returns TRUE iff a button actually moved. #define ToolBar_MoveButton(hwnd, iOld, iNew) \ (BOOL)SNDMSG((hwnd), TB_MOVEBUTTON, (WPARAM)(iOld), (LPARAM)(iNew)) #define ToolBar_SetState(hwnd, idBtn, dwState) \ (BOOL)SNDMSG((hwnd), TB_SETSTATE, (WPARAM)(idBtn), (LPARAM)(dwState)) #define ToolBar_HitTest(hwnd, lppoint) \ (int)SNDMSG((hwnd), TB_HITTEST, 0, (LPARAM)(lppoint)) #define ToolBar_GetMaxSize(hwnd, lpsize) \ (BOOL)SNDMSG((hwnd), TB_GETMAXSIZE, 0, (LPARAM) (lpsize)) #define ToolBar_GetPadding(hwnd) \ (LONG)SNDMSG((hwnd), TB_GETPADDING, 0, 0) #define ToolBar_SetPadding(hwnd, x, y) \ (LONG)SNDMSG((hwnd), TB_SETPADDING, 0, MAKELONG(x, y)) #if (_WIN32_IE >= 0x0500) #define ToolBar_SetExtendedStyle(hwnd, dw, dwMask)\ (DWORD)SNDMSG((hwnd), TB_SETEXTENDEDSTYLE, dwMask, dw) #define ToolBar_GetExtendedStyle(hwnd)\ (DWORD)SNDMSG((hwnd), TB_GETEXTENDEDSTYLE, 0, 0) #define ToolBar_SetBoundingSize(hwnd, lpSize)\ (DWORD)SNDMSG((hwnd), TB_SETBOUNDINGSIZE, 0, (LPARAM)(lpSize)) #define ToolBar_SetHotItem2(hwnd, iPosHot, dwFlags) \ (int)SNDMSG((hwnd), TB_SETHOTITEM2, (WPARAM)(iPosHot), (LPARAM)(dwFlags)) #define ToolBar_HasAccelerator(hwnd, ch, piNum) \ (BOOL)SNDMSG((hwnd), TB_HASACCELERATOR, (WPARAM)(ch), (LPARAM)(piNum)) #define ToolBar_SetListGap(hwnd, iGap) \ (BOOL)SNDMSG((hwnd), TB_SETLISTGAP, (WPARAM)(iGap), 0) #define ToolBar_SetButtonHeight(hwnd, iMinHeight, iMaxHeight) \ (BOOL)SNDMSG((hwnd), TB_SETBUTTONHEIGHT, 0, (LPARAM)(MAKELONG((iMinHeight),(iMaxHeight)))) #define ToolBar_SetButtonWidth(hwnd, iMinWidth, iMaxWidth) \ (BOOL)SNDMSG((hwnd), TB_SETBUTTONWIDTH, 0, (LPARAM)(MAKELONG((iMinWidth),(iMaxWidth)))) #endif #define TB_SETBOUNDINGSIZE (WM_USER + 93) #define TB_SETHOTITEM2 (WM_USER + 94) // wParam == iHotItem, lParam = dwFlags #define TB_HASACCELERATOR (WM_USER + 95) // wParem == char, lParam = &iCount #define TB_SETLISTGAP (WM_USER + 96) // empty space -- use me #define TB_GETIMAGELISTCOUNT (WM_USER + 98) #define TB_GETIDEALSIZE (WM_USER + 99) // wParam == fHeight, lParam = psize #define TB_SETDROPDOWNGAP (WM_USER + 100) // before using WM_USER + 103, recycle old space above (WM_USER + 97) #define TB_TRANSLATEACCELERATOR CCM_TRANSLATEACCELERATOR #if (_WIN32_IE >= 0x0300) #define TBN_CLOSEUP (TBN_FIRST - 11) // #endif #define TBN_WRAPHOTITEM (TBN_FIRST - 24) #define TBN_DUPACCELERATOR (TBN_FIRST - 25) #define TBN_WRAPACCELERATOR (TBN_FIRST - 26) #define TBN_DRAGOVER (TBN_FIRST - 27) #define TBN_MAPACCELERATOR (TBN_FIRST - 28) typedef struct tagNMTBDUPACCELERATOR { NMHDR hdr; UINT ch; BOOL fDup; } NMTBDUPACCELERATOR, *LPNMTBDUPACCELERATOR; typedef struct tagNMTBWRAPACCELERATOR { NMHDR hdr; UINT ch; int iButton; } NMTBWRAPACCELERATOR, *LPNMTBWRAPACCELERATOR; typedef struct tagNMTBWRAPHOTITEM { NMHDR hdr; int iStart; int iDir; UINT nReason; // HICF_* flags } NMTBWRAPHOTITEM, *LPNMTBWRAPHOTITEM; #ifndef _WIN32 // for compatibility with the old 16 bit WM_COMMAND hacks typedef struct _ADJUSTINFO { TBBUTTON tbButton; char szDescription[1]; } ADJUSTINFO, NEAR* PADJUSTINFO, *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 #if (_WIN32_IE >= 0x0500) typedef struct tagNMTBCUSTOMIZEDLG { NMHDR hdr; HWND hDlg; } NMTBCUSTOMIZEDLG, *LPNMTBCUSTOMIZEDLG; #endif #define RBS_VALID (RBS_AUTOSIZE | RBS_TOOLTIPS | RBS_VARHEIGHT | RBS_BANDBORDERS | RBS_REGISTERDROP) #if (_WIN32_IE >= 0x0400) // #if (_WIN32_IE >= 0x0500) // #if (_WIN32_IE >= 0x0501) // #endif // 0x0501 // #endif // 0x0500 // #define RBBS_FIXEDHEADERSIZE 0x40000000 // #endif // 0x0400 // #define RBBS_DRAGBREAK 0x80000000 // #define RB_GETBANDINFOOLD (WM_USER + 5) // #define RB_GETOBJECT (WM_USER + 15) // #define RB_PRIV_RESIZE (WM_USER + 33) // #define RB_PRIV_DODELAYEDSTUFF (WM_USER+36) // Private to delay doing toolbar stuff // unused, reclaim (WM_USER + 41) // unused, reclaim (WM_USER + 42) // unused, reclaim (RBN_FIRST - 9) #define RBN_BANDHEIGHTCHANGE (RBN_FIRST - 20) // send when the rebar auto changes the height of a variableheight band #if (_WIN32_IE >= 0x0400) // //The following Style bit was 0x04. Now its set to zero #define TTS_TOPMOST 0x00 // #endif // // 0x04 used to be TTS_TOPMOST // ie4 gold shell32 defview sets the flag (using SetWindowBits) // so upgrade to ie5 will cause the new style to be used // on tooltips in defview (not something we want) #define TTF_STRIPACCELS 0x0008 // (this is implicit now) #define TTF_UNICODE 0x0040 // Unicode Notify's #define TTF_MEMALLOCED 0x0200 #if (_WIN32_IE >= 0x0400) #define TTF_USEHITTEST 0x0400 #define TTF_RIGHT 0x0800 // right-aligned tooltips text (multi-line tooltips) #endif #if (_WIN32_IE >= 0x500) #define TTF_EXCLUDETOOLAREA 0x4000 #endif #if (_WIN32_IE >= 0x0500) typedef struct tagNMTTSHOWINFO { NMHDR hdr; DWORD dwStyle; } NMTTSHOWINFO, *LPNMTTSHOWINFO; #endif // 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_PTR dwItemData; /* user defined item data */ /* for LB_GETITEMDATA and LB_SETITEMDATA */ HBITMAP hBitmap; /* button bitmap */ LPCSTR lpszText; /* button text */ } CREATELISTBUTTON, *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. // #if (_WIN32_IE >= 0x0501) #define UDS_UNSIGNED 0x0200 #endif #define PBS_SHOWPERCENT 0x01 #define PBS_SHOWPOS 0x02 // DOC'ed for DOJ compliance #define CCS_NOHILITE 0x00000010L #define LVS_PRIVATEIMAGELISTS 0x0000 #define LVS_ALIGNBOTTOM 0x0400 #define LVS_ALIGNRIGHT 0x0c00 #define LVIF_ALL 0x001f #if (_WIN32_WINNT >= 0x501) #define LVIF_VALID 0x0f1f #else #define LVIF_VALID 0x081f #endif #define LVIF_RESERVED 0xf000 // all bits in high nibble is for notify specific stuff #define LVIS_LINK 0x0040 #define LVIS_USERMASK LVIS_STATEIMAGEMASK #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 I_IMAGENONE (-2) #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 LVHT_ONLEFTSIDEOFICON 0x0080 // on the left ~10% of the icon // #define LVHT_ONRIGHTSIDEOFICON 0x0100 // on the right ~10% of the icon // #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 LVCFMT_LEFT_TO_RIGHT 0x0010 #define LVCFMT_RIGHT_TO_LEFT 0x0020 #define LVCFMT_DIRECTION_MASK (LVCFMT_LEFT_TO_RIGHT | LVCFMT_RIGHT_TO_LEFT) #if (_WIN32_IE >= 0x0500) #endif // End (_WIN32_IE >= 0x0500) #define LVM_GETHOTLIGHTCOLOR (LVM_FIRST + 79) #define ListView_GetHotlightColor(hwndLV)\ (COLORREF)SNDMSG((hwndLV), LVM_GETHOTLIGHTCOLOR, 0, 0) #define LVM_SETHOTLIGHTCOLOR (LVM_FIRST + 80) #define ListView_SetHotlightColor(hwndLV, clrHotlight)\ (BOOL)SNDMSG((hwndLV), LVM_SETHOTLIGHTCOLOR, 0, (LPARAM)(clrHotlight)) #if (_WIN32_WINNT >= 0x501) #define LVGS_MASK 0x00000003 #define LVGA_ALIGN_MASK 0x0000002F #define LVM_KEYBOARDSELECTED (LVM_FIRST + 178) #define ListView_KeyboardSelected(hwnd, i) \ (BOOL)SNDMSG((hwnd), LVM_KEYBOARDSELECTED, (WPARAM)(i), 0) #define LVM_ISITEMVISIBLE (LVM_FIRST + 182) #define ListView_IsItemVisible(hwnd, index) \ (UINT)SNDMSG((hwnd), LVM_ISITEMVISIBLE, (WPARAM)index, (LPARAM)0) #endif #ifndef UNIX #define INTERFACE_PROLOGUE(a) #define INTERFACE_EPILOGUE(a) #endif #ifdef __IUnknown_INTERFACE_DEFINED__ // Don't assume they've #included objbase #undef INTERFACE #define INTERFACE ILVRange DECLARE_INTERFACE_(ILVRange, IUnknown) { INTERFACE_PROLOGUE(ILVRange) // *** IUnknown methods *** STDMETHOD(QueryInterface) (THIS_ REFIID riid, void * * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; // *** ISelRange methods *** STDMETHOD(IncludeRange)(THIS_ LONG iBegin, LONG iEnd) PURE; STDMETHOD(ExcludeRange)(THIS_ LONG iBegin, LONG iEnd) PURE; STDMETHOD(InvertRange)(THIS_ LONG iBegin, LONG iEnd) PURE; STDMETHOD(InsertItem)(THIS_ LONG iItem) PURE; STDMETHOD(RemoveItem)(THIS_ LONG iItem) PURE; STDMETHOD(Clear)(THIS) PURE; STDMETHOD(IsSelected)(THIS_ LONG iItem) PURE; STDMETHOD(IsEmpty)(THIS) PURE; STDMETHOD(NextSelected)(THIS_ LONG iItem, LONG *piItem) PURE; STDMETHOD(NextUnSelected)(THIS_ LONG iItem, LONG *piItem) PURE; STDMETHOD(CountIncluded)(THIS_ LONG *pcIncluded) PURE; INTERFACE_EPILOGUE(ILVRange) }; #endif // __IUnknown_INTERFACE_DEFINED__ #define LVSR_SELECTION 0x00000000 // Set the Selection range object #define LVSR_CUT 0x00000001 // Set the Cut range object #define LVM_SETLVRANGEOBJECT (LVM_FIRST + 82) #define ListView_SetLVRangeObject(hwndLV, iWhich, pilvRange)\ (BOOL)SNDMSG((hwndLV), LVM_SETLVRANGEOBJECT, (WPARAM)(iWhich), (LPARAM)(pilvRange)) #define LVM_RESETEMPTYTEXT (LVM_FIRST + 84) #define ListView_ResetEmptyText(hwndLV)\ (BOOL)SNDMSG((hwndLV), LVM_RESETEMPTYTEXT, 0, 0) #define LVM_SETFROZENITEM (LVM_FIRST + 85) #define ListView_SetFrozenItem(hwndLV, fFreezeOrUnfreeze, iIndex)\ (BOOL)SNDMSG((hwndLV), LVM_SETFROZENITEM, (WPARAM)(fFreezeOrUnfreeze), (LPARAM)(iIndex)) #define LVM_GETFROZENITEM (LVM_FIRST + 86) #define ListView_GetFrozenItem(hwndLV)\ (int)SNDMSG((hwndLV), LVM_GETFROZENITEM, 0, 0) #define LVM_SETFROZENSLOT (LVM_FIRST + 88) #define ListView_SetFrozenSlot(hwndLV, fFreezeOrUnfreeze, lpPt)\ (BOOL)SNDMSG((hwndLV), LVM_SETFROZENSLOT, (WPARAM)(fFreezeOrUnfreeze), (LPARAM)(lpPt)) #define LVM_GETFROZENSLOT (LVM_FIRST + 89) #define ListView_GetFrozenSlot(hwndLV, lpRect)\ (BOOL)SNDMSG((hwndLV), LVM_GETFROZENSLOT, (WPARAM)(0), (LPARAM)(lpRect)) #define LVM_SETVIEWMARGINS (LVM_FIRST + 90) #define ListView_SetViewMargins(hwndLV, lpRect)\ (BOOL)SNDMSG((hwndLV), LVM_SETVIEWMARGINS, (WPARAM)(0), (LPARAM)(lpRect)) #define LVM_GETVIEWMARGINS (LVM_FIRST + 91) #define ListView_GetViewMargins(hwndLV, lpRect)\ (BOOL)SNDMSG((hwndLV), LVM_SETVIEWMARGINS, (WPARAM)(0), (LPARAM)(lpRect)) #define LVN_ENDDRAG (LVN_FIRST-10) #define LVN_ENDRDRAG (LVN_FIRST-12) #ifdef PW2 #define LVN_PEN (LVN_FIRST-20) #endif #define LVN_GETEMPTYTEXTA (LVN_FIRST-60) #define LVN_GETEMPTYTEXTW (LVN_FIRST-61) #ifdef UNICODE #define LVN_GETEMPTYTEXT LVN_GETEMPTYTEXTW #else #define LVN_GETEMPTYTEXT LVN_GETEMPTYTEXTA #endif #if (_WIN32_IE >= 0x0500) #define LVN_INCREMENTALSEARCHA (LVN_FIRST-62) #define LVN_INCREMENTALSEARCHW (LVN_FIRST-63) #ifdef UNICODE #define LVN_INCREMENTALSEARCH LVN_INCREMENTALSEARCHW #else #define LVN_INCREMENTALSEARCH LVN_INCREMENTALSEARCHA #endif #endif // _WIN32_IE >= 0x0500 #define TVS_SHAREDIMAGELISTS 0x0000 // #define TVS_PRIVATEIMAGELISTS 0x0400 // #if (_WIN32_WINNT >= 0x0501) #define TVS_EX_NOSINGLECOLLAPSE 0x00000001 // for now make this internal #endif #define TVIF_WIN95 0x007F #define TVIF_ALL 0x00FF #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 #define I_CHILDRENAUTO (-2) // all items above this line were for win95. don't touch them. // unfortunately, this structure was used inline in tv's notify structures // which means that the size must be fixed for compat reasond // all items above this line were for win95. don't touch them. // unfortunately, this structure was used inline in tv's notify structures // which means that the size must be fixed for compat reasond // 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) #define TVGN_VALID 0x000F #if (_WIN32_WINNT >= 0x501) #else #define TVSI_NOSINGLEEXPAND 0x8000 // Should not conflict with TVGN flags. #define TVSI_VALID 0x8000 #endif #define TVM_SETBORDER (TV_FIRST + 35) #define TreeView_SetBorder(hwnd, dwFlags, xBorder, yBorder) \ (int)SNDMSG((hwnd), TVM_SETBORDER, (WPARAM)(dwFlags), MAKELPARAM(xBorder, yBorder)) #define TVM_GETBORDER (TV_FIRST + 36) #define TreeView_GetBorder(hwnd) \ (int)SNDMSG((hwnd), TVM_GETBORDER, 0, 0) #define TVSBF_XBORDER 0x00000001 #define TVSBF_YBORDER 0x00000002 #define TVM_TRANSLATEACCELERATOR CCM_TRANSLATEACCELERATOR #define TVM_SETEXTENDEDSTYLE (TV_FIRST + 44) #define TreeView_SetExtendedStyle(hwnd, dw, mask) \ (DWORD)SNDMSG((hwnd), TVM_SETEXTENDEDSTYLE, mask, dw) #define TVM_GETEXTENDEDSTYLE (TV_FIRST + 45) #define TreeView_GetExtendedStyle(hwnd) \ (DWORD)SNDMSG((hwnd), TVM_GETEXTENDEDSTYLE, 0, 0) #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 #define TCIS_HIDDEN 0x0004 // This block must be identical to TC_TEIMHEADER // This block must be identical to TC_TEIMHEADER // internal because it is not implemented yet #define TCM_GETOBJECT (TCM_FIRST + 54) #define TabCtrl_GetObject(hwnd, piid, ppv) \ (DWORD)SNDMSG((hwnd), TCM_GETOBJECT, (WPARAM)(piid), (LPARAM)(ppv)) #define MCSC_COLORCOUNT 6 // // NOTE: this was MCN_FIRST + 2 but I changed it when I changed the structre // #define MCS_VALIDBITS 0x001F // #define MCS_INVALIDBITS ((~MCS_VALIDBITS) & 0x0000FFFF) // #define DTS_FORMATMASK 0x000C #define DTS_VALIDBITS 0x003F // #define DTS_INVALIDBITS ((~DTS_VALIDBITS) & 0x0000FFFF) // #define PGM_SETSCROLLINFO (PGM_FIRST + 13) #define Pager_SetScrollInfo(hwnd, cTimeOut, cLinesPer, cPixelsPerLine) \ (void) SNDMSG((hwnd), PGM_SETSCROLLINFO, cTimeOut, MAKELONG(cLinesPer, cPixelsPerLine)) #ifndef NOCOMBOBOX // Combobox creates a specially registered version // of the Listbox control called ComboLBox. #ifdef _WIN32 #define WC_COMBOLBOXA "ComboLBox" #define WC_COMBOLBOXW L"ComboLBox" #ifdef UNICODE #define WC_COMBOLBOX WC_COMBOLBOXW #else #define WC_COMBOLBOX WC_COMBOLBOXA #endif #else #define WC_COMBOLBOX "ComboLBox" #endif // _WIN32 #endif // NOCOMBOBOX /// ===================== ReaderMode Control ========================= #ifndef NOREADERMODE #ifdef _WIN32 #define WC_READERMODEA "ReaderModeCtl" #define WC_READERMODEW L"ReaderModeCtl" #ifdef UNICODE #define WC_READERMODE WC_READERMODEW #else #define WC_READERMODE WC_READERMODEA #endif #else #define WC_READERMODE "ReaderModeCtl" #endif // _WIN32 #endif // NOREADERMODE /// ===================== End ReaderMode Control ========================= #ifndef NO_COMMCTRL_DA #define __COMMCTRL_DA_DEFINED__ //====== Dynamic Array routines ========================================== // DOC'ed for DOJ compliance WINCOMMCTRLAPI BOOL WINAPI DSA_GetItem(HDSA hdsa, int i, void *pitem); WINCOMMCTRLAPI BOOL WINAPI DSA_SetItem(HDSA hdsa, int i, void *pitem); WINCOMMCTRLAPI BOOL WINAPI DSA_DeleteItem(HDSA hdsa, int i); WINCOMMCTRLAPI BOOL WINAPI DSA_DeleteAllItems(HDSA hdsa); WINCOMMCTRLAPI void WINAPI DSA_EnumCallback(HDSA hdsa, PFNDSAENUMCALLBACK pfnCB, void *pData); #define DSA_GetItemCount(hdsa) (*(int *)(hdsa)) #define DSA_AppendItem(hdsa, pitem) DSA_InsertItem(hdsa, DA_LAST, pitem) // DOC'ed for DOJ compliance: WINCOMMCTRLAPI HDPA WINAPI DPA_CreateEx(int cpGrow, HANDLE hheap); WINCOMMCTRLAPI HDPA WINAPI DPA_Clone(HDPA hdpa, HDPA hdpaNew); WINCOMMCTRLAPI int WINAPI DPA_GetPtrIndex(HDPA hdpa, void *p); WINCOMMCTRLAPI BOOL WINAPI DPA_Grow(HDPA pdpa, int cp); #define DPA_GetPtrCount(hdpa) (*(int *)(hdpa)) #define DPA_FastDeleteLastPtr(hdpa) (--*(int *)(hdpa)) #define DPA_GetPtrPtr(hdpa) (*((void * **)((BYTE *)(hdpa) + sizeof(void *)))) #define DPA_FastGetPtr(hdpa, i) (DPA_GetPtrPtr(hdpa)[i]) #define DPA_AppendPtr(hdpa, pitem) DPA_InsertPtr(hdpa, DA_LAST, pitem) #ifdef __IStream_INTERFACE_DEFINED__ // Save to and load from a stream. The stream callback gets a pointer to // a DPASTREAMINFO structure. // // For DPA_SaveStream, the callback is responsible for writing the pvItem // info to the stream. (It's not necessary to write the iPos to the // stream.) Return S_OK if the element was saved, S_FALSE if it wasn't // but continue anyway, or some failure. // // For DPA_LoadStream, the callback is responsible for allocating an // item and setting the pvItem field to the new pointer. Return S_OK // if the element was loaded, S_FALSE it it wasn't but continue anyway, // or some failure. // typedef struct _DPASTREAMINFO { int iPos; // Index of item void *pvItem; } DPASTREAMINFO; typedef HRESULT (CALLBACK *PFNDPASTREAM)(DPASTREAMINFO * pinfo, IStream * pstream, void *pvInstData); WINCOMMCTRLAPI HRESULT WINAPI DPA_LoadStream(HDPA * phdpa, PFNDPASTREAM pfn, IStream * pstream, void *pvInstData); WINCOMMCTRLAPI HRESULT WINAPI DPA_SaveStream(HDPA hdpa, PFNDPASTREAM pfn, IStream * pstream, void *pvInstData); #endif // DOC'ed for DOJ compliance // Merge two DPAs. This takes two (optionally) presorted arrays and merges // the source array into the dest. DPA_Merge uses the provided callbacks // to perform comparison and merge operations. The merge callback is // called when two elements (one in each list) match according to the // compare function. This allows portions of an element in one list to // be merged with the respective element in the second list. // // The first DPA (hdpaDest) is the output array. // // Merge options: // // DPAM_SORTED The arrays are already sorted; don't sort // DPAM_UNION The resulting array is the union of all elements // in both arrays (DPAMM_INSERT may be sent for // this merge option.) // DPAM_INTERSECT Only elements in the source array that intersect // with the dest array are merged. (DPAMM_DELETE // may be sent for this merge option.) // DPAM_NORMAL Like DPAM_INTERSECT except the dest array // also maintains its original, additional elements. // #define DPAM_SORTED 0x00000001 #define DPAM_NORMAL 0x00000002 #define DPAM_UNION 0x00000004 #define DPAM_INTERSECT 0x00000008 // The merge callback should merge contents of the two items and return // the pointer of the merged item. It's okay to simply use pvDest // as the returned pointer. // typedef void * (CALLBACK *PFNDPAMERGE)(UINT uMsg, void *pvDest, void *pvSrc, LPARAM lParam); // Messages for merge callback #define DPAMM_MERGE 1 #define DPAMM_DELETE 2 #define DPAMM_INSERT 3 WINCOMMCTRLAPI BOOL WINAPI DPA_Merge(HDPA hdpaDest, HDPA hdpaSrc, DWORD dwFlags, PFNDPACOMPARE pfnCompare, PFNDPAMERGE pfnMerge, LPARAM lParam); // DOC'ed for DOJ compliance #define DPA_SortedInsertPtr(hdpa, pFind, iStart, pfnCompare, lParam, options, pitem) \ DPA_InsertPtr(hdpa, DPA_Search(hdpa, pFind, iStart, pfnCompare, lParam, (DPAS_SORTED | (options))), (pitem)) //====================================================================== // 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(LPSTR * ppsz, LPCSTR psz); // DOC'ed for DOJ compliance: #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_PTR WINAPI GetSize(void _huge* pb); #endif #ifndef _SIZE_T_DEFINED #define _SIZE_T_DEFINED typedef unsigned int size_t; #endif #ifdef _WIN32 //=================================================================== 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 *MRUCMPDATAPROC)(const void *, const void *, size_t); typedef struct _MRUINFOA { DWORD cbSize; UINT uMax; UINT fFlags; HKEY hKey; LPCSTR lpszSubKey; MRUCMPPROCA lpfnCompare; } MRUINFOA, *LPMRUINFOA; typedef struct _MRUINFOW { DWORD cbSize; UINT uMax; UINT fFlags; HKEY hKey; LPCWSTR lpszSubKey; MRUCMPPROCW lpfnCompare; } MRUINFOW, *LPMRUINFOW; typedef struct _MRUDATAINFOA { DWORD cbSize; UINT uMax; UINT fFlags; HKEY hKey; LPCSTR lpszSubKey; MRUCMPDATAPROC lpfnCompare; } MRUDATAINFOA, *LPMRUDATAINFOA; typedef struct _MRUDATAINFOW { DWORD cbSize; UINT uMax; UINT fFlags; HKEY hKey; LPCWSTR lpszSubKey; MRUCMPDATAPROC lpfnCompare; } MRUDATAINFOW, *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 #define MRU_LAZY 0x8000 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, void * lpData, UINT uLen); WINCOMMCTRLAPI int WINAPI EnumMRUListW(HANDLE hMRU, int nItem, void * lpData, UINT uLen); WINCOMMCTRLAPI int WINAPI AddMRUData(HANDLE hMRU, const void *lpData, UINT cbData); WINCOMMCTRLAPI int WINAPI FindMRUData(HANDLE hMRU, const void *lpData, UINT cbData, LPINT lpiSlot); WINCOMMCTRLAPI HANDLE WINAPI CreateMRUListLazyA(LPMRUINFOA lpmi, const void *lpData, UINT cbData, LPINT lpiSlot); WINCOMMCTRLAPI HANDLE WINAPI CreateMRUListLazyW(LPMRUINFOW lpmi, const void *lpData, UINT cbData, LPINT lpiSlot); #ifdef UNICODE #define CreateMRUList CreateMRUListW #define AddMRUString AddMRUStringW #define FindMRUString FindMRUStringW #define EnumMRUList EnumMRUListW #define CreateMRUListLazy CreateMRUListLazyW #else #define CreateMRUList CreateMRUListA #define AddMRUString AddMRUStringA #define FindMRUString FindMRUStringA #define EnumMRUList EnumMRUListA #define CreateMRUListLazy CreateMRUListLazyA #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 #ifndef TME_VALID #if (WINVER >= 0x0500) #define TME_VALID (TME_HOVER | TME_LEAVE | TME_NONCLIENT | TME_QUERY | TME_CANCEL) #else #define TME_VALID (TME_HOVER | TME_LEAVE | TME_QUERY | TME_CANCEL) #endif // WINVER >= 0x0500 #endif // !TME_VALID // These definitions are never used as a bitmask; I don't know why // they are all powers of two. #if (_WIN32_IE >= 0x0500) #define WSB_PROP_GUTTER 0x00001000L #endif // (_WIN32_IE >= 0x0500) // WSP_PROP_MASK is completely unused, but it was public in IE4 //====== SetPathWordBreakProc ====================================== void WINAPI SetPathWordBreakProc(HWND hwndEdit, BOOL fSet); #if (_WIN32_WINNT >= 0x501) #else // // subclassing stuff // typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData); /* #!perl PoundIf("SetWindowSubclass", "(_WIN32_IE >= 0x560)"); PoundIf("GetWindowSubclass", "(_WIN32_IE >= 0x560)"); PoundIf("RemoveWindowSubclass", "(_WIN32_IE >= 0x560)"); // DefSubclassProc doesn't reference the type SUBCLASSPROC, so it does not need the guard. // PoundIf("DefSubclassProc", "(_WIN32_IE >= 0x560)"); */ BOOL WINAPI SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIdSubclass, DWORD_PTR dwRefData); BOOL WINAPI GetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIdSubclass, DWORD_PTR *pdwRefData); BOOL WINAPI RemoveWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIdSubclass); /* #!perl DeclareFunctionErrorValue("DefSubclassProc", "0"); */ LRESULT WINAPI DefSubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); #endif #if (_WIN32_WINNT >= 0x501) /* #!perl DeclareFunctionErrorValue("DrawShadowText", "-1"); */ int WINAPI DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, RECT* prc, DWORD dwFlags, COLORREF crText, COLORREF crShadow, int ixOffset, int iyOffset); #endif #ifdef __cplusplus } #endif #endif #endif // _INC_COMMCTRLP