]> git.saurik.com Git - wxWidgets.git/blame_incremental - include/wx/msw/missing.h
OS/2 fix
[wxWidgets.git] / include / wx / msw / missing.h
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: wx/msw/missing.h
3// Purpose: Declarations for parts of the Win32 SDK that are missing in
4// the versions that come with some compilers
5// Created: 2002/04/23
6// RCS-ID: $Id$
7// Copyright: (c) 2002 Mattia Barbon
8// Licence: wxWindows licence
9/////////////////////////////////////////////////////////////////////////////
10
11#ifndef _WX_MISSING_H_
12#define _WX_MISSING_H_
13
14// ----------------------------------------------------------------------------
15// ListView common control
16// ----------------------------------------------------------------------------
17
18#ifndef LVHT_ONITEM
19 #define LVHT_ONITEM \
20 (LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON)
21#endif
22
23#ifndef LVM_SETEXTENDEDLISTVIEWSTYLE
24 #define LVM_SETEXTENDEDLISTVIEWSTYLE (0x1000 + 54)
25#endif
26
27#ifndef LVS_EX_FULLROWSELECT
28 #define LVS_EX_FULLROWSELECT 0x00000020
29#endif
30
31#ifndef LVS_EX_LABELTIP
32 #define LVS_EX_LABELTIP 0x00004000
33#endif
34
35#ifndef LVS_OWNERDATA
36 #define LVS_OWNERDATA 0x1000
37#endif
38
39#ifndef LVM_FIRST
40 #define LVM_FIRST 0x1000
41#endif
42
43#ifndef HDM_FIRST
44 #define HDM_FIRST 0x1200
45#endif
46
47#ifndef LVCFMT_JUSTIFYMASK
48 #define LVCFMT_JUSTIFYMASK 0x0003
49#endif
50
51#ifndef LVSICF_NOSCROLL
52 #define LVSICF_NOINVALIDATEALL 0x0001
53 #define LVSICF_NOSCROLL 0x0002
54#endif
55
56// mingw32/cygwin don't have declarations for comctl32.dll 4.70+ stuff
57#ifndef NM_CACHEHINT
58 typedef struct tagNMLVCACHEHINT
59 {
60 NMHDR hdr;
61 int iFrom;
62 int iTo;
63 } NMLVCACHEHINT;
64
65 #define NM_CACHEHINT NMLVCACHEHINT
66#endif
67
68#ifndef LVN_ODCACHEHINT
69 #define LVN_ODCACHEHINT (-113)
70#endif
71
72#ifndef ListView_GetHeader
73 #define ListView_GetHeader(w) (HWND)SendMessage((w),LVM_GETHEADER,0,0)
74#endif
75
76#ifndef LVM_GETHEADER
77 #define LVM_GETHEADER (LVM_FIRST+31)
78#endif
79
80#ifndef Header_GetItemRect
81 #define Header_GetItemRect(w,i,r) \
82 (BOOL)SendMessage((w),HDM_GETITEMRECT,(WPARAM)(i),(LPARAM)(r))
83#endif
84
85#ifndef HDM_GETITEMRECT
86 #define HDM_GETITEMRECT (HDM_FIRST+7)
87#endif
88
89#ifndef LVCF_IMAGE
90 #define LVCF_IMAGE 0x0010
91#endif
92
93#ifndef LVCFMT_BITMAP_ON_RIGHT
94 #define LVCFMT_BITMAP_ON_RIGHT 0x1000
95#endif
96
97#if defined(__GNUWIN32__) && !defined(LV_ITEM) \
98 && !wxCHECK_W32API_VERSION( 0, 5 )
99typedef struct _LVITEMW {
100 UINT mask;
101 int iItem;
102 int iSubItem;
103 UINT state;
104 UINT stateMask;
105 LPWSTR pszText;
106 int cchTextMax;
107 int iImage;
108 LPARAM lParam;
109#if (_WIN32_IE >= 0x0300)
110 int iIndent;
111#endif
112} LV_ITEMW;
113
114typedef struct tagLVITEMA
115{
116 UINT mask;
117 int iItem;
118 int iSubItem;
119 UINT state;
120 UINT stateMask;
121 LPSTR pszText;
122 int cchTextMax;
123 int iImage;
124 LPARAM lParam;
125#if (_WIN32_IE >= 0x0300)
126 int iIndent;
127#endif
128} LV_ITEMA;
129
130#define LV_ITEM LV_ITEMA;
131#endif
132
133#ifndef ListView_GetColumnWidth
134#define ListView_GetColumnWidth(hwnd, iCol) \
135 (int)SNDMSG((hwnd), LVM_GETCOLUMNWIDTH, (WPARAM)(int)(iCol), 0)
136#endif
137
138#ifndef ListView_SetColumnWidth
139#define ListView_SetColumnWidth(hwnd, iCol, cx) \
140 (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNWIDTH, (WPARAM)(int)(iCol), MAKELPARAM((cx), 0))
141#endif
142
143#ifndef ListView_GetTextColor
144#define ListView_GetTextColor(hwnd) \
145 (COLORREF)SNDMSG((hwnd), LVM_GETTEXTCOLOR, 0, 0L)
146#endif
147
148#ifndef ListView_FindItem
149#define ListView_FindItem(hwnd, iStart, plvfi) \
150 (int)SNDMSG((hwnd), LVM_FINDITEM, (WPARAM)(int)(iStart), (LPARAM)(const LV_FINDINFO FAR*)(plvfi))
151#endif
152
153#if defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 0, 5 )
154#ifndef LV_DISPINFOA
155typedef struct tagNMLVDISPINFOA {
156 NMHDR hdr;
157 LV_ITEMA item;
158} NMLVDISPINFOA, FAR *LPNMLVDISPINFOA;
159#define _LV_DISPINFOA tagNMLVDISPINFOA
160#define LV_DISPINFOA NMLVDISPINFOA
161#endif
162#ifndef LV_DISPINFOW
163typedef struct tagNMLVDISPINFOW {
164 NMHDR hdr;
165 LV_ITEMW item;
166} NMLVDISPINFOW, FAR *LPNMLVDISPINFOW;
167#define _LV_DISPINFOW tagNMLVDISPINFOW
168#define LV_DISPINFOW NMLVDISPINFOW
169#endif
170#endif
171
172#if ((defined(__WATCOMC__) && __WATCOMC__ >= 1200) || defined(__GNUWIN32__) || defined (__MINGW32__) || defined(__DIGITALMARS__) || defined (__BORLANDC__)) && !defined(HDN_GETDISPINFOW)
173#define HDN_GETDISPINFOW (HDN_FIRST-29)
174#if !wxCHECK_W32API_VERSION(2, 2)
175typedef struct {
176 NMHDR hdr;
177 int iItem;
178 UINT mask;
179 LPWSTR pszText;
180 int cchTextMax;
181 int iImage;
182 LPARAM lParam;
183} NMHDDISPINFOW, *LPNMHDDISPINFOW;
184#endif
185#endif
186
187#ifndef LVM_SETUNICODEFORMAT
188#define LVM_SETUNICODEFORMAT 0x2005
189#endif
190
191// ----------------------------------------------------------------------------
192// Common Control missing
193// ----------------------------------------------------------------------------
194// __DMC__ date time control IDs
195
196#ifdef __DMC__
197#define DATETIMEPICK_CLASSW L"SysDateTimePick32"
198#define DATETIMEPICK_CLASSA "SysDateTimePick32"
199
200#define ICC_DATE_CLASSES 256
201
202#if (_WIN32_IE >= 0x0300)
203typedef struct tagINITCOMMONCONTROLSEX {
204 DWORD dwSize;
205 DWORD dwICC;
206} INITCOMMONCONTROLSEX,*LPINITCOMMONCONTROLSEX;
207
208#define GDTR_MIN 1
209#define GDTR_MAX 2
210
211#define GDT_ERROR -1
212#define GDT_VALID 0
213#define GDT_NONE 1
214
215
216#define DTS_UPDOWN 1
217#define DTS_SHOWNONE 2
218#define DTS_SHORTDATEFORMAT 0
219#define DTS_LONGDATEFORMAT 4
220#define DTS_TIMEFORMAT 9
221#define DTS_APPCANPARSE 16
222#define DTS_RIGHTALIGN 32
223#if ( _WIN32_IE >= 0x500 )
224#define DTS_SHORTDATECENTURYFORMAT 0x000C
225#endif /* _WIN32_IE >= 0x500 */
226#endif
227
228
229
230#define DATETIMEPICK_CLASSW L"SysDateTimePick32"
231#define DATETIMEPICK_CLASSA "SysDateTimePick32"
232
233#ifdef UNICODE
234 #define DATETIMEPICK_CLASS DATETIMEPICK_CLASSW
235#else
236 #define DATETIMEPICK_CLASS DATETIMEPICK_CLASSA
237#endif
238
239#define DTM_GETSYSTEMTIME 0x1001
240#define DTM_SETSYSTEMTIME 0x1002
241#define DTM_GETRANGE 0x1003
242#define DTM_SETRANGE 0x1004
243#define DTN_DATETIMECHANGE ((UINT)-759)
244
245#define DateTime_GetMonthCal(hwnd) SNDMSG(hwnd, DTM_GETMONTHCAL, 0, 0)
246#define DateTime_GetMonthCalColor(hwnd, icolor) SNDMSG(hwnd, DTM_GETMONTHCAL, (WPARAM)icolor,0)
247#define DateTime_GetMonthCalFont(hwnd) SNDMSG(hwnd,DTM_GETMCFONT,0,0)
248#define DateTime_GetRange(hwnd,lpsystimearray) SNDMSG(hwnd,DTM_GETRANGE,0,(LPARAM)lpsystimearray)
249#define DateTime_GetSystemTime(hwnd,lpsystime) SNDMSG(hwnd,DTM_GETSYSTEMTIME,0,(LPARAM)lpsystime)
250#define DateTime_SetFormat(hwnd,lpszformat) SNDMSG(hwnd,DTM_SETFORMAT,0,(LPARAM)lpszformat)
251#define DateTime_SetMonthCalColor(hwnd,icolor,clr) SNDMSG(hwnd,DTM_SETMCCOLOR,(WPARAM)icolor,(LPARAM)clr)
252#define DateTime_SetMonthCalFont(hwnd,hfont,lparam) SNDMSG(hwnd,DTM_SETMCFONT,(WPARAM)hfont,(LPARAM)lparam)
253#define DateTime_SetRange(hwnd,flags,lpsystimearray) SNDMSG(hwnd,DTM_SETRANGE,(WPARAM)flags,(LPARAM)lpsystimearray)
254#define DateTime_SetSystemTime(hwnd,flag,lpsystime) SNDMSG(hwnd,DTM_SETSYSTEMTIME,(WPARAM)flag,(LPARAM)lpsystime)
255
256
257#endif //__DMC__ date time control IDs
258
259#if defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 2, 4 ) || defined (__DMC__)
260typedef struct tagNMDATETIMECHANGE
261{
262 NMHDR nmhdr;
263 DWORD dwFlags;
264 SYSTEMTIME st;
265} NMDATETIMECHANGE;
266#endif // old gcc headers
267
268// ----------------------------------------------------------------------------
269// Toolbar define value missing
270// ----------------------------------------------------------------------------
271#if !defined(CCS_VERT)
272#define CCS_VERT 0x00000080L
273#endif
274
275// ----------------------------------------------------------------------------
276// MS HTML Help
277// ----------------------------------------------------------------------------
278
279// instead of including htmlhelp.h, duplicate the things from it we need here:
280
281enum
282{
283 HH_DISPLAY_TOPIC,
284 HH_DISPLAY_TOC,
285 HH_DISPLAY_INDEX,
286 HH_DISPLAY_SEARCH,
287 HH_SET_WIN_TYPE,
288 HH_GET_WIN_TYPE,
289 HH_GET_WIN_HANDLE,
290 HH_ENUM_INFO_TYPE,
291 HH_SET_INFO_TYPE,
292 HH_SYNC,
293 HH_RESERVED1,
294 HH_RESERVED2,
295 HH_RESERVED3,
296 HH_KEYWORD_LOOKUP,
297 HH_DISPLAY_TEXT_POPUP,
298 HH_HELP_CONTEXT,
299 HH_TP_HELP_CONTEXTMENU,
300 HH_TP_HELP_WM_HELP,
301 HH_CLOSE_ALL,
302 HH_ALINK_LOOKUP,
303 HH_GET_LAST_ERROR,
304 HH_ENUM_CATEGORY,
305 HH_ENUM_CATEGORY_IT,
306 HH_RESET_IT_FILTER,
307 HH_SET_INCLUSIVE_FILTER,
308 HH_SET_EXCLUSIVE_FILTER
309};
310
311struct HH_POPUP
312{
313 int cbStruct;
314 HINSTANCE hinst;
315 UINT idString;
316 LPCTSTR pszText;
317 POINT pt;
318 COLORREF clrForeground;
319 COLORREF clrBackground;
320 RECT rcMargins;
321 LPCTSTR pszFont;
322};
323
324struct HH_AKLINK
325{
326 int cbStruct;
327 BOOL fReserved;
328 LPCTSTR pszKeywords;
329 LPCTSTR pszUrl;
330 LPCTSTR pszMsgText;
331 LPCTSTR pszMsgTitle;
332 LPCTSTR pszWindow;
333 BOOL fIndexOnFail;
334};
335
336// ----------------------------------------------------------------------------
337// SHGetFileInfo-related things
338// ----------------------------------------------------------------------------
339
340#ifndef SHGetFileInfo
341 #ifdef UNICODE
342 #define SHGetFileInfo SHGetFileInfoW
343 #else
344 #define SHGetFileInfo SHGetFileInfoA
345 #endif
346#endif
347
348#ifndef SHGFI_ATTRIBUTES
349 #define SHGFI_ATTRIBUTES 2048
350#endif
351
352#ifndef SFGAO_READONLY
353 #define SFGAO_READONLY 0x00040000L
354#endif
355
356#ifndef SFGAO_REMOVABLE
357 #define SFGAO_REMOVABLE 0x02000000L
358#endif
359
360#ifndef SHGFI_DISPLAYNAME
361 #define SHGFI_DISPLAYNAME 512
362#endif
363
364#ifndef SHGFI_ICON
365 #define SHGFI_ICON 256
366#endif
367
368#ifndef SHGFI_SMALLICON
369 #define SHGFI_SMALLICON 1
370#endif
371
372#ifndef SHGFI_SHELLICONSIZE
373 #define SHGFI_SHELLICONSIZE 4
374#endif
375
376#ifndef SHGFI_OPENICON
377 #define SHGFI_OPENICON 2
378#endif
379
380// ----------------------------------------------------------------------------
381// Rich text control
382// ----------------------------------------------------------------------------
383
384#if wxUSE_RICHEDIT && defined(MAX_TAB_STOPS)
385
386// old mingw32 doesn't define this
387#ifndef CFM_CHARSET
388 #define CFM_CHARSET 0x08000000
389#endif // CFM_CHARSET
390
391#ifndef CFM_BACKCOLOR
392 #define CFM_BACKCOLOR 0x04000000
393#endif
394
395// cygwin does not have these defined for richedit
396#ifndef ENM_LINK
397 #define ENM_LINK 0x04000000
398#endif
399
400#ifndef EM_AUTOURLDETECT
401 #define EM_AUTOURLDETECT (WM_USER + 91)
402#endif
403
404#ifndef EN_LINK
405 #define EN_LINK 0x070b
406
407 typedef struct _enlink
408 {
409 NMHDR nmhdr;
410 UINT msg;
411 WPARAM wParam;
412 LPARAM lParam;
413 CHARRANGE chrg;
414 } ENLINK;
415#endif // ENLINK
416
417#ifndef SF_UNICODE
418 #define SF_UNICODE 0x0010
419#endif
420
421// Watcom C++ doesn't define this
422#ifndef SCF_ALL
423 #define SCF_ALL 0x0004
424#endif
425
426#ifndef PFA_JUSTIFY
427#define PFA_JUSTIFY 4
428
429typedef struct _paraformat2 {
430 UINT cbSize;
431 DWORD dwMask;
432 WORD wNumbering;
433 WORD wEffects;
434 LONG dxStartIndent;
435 LONG dxRightIndent;
436 LONG dxOffset;
437 WORD wAlignment;
438 SHORT cTabCount;
439 LONG rgxTabs[MAX_TAB_STOPS];
440 LONG dySpaceBefore;
441 LONG dySpaceAfter;
442 LONG dyLineSpacing;
443 SHORT sStype;
444 BYTE bLineSpacingRule;
445 BYTE bOutlineLevel;
446 WORD wShadingWeight;
447 WORD wShadingStyle;
448 WORD wNumberingStart;
449 WORD wNumberingStyle;
450 WORD wNumberingTab;
451 WORD wBorderSpace;
452 WORD wBorderWidth;
453 WORD wBorders;
454} PARAFORMAT2;
455#define wxEffects wReserved
456
457#endif
458
459#endif // wxUSE_RICHEDIT
460
461// ----------------------------------------------------------------------------
462// ToolBar
463// ----------------------------------------------------------------------------
464
465#if wxUSE_TOOLBAR
466
467#if !defined(TBIF_SIZE)
468
469#define TBIF_SIZE 64
470#define TB_SETBUTTONINFO (WM_USER+66)
471
472typedef struct {
473 UINT cbSize;
474 DWORD dwMask;
475 int idCommand;
476 int iImage;
477 BYTE fsState;
478 BYTE fsStyle;
479 WORD cx;
480 DWORD lParam;
481 LPTSTR pszText;
482 int cchText;
483} TBBUTTONINFO, *LPTBBUTTONINFO;
484
485#endif // !defined(TBIF_SIZE)
486
487#if !defined(TB_SETDISABLEDIMAGELIST)
488 #define TB_SETDISABLEDIMAGELIST (WM_USER + 54)
489#endif // !defined(TB_SETDISABLEDIMAGELIST)
490
491#endif // wxUSE_TOOLBAR
492
493// ----------------------------------------------------------------------------
494// Tree control
495// ----------------------------------------------------------------------------
496
497#ifndef TVIS_FOCUSED
498 #define TVIS_FOCUSED 0x0001
499#endif
500
501#ifndef TV_FIRST
502 #define TV_FIRST 0x1100
503#endif
504
505#ifndef TVS_CHECKBOXES
506 #define TVS_CHECKBOXES 0x0100
507#endif
508
509#ifndef TVS_FULLROWSELECT
510 #define TVS_FULLROWSELECT 0x1000
511#endif
512
513#ifndef TVM_SETBKCOLOR
514 #define TVM_SETBKCOLOR (TV_FIRST + 29)
515 #define TVM_SETTEXTCOLOR (TV_FIRST + 30)
516#endif
517
518#ifndef TVS_INFOTIP
519 #define TVS_INFOTIP 2048
520#endif
521
522#ifndef TVN_GETINFOTIPA
523 #define TVN_GETINFOTIPA (TVN_FIRST-13)
524 #define TVN_GETINFOTIPW (TVN_FIRST-14)
525#endif
526
527#ifndef TVN_GETINFOTIP
528 #ifdef UNICODE
529 #define TVN_GETINFOTIP TVN_GETINFOTIPW
530 #else
531 #define TVN_GETINFOTIP TVN_GETINFOTIPA
532 #endif
533#endif
534
535#if !defined(NMTVGETINFOTIP) && defined(TVN_FIRST)
536 // NB: Check for TVN_FIRST is done so that this code is not included if
537 // <commctrl.h> (which defined HTREEITEM) wasn't included before.
538 struct NMTVGETINFOTIPA
539 {
540 NMHDR hdr;
541 LPSTR pszText;
542 int cchTextMax;
543 HTREEITEM hItem;
544 LPARAM lParam;
545 };
546 struct NMTVGETINFOTIPW
547 {
548 NMHDR hdr;
549 LPWSTR pszText;
550 int cchTextMax;
551 HTREEITEM hItem;
552 LPARAM lParam;
553 };
554 #ifdef UNICODE
555 #define NMTVGETINFOTIP NMTVGETINFOTIPW
556 #else
557 #define NMTVGETINFOTIP NMTVGETINFOTIPA
558 #endif
559#endif
560
561// ----------------------------------------------------------------------------
562// Misc stuff
563// ----------------------------------------------------------------------------
564
565#ifndef CCM_SETUNICODEFORMAT
566 #define CCM_SETUNICODEFORMAT 8197
567#endif
568
569#ifndef QS_ALLPOSTMESSAGE
570 #define QS_ALLPOSTMESSAGE 0x0100
571#endif
572
573#ifndef WS_EX_TRANSPARENT
574 #define WS_EX_TRANSPARENT 0x00000020L
575#endif
576
577#ifndef WS_EX_CLIENTEDGE
578 #define WS_EX_CLIENTEDGE 0x00000200L
579#endif
580
581#ifndef ENDSESSION_LOGOFF
582 #define ENDSESSION_LOGOFF 0x80000000
583#endif
584
585#ifndef HANGUL_CHARSET
586 #define HANGUL_CHARSET 129
587#endif
588
589#ifndef TME_HOVER
590 #define TME_HOVER 1
591#endif
592
593#ifndef TME_LEAVE
594 #define TME_LEAVE 2
595#endif
596
597#ifndef TME_QUERY
598 #define TME_QUERY 0x40000000
599#endif
600
601#ifndef TME_CANCEL
602 #define TME_CANCEL 0x80000000
603#endif
604
605#ifndef HOVER_DEFAULT
606 #define HOVER_DEFAULT 0xFFFFFFFF
607#endif
608
609#ifdef __DMC__
610
611 #ifndef _TrackMouseEvent
612 #define _TrackMouseEvent TrackMouseEvent
613 #endif
614
615#endif
616
617// This didn't appear in mingw until 2.95.2
618#ifndef SIF_TRACKPOS
619#define SIF_TRACKPOS 16
620#endif
621
622#if wxUSE_MOUSEWHEEL
623 #ifndef WM_MOUSEWHEEL
624 #define WM_MOUSEWHEEL 0x020A
625 #endif
626 #ifndef WHEEL_DELTA
627 #define WHEEL_DELTA 120
628 #endif
629 #ifndef SPI_GETWHEELSCROLLLINES
630 #define SPI_GETWHEELSCROLLLINES 104
631 #endif
632#endif // wxUSE_MOUSEWHEEL
633
634#ifndef VK_OEM_1
635 #define VK_OEM_1 0xBA
636 #define VK_OEM_2 0xBF
637 #define VK_OEM_3 0xC0
638 #define VK_OEM_4 0xDB
639 #define VK_OEM_5 0xDC
640 #define VK_OEM_6 0xDD
641 #define VK_OEM_7 0xDE
642#endif
643
644#ifndef VK_OEM_COMMA
645 #define VK_OEM_PLUS 0xBB
646 #define VK_OEM_COMMA 0xBC
647 #define VK_OEM_MINUS 0xBD
648 #define VK_OEM_PERIOD 0xBE
649#endif
650
651#ifndef WM_CONTEXTMENU
652 #define WM_CONTEXTMENU 0x007B
653#endif
654
655#ifndef WM_UPDATEUISTATE
656 #define WM_UPDATEUISTATE 0x0128
657#endif
658
659#ifndef WM_PRINTCLIENT
660 #define WM_PRINTCLIENT 0x318
661#endif
662
663#ifndef UIS_INITIALIZE
664 #define UIS_INITIALIZE 3
665#endif
666
667#ifndef UISF_HIDEFOCUS
668 #define UISF_HIDEFOCUS 1
669#endif
670
671#ifndef UISF_HIDEACCEL
672 #define UISF_HIDEACCEL 2
673#endif
674
675#ifndef WC_NO_BEST_FIT_CHARS
676 #define WC_NO_BEST_FIT_CHARS 0x400
677#endif
678
679#ifndef OFN_EXPLORER
680 #define OFN_EXPLORER 0x00080000
681#endif
682
683#ifndef OFN_ENABLESIZING
684 #define OFN_ENABLESIZING 0x00800000
685#endif
686
687// ------------------ For Flashing Window -------------
688#if (defined(__BORLANDC__) && (__BORLANDC__ < 550))
689typedef struct {
690 UINT cbSize;
691 HWND hwnd;
692 DWORD dwFlags;
693 UINT uCount;
694 DWORD dwTimeout;
695} FLASHWINFO, *PFLASHWINFO;
696#endif
697
698// In addition, include stuff not defined in WinCE
699#ifdef __WXWINCE__
700 #include "wx/msw/wince/missing.h"
701#endif
702
703#endif
704 // _WX_MISSING_H_