///////////////////////////////////////////////////////////////////////////// // Name: wx/msw/missing.h // Purpose: Declarations for parts of the Win32 SDK that are missing in // the versions that come with some compilers // Created: 2002/04/23 // RCS-ID: $Id$ // Copyright: (c) 2002 Mattia Barbon // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_MISSING_H_ #define _WX_MISSING_H_ // ---------------------------------------------------------------------------- // ListView common control // ---------------------------------------------------------------------------- #ifndef LVHT_ONITEM #define LVHT_ONITEM \ (LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON) #endif #ifndef LVM_SETEXTENDEDLISTVIEWSTYLE #define LVM_SETEXTENDEDLISTVIEWSTYLE (0x1000 + 54) #endif #ifndef LVS_EX_FULLROWSELECT #define LVS_EX_FULLROWSELECT 0x00000020 #endif #ifndef LVS_EX_LABELTIP #define LVS_EX_LABELTIP 0x00004000 #endif #ifndef LVS_OWNERDATA #define LVS_OWNERDATA 0x1000 #endif #ifndef LVM_FIRST #define LVM_FIRST 0x1000 #endif #ifndef HDM_FIRST #define HDM_FIRST 0x1200 #endif #ifndef LVCFMT_JUSTIFYMASK #define LVCFMT_JUSTIFYMASK 0x0003 #endif #ifndef LVSICF_NOSCROLL #define LVSICF_NOINVALIDATEALL 0x0001 #define LVSICF_NOSCROLL 0x0002 #endif // mingw32/cygwin don't have declarations for comctl32.dll 4.70+ stuff #ifndef NM_CACHEHINT typedef struct tagNMLVCACHEHINT { NMHDR hdr; int iFrom; int iTo; } NMLVCACHEHINT; #define NM_CACHEHINT NMLVCACHEHINT #endif #ifndef LVN_ODCACHEHINT #define LVN_ODCACHEHINT (-113) #endif #ifndef ListView_GetHeader #define ListView_GetHeader(w) (HWND)SendMessage((w),LVM_GETHEADER,0,0) #endif #ifndef LVM_GETHEADER #define LVM_GETHEADER (LVM_FIRST+31) #endif #ifndef Header_GetItemRect #define Header_GetItemRect(w,i,r) \ (BOOL)SendMessage((w),HDM_GETITEMRECT,(WPARAM)(i),(LPARAM)(r)) #endif #ifndef HDM_GETITEMRECT #define HDM_GETITEMRECT (HDM_FIRST+7) #endif #ifndef LVCF_IMAGE #define LVCF_IMAGE 0x0010 #endif #ifndef LVCFMT_BITMAP_ON_RIGHT #define LVCFMT_BITMAP_ON_RIGHT 0x1000 #endif #if defined(__GNUWIN32__) && !defined(LV_ITEM) \ && !wxCHECK_W32API_VERSION( 0, 5 ) typedef struct _LVITEMW { UINT mask; int iItem; int iSubItem; UINT state; UINT stateMask; LPWSTR pszText; int cchTextMax; int iImage; LPARAM lParam; #if (_WIN32_IE >= 0x0300) int iIndent; #endif } LV_ITEMW; typedef struct tagLVITEMA { UINT mask; int iItem; int iSubItem; UINT state; UINT stateMask; LPSTR pszText; int cchTextMax; int iImage; LPARAM lParam; #if (_WIN32_IE >= 0x0300) int iIndent; #endif } LV_ITEMA; #define LV_ITEM LV_ITEMA; #endif #ifndef ListView_GetColumnWidth #define ListView_GetColumnWidth(hwnd, iCol) \ (int)SNDMSG((hwnd), LVM_GETCOLUMNWIDTH, (WPARAM)(int)(iCol), 0) #endif #ifndef ListView_SetColumnWidth #define ListView_SetColumnWidth(hwnd, iCol, cx) \ (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNWIDTH, (WPARAM)(int)(iCol), MAKELPARAM((cx), 0)) #endif #ifndef ListView_GetTextColor #define ListView_GetTextColor(hwnd) \ (COLORREF)SNDMSG((hwnd), LVM_GETTEXTCOLOR, 0, 0L) #endif #ifndef ListView_FindItem #define ListView_FindItem(hwnd, iStart, plvfi) \ (int)SNDMSG((hwnd), LVM_FINDITEM, (WPARAM)(int)(iStart), (LPARAM)(const LV_FINDINFO FAR*)(plvfi)) #endif #if defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 0, 5 ) #ifndef LV_DISPINFOA typedef struct tagNMLVDISPINFOA { NMHDR hdr; LV_ITEMA item; } NMLVDISPINFOA, FAR *LPNMLVDISPINFOA; #define _LV_DISPINFOA tagNMLVDISPINFOA #define LV_DISPINFOA NMLVDISPINFOA #endif #ifndef LV_DISPINFOW typedef struct tagNMLVDISPINFOW { NMHDR hdr; LV_ITEMW item; } NMLVDISPINFOW, FAR *LPNMLVDISPINFOW; #define _LV_DISPINFOW tagNMLVDISPINFOW #define LV_DISPINFOW NMLVDISPINFOW #endif #endif #if ((defined(__WATCOMC__) && __WATCOMC__ >= 1200) || defined(__GNUWIN32__) || defined (__MINGW32__) || defined(__DIGITALMARS__) || defined (__BORLANDC__)) && !defined(HDN_GETDISPINFOW) #define HDN_GETDISPINFOW (HDN_FIRST-29) #if !wxCHECK_W32API_VERSION(2, 2) typedef struct { NMHDR hdr; int iItem; UINT mask; LPWSTR pszText; int cchTextMax; int iImage; LPARAM lParam; } NMHDDISPINFOW, *LPNMHDDISPINFOW; #endif #endif #ifndef LVM_SETUNICODEFORMAT #define LVM_SETUNICODEFORMAT 0x2005 #endif // ---------------------------------------------------------------------------- // Common Control missing // ---------------------------------------------------------------------------- // __DMC__ date time control IDs #ifdef __DMC__ #define DATETIMEPICK_CLASSW L"SysDateTimePick32" #define DATETIMEPICK_CLASSA "SysDateTimePick32" #define ICC_DATE_CLASSES 256 #if (_WIN32_IE >= 0x0300) typedef struct tagINITCOMMONCONTROLSEX { DWORD dwSize; DWORD dwICC; } INITCOMMONCONTROLSEX,*LPINITCOMMONCONTROLSEX; #define GDTR_MIN 1 #define GDTR_MAX 2 #define GDT_ERROR -1 #define GDT_VALID 0 #define GDT_NONE 1 #define DTS_UPDOWN 1 #define DTS_SHOWNONE 2 #define DTS_SHORTDATEFORMAT 0 #define DTS_LONGDATEFORMAT 4 #define DTS_TIMEFORMAT 9 #define DTS_APPCANPARSE 16 #define DTS_RIGHTALIGN 32 #if ( _WIN32_IE >= 0x500 ) #define DTS_SHORTDATECENTURYFORMAT 0x000C #endif /* _WIN32_IE >= 0x500 */ #endif #define DATETIMEPICK_CLASSW L"SysDateTimePick32" #define DATETIMEPICK_CLASSA "SysDateTimePick32" #ifdef UNICODE #define DATETIMEPICK_CLASS DATETIMEPICK_CLASSW #else #define DATETIMEPICK_CLASS DATETIMEPICK_CLASSA #endif #define DTM_GETSYSTEMTIME 0x1001 #define DTM_SETSYSTEMTIME 0x1002 #define DTM_GETRANGE 0x1003 #define DTM_SETRANGE 0x1004 #define DTN_DATETIMECHANGE ((UINT)-759) #define DateTime_GetMonthCal(hwnd) SNDMSG(hwnd, DTM_GETMONTHCAL, 0, 0) #define DateTime_GetMonthCalColor(hwnd, icolor) SNDMSG(hwnd, DTM_GETMONTHCAL, (WPARAM)icolor,0) #define DateTime_GetMonthCalFont(hwnd) SNDMSG(hwnd,DTM_GETMCFONT,0,0) #define DateTime_GetRange(hwnd,lpsystimearray) SNDMSG(hwnd,DTM_GETRANGE,0,(LPARAM)lpsystimearray) #define DateTime_GetSystemTime(hwnd,lpsystime) SNDMSG(hwnd,DTM_GETSYSTEMTIME,0,(LPARAM)lpsystime) #define DateTime_SetFormat(hwnd,lpszformat) SNDMSG(hwnd,DTM_SETFORMAT,0,(LPARAM)lpszformat) #define DateTime_SetMonthCalColor(hwnd,icolor,clr) SNDMSG(hwnd,DTM_SETMCCOLOR,(WPARAM)icolor,(LPARAM)clr) #define DateTime_SetMonthCalFont(hwnd,hfont,lparam) SNDMSG(hwnd,DTM_SETMCFONT,(WPARAM)hfont,(LPARAM)lparam) #define DateTime_SetRange(hwnd,flags,lpsystimearray) SNDMSG(hwnd,DTM_SETRANGE,(WPARAM)flags,(LPARAM)lpsystimearray) #define DateTime_SetSystemTime(hwnd,flag,lpsystime) SNDMSG(hwnd,DTM_SETSYSTEMTIME,(WPARAM)flag,(LPARAM)lpsystime) #endif //__DMC__ date time control IDs #if defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 2, 4 ) || defined (__DMC__) typedef struct tagNMDATETIMECHANGE { NMHDR nmhdr; DWORD dwFlags; SYSTEMTIME st; } NMDATETIMECHANGE; #endif // old gcc headers // ---------------------------------------------------------------------------- // Toolbar define value missing // ---------------------------------------------------------------------------- #if !defined(CCS_VERT) #define CCS_VERT 0x00000080L #endif // ---------------------------------------------------------------------------- // MS HTML Help // ---------------------------------------------------------------------------- // instead of including htmlhelp.h, duplicate the things from it we need here: enum { HH_DISPLAY_TOPIC, HH_DISPLAY_TOC, HH_DISPLAY_INDEX, HH_DISPLAY_SEARCH, HH_SET_WIN_TYPE, HH_GET_WIN_TYPE, HH_GET_WIN_HANDLE, HH_ENUM_INFO_TYPE, HH_SET_INFO_TYPE, HH_SYNC, HH_RESERVED1, HH_RESERVED2, HH_RESERVED3, HH_KEYWORD_LOOKUP, HH_DISPLAY_TEXT_POPUP, HH_HELP_CONTEXT, HH_TP_HELP_CONTEXTMENU, HH_TP_HELP_WM_HELP, HH_CLOSE_ALL, HH_ALINK_LOOKUP, HH_GET_LAST_ERROR, HH_ENUM_CATEGORY, HH_ENUM_CATEGORY_IT, HH_RESET_IT_FILTER, HH_SET_INCLUSIVE_FILTER, HH_SET_EXCLUSIVE_FILTER }; struct HH_POPUP { int cbStruct; HINSTANCE hinst; UINT idString; LPCTSTR pszText; POINT pt; COLORREF clrForeground; COLORREF clrBackground; RECT rcMargins; LPCTSTR pszFont; }; struct HH_AKLINK { int cbStruct; BOOL fReserved; LPCTSTR pszKeywords; LPCTSTR pszUrl; LPCTSTR pszMsgText; LPCTSTR pszMsgTitle; LPCTSTR pszWindow; BOOL fIndexOnFail; }; // ---------------------------------------------------------------------------- // SHGetFileInfo-related things // ---------------------------------------------------------------------------- #ifndef SHGetFileInfo #ifdef UNICODE #define SHGetFileInfo SHGetFileInfoW #else #define SHGetFileInfo SHGetFileInfoA #endif #endif #ifndef SHGFI_ATTRIBUTES #define SHGFI_ATTRIBUTES 2048 #endif #ifndef SFGAO_READONLY #define SFGAO_READONLY 0x00040000L #endif #ifndef SFGAO_REMOVABLE #define SFGAO_REMOVABLE 0x02000000L #endif #ifndef SHGFI_DISPLAYNAME #define SHGFI_DISPLAYNAME 512 #endif #ifndef SHGFI_ICON #define SHGFI_ICON 256 #endif #ifndef SHGFI_SMALLICON #define SHGFI_SMALLICON 1 #endif #ifndef SHGFI_SHELLICONSIZE #define SHGFI_SHELLICONSIZE 4 #endif #ifndef SHGFI_OPENICON #define SHGFI_OPENICON 2 #endif // ---------------------------------------------------------------------------- // Rich text control // ---------------------------------------------------------------------------- #if wxUSE_RICHEDIT && defined(MAX_TAB_STOPS) // old mingw32 doesn't define this #ifndef CFM_CHARSET #define CFM_CHARSET 0x08000000 #endif // CFM_CHARSET #ifndef CFM_BACKCOLOR #define CFM_BACKCOLOR 0x04000000 #endif // cygwin does not have these defined for richedit #ifndef ENM_LINK #define ENM_LINK 0x04000000 #endif #ifndef EM_AUTOURLDETECT #define EM_AUTOURLDETECT (WM_USER + 91) #endif #ifndef EN_LINK #define EN_LINK 0x070b typedef struct _enlink { NMHDR nmhdr; UINT msg; WPARAM wParam; LPARAM lParam; CHARRANGE chrg; } ENLINK; #endif // ENLINK #ifndef SF_UNICODE #define SF_UNICODE 0x0010 #endif // Watcom C++ doesn't define this #ifndef SCF_ALL #define SCF_ALL 0x0004 #endif #ifndef PFA_JUSTIFY #define PFA_JUSTIFY 4 typedef struct _paraformat2 { UINT cbSize; DWORD dwMask; WORD wNumbering; WORD wEffects; LONG dxStartIndent; LONG dxRightIndent; LONG dxOffset; WORD wAlignment; SHORT cTabCount; LONG rgxTabs[MAX_TAB_STOPS]; LONG dySpaceBefore; LONG dySpaceAfter; LONG dyLineSpacing; SHORT sStype; BYTE bLineSpacingRule; BYTE bOutlineLevel; WORD wShadingWeight; WORD wShadingStyle; WORD wNumberingStart; WORD wNumberingStyle; WORD wNumberingTab; WORD wBorderSpace; WORD wBorderWidth; WORD wBorders; } PARAFORMAT2; #define wxEffects wReserved #endif #endif // wxUSE_RICHEDIT // ---------------------------------------------------------------------------- // ToolBar // ---------------------------------------------------------------------------- #if wxUSE_TOOLBAR #if !defined(TBIF_SIZE) #define TBIF_SIZE 64 #define TB_SETBUTTONINFO (WM_USER+66) typedef struct { UINT cbSize; DWORD dwMask; int idCommand; int iImage; BYTE fsState; BYTE fsStyle; WORD cx; DWORD lParam; LPTSTR pszText; int cchText; } TBBUTTONINFO, *LPTBBUTTONINFO; #endif // !defined(TBIF_SIZE) #if !defined(TB_SETDISABLEDIMAGELIST) #define TB_SETDISABLEDIMAGELIST (WM_USER + 54) #endif // !defined(TB_SETDISABLEDIMAGELIST) #endif // wxUSE_TOOLBAR // ---------------------------------------------------------------------------- // Tree control // ---------------------------------------------------------------------------- #ifndef TVIS_FOCUSED #define TVIS_FOCUSED 0x0001 #endif #ifndef TV_FIRST #define TV_FIRST 0x1100 #endif #ifndef TVS_CHECKBOXES #define TVS_CHECKBOXES 0x0100 #endif #ifndef TVS_FULLROWSELECT #define TVS_FULLROWSELECT 0x1000 #endif #ifndef TVM_SETBKCOLOR #define TVM_SETBKCOLOR (TV_FIRST + 29) #define TVM_SETTEXTCOLOR (TV_FIRST + 30) #endif #ifndef TVS_INFOTIP #define TVS_INFOTIP 2048 #endif #ifndef TVN_GETINFOTIPA #define TVN_GETINFOTIPA (TVN_FIRST-13) #define TVN_GETINFOTIPW (TVN_FIRST-14) #endif #ifndef TVN_GETINFOTIP #ifdef UNICODE #define TVN_GETINFOTIP TVN_GETINFOTIPW #else #define TVN_GETINFOTIP TVN_GETINFOTIPA #endif #endif #if !defined(NMTVGETINFOTIP) && defined(TVN_FIRST) // NB: Check for TVN_FIRST is done so that this code is not included if // (which defined HTREEITEM) wasn't included before. struct NMTVGETINFOTIPA { NMHDR hdr; LPSTR pszText; int cchTextMax; HTREEITEM hItem; LPARAM lParam; }; struct NMTVGETINFOTIPW { NMHDR hdr; LPWSTR pszText; int cchTextMax; HTREEITEM hItem; LPARAM lParam; }; #ifdef UNICODE #define NMTVGETINFOTIP NMTVGETINFOTIPW #else #define NMTVGETINFOTIP NMTVGETINFOTIPA #endif #endif // ---------------------------------------------------------------------------- // Misc stuff // ---------------------------------------------------------------------------- #ifndef CCM_SETUNICODEFORMAT #define CCM_SETUNICODEFORMAT 8197 #endif #ifndef QS_ALLPOSTMESSAGE #define QS_ALLPOSTMESSAGE 0x0100 #endif #ifndef WS_EX_CLIENTEDGE #define WS_EX_CLIENTEDGE 0x00000200L #endif #ifndef ENDSESSION_LOGOFF #define ENDSESSION_LOGOFF 0x80000000 #endif #ifndef HANGUL_CHARSET #define HANGUL_CHARSET 129 #endif #ifndef TME_HOVER #define TME_HOVER 1 #endif #ifndef TME_LEAVE #define TME_LEAVE 2 #endif #ifndef TME_QUERY #define TME_QUERY 0x40000000 #endif #ifndef TME_CANCEL #define TME_CANCEL 0x80000000 #endif #ifndef HOVER_DEFAULT #define HOVER_DEFAULT 0xFFFFFFFF #endif #ifdef __DMC__ #ifndef _TrackMouseEvent #define _TrackMouseEvent TrackMouseEvent #endif #endif // This didn't appear in mingw until 2.95.2 #ifndef SIF_TRACKPOS #define SIF_TRACKPOS 16 #endif #if wxUSE_MOUSEWHEEL #ifndef WM_MOUSEWHEEL #define WM_MOUSEWHEEL 0x020A #endif #ifndef WHEEL_DELTA #define WHEEL_DELTA 120 #endif #ifndef SPI_GETWHEELSCROLLLINES #define SPI_GETWHEELSCROLLLINES 104 #endif #endif // wxUSE_MOUSEWHEEL #ifndef VK_OEM_1 #define VK_OEM_1 0xBA #define VK_OEM_2 0xBF #define VK_OEM_3 0xC0 #define VK_OEM_4 0xDB #define VK_OEM_5 0xDC #define VK_OEM_6 0xDD #define VK_OEM_7 0xDE #endif #ifndef VK_OEM_COMMA #define VK_OEM_PLUS 0xBB #define VK_OEM_COMMA 0xBC #define VK_OEM_MINUS 0xBD #define VK_OEM_PERIOD 0xBE #endif #ifndef WM_CONTEXTMENU #define WM_CONTEXTMENU 0x007B #endif #ifndef WM_UPDATEUISTATE #define WM_UPDATEUISTATE 0x0128 #endif #ifndef WM_PRINTCLIENT #define WM_PRINTCLIENT 0x318 #endif #ifndef UIS_INITIALIZE #define UIS_INITIALIZE 3 #endif #ifndef UISF_HIDEFOCUS #define UISF_HIDEFOCUS 1 #endif #ifndef UISF_HIDEACCEL #define UISF_HIDEACCEL 2 #endif #ifndef WC_NO_BEST_FIT_CHARS #define WC_NO_BEST_FIT_CHARS 0x400 #endif #ifndef OFN_EXPLORER #define OFN_EXPLORER 0x00080000 #endif #ifndef OFN_ENABLESIZING #define OFN_ENABLESIZING 0x00800000 #endif // ------------------ For Flashing Window ------------- #if (defined(__BORLANDC__) && (__BORLANDC__ < 550)) typedef struct { UINT cbSize; HWND hwnd; DWORD dwFlags; UINT uCount; DWORD dwTimeout; } FLASHWINFO, *PFLASHWINFO; #endif // In addition, include stuff not defined in WinCE #ifdef __WXWINCE__ #include "wx/msw/wince/missing.h" #endif #endif // _WX_MISSING_H_