]> git.saurik.com Git - wxWidgets.git/blame_incremental - include/wx/msw/missing.h
added wxSetCCUnicodeFormat() and use it in wxTreeCtrl/wxToolBar; also replaced SendMe...
[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_OWNERDATA
32 #define LVS_OWNERDATA 0x1000
33#endif
34
35#ifndef LVM_FIRST
36 #define LVM_FIRST 0x1000
37#endif
38
39#ifndef HDM_FIRST
40 #define HDM_FIRST 0x1200
41#endif
42
43#ifndef LVCFMT_JUSTIFYMASK
44 #define LVCFMT_JUSTIFYMASK 0x0003
45#endif
46
47#ifndef LVSICF_NOSCROLL
48 #define LVSICF_NOINVALIDATEALL 0x0001
49 #define LVSICF_NOSCROLL 0x0002
50#endif
51
52// mingw32/cygwin don't have declarations for comctl32.dll 4.70+ stuff
53#ifndef NM_CACHEHINT
54 typedef struct tagNMLVCACHEHINT
55 {
56 NMHDR hdr;
57 int iFrom;
58 int iTo;
59 } NMLVCACHEHINT;
60
61 #define NM_CACHEHINT NMLVCACHEHINT
62#endif
63
64#ifndef LVN_ODCACHEHINT
65 #define LVN_ODCACHEHINT (-113)
66#endif
67
68#ifndef ListView_GetHeader
69 #define ListView_GetHeader(w) (HWND)SendMessage((w),LVM_GETHEADER,0,0)
70#endif
71
72#ifndef LVM_GETHEADER
73 #define LVM_GETHEADER (LVM_FIRST+31)
74#endif
75
76#ifndef Header_GetItemRect
77 #define Header_GetItemRect(w,i,r) \
78 (BOOL)SendMessage((w),HDM_GETITEMRECT,(WPARAM)(i),(LPARAM)(r))
79#endif
80
81#ifndef HDM_GETITEMRECT
82 #define HDM_GETITEMRECT (HDM_FIRST+7)
83#endif
84
85#ifndef LVCF_IMAGE
86 #define LVCF_IMAGE 0x0010
87#endif
88
89#ifndef LVCFMT_BITMAP_ON_RIGHT
90 #define LVCFMT_BITMAP_ON_RIGHT 0x1000
91#endif
92
93#if defined(__GNUWIN32__) && !defined(LV_ITEM) \
94 && !wxCHECK_W32API_VERSION( 0, 5 )
95typedef struct _LVITEMW {
96 UINT mask;
97 int iItem;
98 int iSubItem;
99 UINT state;
100 UINT stateMask;
101 LPWSTR pszText;
102 int cchTextMax;
103 int iImage;
104 LPARAM lParam;
105#if (_WIN32_IE >= 0x0300)
106 int iIndent;
107#endif
108} LV_ITEMW;
109
110typedef struct tagLVITEMA
111{
112 UINT mask;
113 int iItem;
114 int iSubItem;
115 UINT state;
116 UINT stateMask;
117 LPSTR pszText;
118 int cchTextMax;
119 int iImage;
120 LPARAM lParam;
121#if (_WIN32_IE >= 0x0300)
122 int iIndent;
123#endif
124} LV_ITEMA;
125
126#define LV_ITEM LV_ITEMA;
127#endif
128
129#ifndef ListView_GetColumnWidth
130#define ListView_GetColumnWidth(hwnd, iCol) \
131 (int)SNDMSG((hwnd), LVM_GETCOLUMNWIDTH, (WPARAM)(int)(iCol), 0)
132#endif
133
134#ifndef ListView_SetColumnWidth
135#define ListView_SetColumnWidth(hwnd, iCol, cx) \
136 (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNWIDTH, (WPARAM)(int)(iCol), MAKELPARAM((cx), 0))
137#endif
138
139#ifndef ListView_GetTextColor
140#define ListView_GetTextColor(hwnd) \
141 (COLORREF)SNDMSG((hwnd), LVM_GETTEXTCOLOR, 0, 0L)
142#endif
143
144#ifndef ListView_FindItem
145#define ListView_FindItem(hwnd, iStart, plvfi) \
146 (int)SNDMSG((hwnd), LVM_FINDITEM, (WPARAM)(int)(iStart), (LPARAM)(const LV_FINDINFO FAR*)(plvfi))
147#endif
148
149#if defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 0, 5 )
150#ifndef LV_DISPINFOA
151typedef struct tagNMLVDISPINFOA {
152 NMHDR hdr;
153 LV_ITEMA item;
154} NMLVDISPINFOA, FAR *LPNMLVDISPINFOA;
155#define _LV_DISPINFOA tagNMLVDISPINFOA
156#define LV_DISPINFOA NMLVDISPINFOA
157#endif
158#ifndef LV_DISPINFOW
159typedef struct tagNMLVDISPINFOW {
160 NMHDR hdr;
161 LV_ITEMW item;
162} NMLVDISPINFOW, FAR *LPNMLVDISPINFOW;
163#define _LV_DISPINFOW tagNMLVDISPINFOW
164#define LV_DISPINFOW NMLVDISPINFOW
165#endif
166#endif
167
168#if ((defined(__WATCOMC__) && __WATCOMC__ >= 1200) || defined(__GNUWIN32__) || defined (__MINGW32__) || defined(__DIGITALMARS__) || defined (__BORLANDC__)) && !defined(HDN_GETDISPINFOW)
169#define HDN_GETDISPINFOW (HDN_FIRST-29)
170#if !wxCHECK_W32API_VERSION(2, 2)
171typedef struct {
172 NMHDR hdr;
173 int iItem;
174 UINT mask;
175 LPWSTR pszText;
176 int cchTextMax;
177 int iImage;
178 LPARAM lParam;
179} NMHDDISPINFOW, *LPNMHDDISPINFOW;
180#endif
181#endif
182
183#ifndef LVM_SETUNICODEFORMAT
184#define LVM_SETUNICODEFORMAT 0x2005
185#endif
186
187// ----------------------------------------------------------------------------
188// Toolbar define value missing
189// ----------------------------------------------------------------------------
190#if !defined(CCS_VERT)
191#define CCS_VERT 0x00000080L
192#endif
193
194// ----------------------------------------------------------------------------
195// MS HTML Help
196// ----------------------------------------------------------------------------
197
198// instead of including htmlhelp.h, duplicate the things from it we need here:
199
200enum
201{
202 HH_DISPLAY_TOPIC,
203 HH_DISPLAY_TOC,
204 HH_DISPLAY_INDEX,
205 HH_DISPLAY_SEARCH,
206 HH_SET_WIN_TYPE,
207 HH_GET_WIN_TYPE,
208 HH_GET_WIN_HANDLE,
209 HH_ENUM_INFO_TYPE,
210 HH_SET_INFO_TYPE,
211 HH_SYNC,
212 HH_RESERVED1,
213 HH_RESERVED2,
214 HH_RESERVED3,
215 HH_KEYWORD_LOOKUP,
216 HH_DISPLAY_TEXT_POPUP,
217 HH_HELP_CONTEXT,
218 HH_TP_HELP_CONTEXTMENU,
219 HH_TP_HELP_WM_HELP,
220 HH_CLOSE_ALL,
221 HH_ALINK_LOOKUP,
222 HH_GET_LAST_ERROR,
223 HH_ENUM_CATEGORY,
224 HH_ENUM_CATEGORY_IT,
225 HH_RESET_IT_FILTER,
226 HH_SET_INCLUSIVE_FILTER,
227 HH_SET_EXCLUSIVE_FILTER
228};
229
230struct HH_POPUP
231{
232 int cbStruct;
233 HINSTANCE hinst;
234 UINT idString;
235 LPCTSTR pszText;
236 POINT pt;
237 COLORREF clrForeground;
238 COLORREF clrBackground;
239 RECT rcMargins;
240 LPCTSTR pszFont;
241};
242
243struct HH_AKLINK
244{
245 int cbStruct;
246 BOOL fReserved;
247 LPCTSTR pszKeywords;
248 LPCTSTR pszUrl;
249 LPCTSTR pszMsgText;
250 LPCTSTR pszMsgTitle;
251 LPCTSTR pszWindow;
252 BOOL fIndexOnFail;
253};
254
255// ----------------------------------------------------------------------------
256// SHGetFileInfo-related things
257// ----------------------------------------------------------------------------
258
259#ifndef SHGetFileInfo
260 #ifdef UNICODE
261 #define SHGetFileInfo SHGetFileInfoW
262 #else
263 #define SHGetFileInfo SHGetFileInfoA
264 #endif
265#endif
266
267#ifndef SHGFI_ATTRIBUTES
268 #define SHGFI_ATTRIBUTES 2048
269#endif
270
271#ifndef SFGAO_READONLY
272 #define SFGAO_READONLY 0x00040000L
273#endif
274
275#ifndef SFGAO_REMOVABLE
276 #define SFGAO_REMOVABLE 0x02000000L
277#endif
278
279#ifndef SHGFI_DISPLAYNAME
280 #define SHGFI_DISPLAYNAME 512
281#endif
282
283#ifndef SHGFI_ICON
284 #define SHGFI_ICON 256
285#endif
286
287#ifndef SHGFI_SMALLICON
288 #define SHGFI_SMALLICON 1
289#endif
290
291#ifndef SHGFI_SHELLICONSIZE
292 #define SHGFI_SHELLICONSIZE 4
293#endif
294
295#ifndef SHGFI_OPENICON
296 #define SHGFI_OPENICON 2
297#endif
298
299// ----------------------------------------------------------------------------
300// Rich text control
301// ----------------------------------------------------------------------------
302
303#if wxUSE_RICHEDIT && defined(MAX_TAB_STOPS)
304
305// old mingw32 doesn't define this
306#ifndef CFM_CHARSET
307 #define CFM_CHARSET 0x08000000
308#endif // CFM_CHARSET
309
310#ifndef CFM_BACKCOLOR
311 #define CFM_BACKCOLOR 0x04000000
312#endif
313
314// cygwin does not have these defined for richedit
315#ifndef ENM_LINK
316 #define ENM_LINK 0x04000000
317#endif
318
319#ifndef EM_AUTOURLDETECT
320 #define EM_AUTOURLDETECT (WM_USER + 91)
321#endif
322
323#ifndef EN_LINK
324 #define EN_LINK 0x070b
325
326 typedef struct _enlink
327 {
328 NMHDR nmhdr;
329 UINT msg;
330 WPARAM wParam;
331 LPARAM lParam;
332 CHARRANGE chrg;
333 } ENLINK;
334#endif // ENLINK
335
336#ifndef SF_UNICODE
337 #define SF_UNICODE 0x0010
338#endif
339
340// Watcom C++ doesn't define this
341#ifndef SCF_ALL
342 #define SCF_ALL 0x0004
343#endif
344
345#ifndef PFA_JUSTIFY
346#define PFA_JUSTIFY 4
347
348typedef struct _paraformat2 {
349 UINT cbSize;
350 DWORD dwMask;
351 WORD wNumbering;
352 WORD wEffects;
353 LONG dxStartIndent;
354 LONG dxRightIndent;
355 LONG dxOffset;
356 WORD wAlignment;
357 SHORT cTabCount;
358 LONG rgxTabs[MAX_TAB_STOPS];
359 LONG dySpaceBefore;
360 LONG dySpaceAfter;
361 LONG dyLineSpacing;
362 SHORT sStype;
363 BYTE bLineSpacingRule;
364 BYTE bOutlineLevel;
365 WORD wShadingWeight;
366 WORD wShadingStyle;
367 WORD wNumberingStart;
368 WORD wNumberingStyle;
369 WORD wNumberingTab;
370 WORD wBorderSpace;
371 WORD wBorderWidth;
372 WORD wBorders;
373} PARAFORMAT2;
374#define wxEffects wReserved
375
376#endif
377
378#endif // wxUSE_RICHEDIT
379
380// ----------------------------------------------------------------------------
381// ToolBar
382// ----------------------------------------------------------------------------
383
384#if wxUSE_TOOLBAR
385
386#if !defined(TBIF_SIZE)
387
388#define TBIF_SIZE 64
389#define TB_SETBUTTONINFO (WM_USER+66)
390
391typedef struct {
392 UINT cbSize;
393 DWORD dwMask;
394 int idCommand;
395 int iImage;
396 BYTE fsState;
397 BYTE fsStyle;
398 WORD cx;
399 DWORD lParam;
400 LPTSTR pszText;
401 int cchText;
402} TBBUTTONINFO, *LPTBBUTTONINFO;
403
404#endif // !defined(TBIF_SIZE)
405
406#endif // wxUSE_TOOLBAR
407
408// ----------------------------------------------------------------------------
409// Tree control
410// ----------------------------------------------------------------------------
411
412#ifndef TVIS_FOCUSED
413 #define TVIS_FOCUSED 0x0001
414#endif
415
416#ifndef TV_FIRST
417 #define TV_FIRST 0x1100
418#endif
419
420#ifndef TVS_CHECKBOXES
421 #define TVS_CHECKBOXES 0x0100
422#endif
423
424#ifndef TVS_FULLROWSELECT
425 #define TVS_FULLROWSELECT 0x1000
426#endif
427
428#ifndef TVM_SETBKCOLOR
429 #define TVM_SETBKCOLOR (TV_FIRST + 29)
430 #define TVM_SETTEXTCOLOR (TV_FIRST + 30)
431#endif
432
433#ifndef TVS_INFOTIP
434 #define TVS_INFOTIP 2048
435#endif
436
437#ifndef TVN_GETINFOTIPA
438 #define TVN_GETINFOTIPA (TVN_FIRST-13)
439 #define TVN_GETINFOTIPW (TVN_FIRST-14)
440#endif
441
442#ifndef TVN_GETINFOTIP
443 #ifdef UNICODE
444 #define TVN_GETINFOTIP TVN_GETINFOTIPW
445 #else
446 #define TVN_GETINFOTIP TVN_GETINFOTIPA
447 #endif
448#endif
449
450#if !defined(NMTVGETINFOTIP) && defined(TVN_FIRST)
451 // NB: Check for TVN_FIRST is done so that this code is not included if
452 // <commctrl.h> (which defined HTREEITEM) wasn't included before.
453 struct NMTVGETINFOTIPA
454 {
455 NMHDR hdr;
456 LPSTR pszText;
457 int cchTextMax;
458 HTREEITEM hItem;
459 LPARAM lParam;
460 };
461 struct NMTVGETINFOTIPW
462 {
463 NMHDR hdr;
464 LPWSTR pszText;
465 int cchTextMax;
466 HTREEITEM hItem;
467 LPARAM lParam;
468 };
469 #ifdef UNICODE
470 #define NMTVGETINFOTIP NMTVGETINFOTIPW
471 #else
472 #define NMTVGETINFOTIP NMTVGETINFOTIPA
473 #endif
474#endif
475
476// ----------------------------------------------------------------------------
477// Misc stuff
478// ----------------------------------------------------------------------------
479
480#ifndef QS_ALLPOSTMESSAGE
481 #define QS_ALLPOSTMESSAGE 0x0100
482#endif
483
484#ifndef WS_EX_CLIENTEDGE
485 #define WS_EX_CLIENTEDGE 0x00000200L
486#endif
487
488#ifndef ENDSESSION_LOGOFF
489 #define ENDSESSION_LOGOFF 0x80000000
490#endif
491
492#ifndef HANGUL_CHARSET
493 #define HANGUL_CHARSET 129
494#endif
495
496#ifndef TME_HOVER
497 #define TME_HOVER 1
498#endif
499
500#ifndef TME_LEAVE
501 #define TME_LEAVE 2
502#endif
503
504#ifndef TME_QUERY
505 #define TME_QUERY 0x40000000
506#endif
507
508#ifndef TME_CANCEL
509 #define TME_CANCEL 0x80000000
510#endif
511
512#ifndef HOVER_DEFAULT
513 #define HOVER_DEFAULT 0xFFFFFFFF
514#endif
515
516#ifdef __DMC__
517
518 typedef struct tagTRACKMOUSEEVENT {
519 DWORD cbSize;
520 DWORD dwFlags;
521 HWND hwndTrack;
522 DWORD dwHoverTime;
523 } TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
524
525 WINCOMMCTRLAPI BOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
526
527#endif
528
529// This didn't appear in mingw until 2.95.2
530#ifndef SIF_TRACKPOS
531#define SIF_TRACKPOS 16
532#endif
533
534#if wxUSE_MOUSEWHEEL
535 #ifndef WM_MOUSEWHEEL
536 #define WM_MOUSEWHEEL 0x020A
537 #endif
538 #ifndef WHEEL_DELTA
539 #define WHEEL_DELTA 120
540 #endif
541 #ifndef SPI_GETWHEELSCROLLLINES
542 #define SPI_GETWHEELSCROLLLINES 104
543 #endif
544#endif // wxUSE_MOUSEWHEEL
545
546#ifndef VK_OEM_1
547 #define VK_OEM_1 0xBA
548 #define VK_OEM_2 0xBF
549 #define VK_OEM_3 0xC0
550 #define VK_OEM_4 0xDB
551 #define VK_OEM_5 0xDC
552 #define VK_OEM_6 0xDD
553 #define VK_OEM_7 0xDE
554#endif
555
556#ifndef VK_OEM_COMMA
557 #define VK_OEM_PLUS 0xBB
558 #define VK_OEM_COMMA 0xBC
559 #define VK_OEM_MINUS 0xBD
560 #define VK_OEM_PERIOD 0xBE
561#endif
562
563#ifndef WM_UPDATEUISTATE
564 #define WM_UPDATEUISTATE 0x128
565#endif
566
567#ifndef UIS_INITIALIZE
568 #define UIS_INITIALIZE 3
569#endif
570
571#ifndef UISF_HIDEFOCUS
572 #define UISF_HIDEFOCUS 1
573#endif
574
575#ifndef UISF_HIDEACCEL
576 #define UISF_HIDEACCEL 2
577#endif
578
579#ifndef WC_NO_BEST_FIT_CHARS
580 #define WC_NO_BEST_FIT_CHARS 0x400
581#endif
582
583// Not in WinCE
584#ifndef HGDI_ERROR
585#define HGDI_ERROR ((HANDLE)(0xFFFFFFFFL))
586#endif
587
588#endif
589 // _WX_MISSING_H_