File: private.h

package info (click to toggle)
wxwidgets3.0 3.0.5.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 120,464 kB
  • sloc: cpp: 896,633; makefile: 52,303; ansic: 21,971; sh: 5,713; python: 2,940; xml: 1,534; perl: 264; javascript: 33
file content (423 lines) | stat: -rw-r--r-- 15,879 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
/////////////////////////////////////////////////////////////////////////////
// Name:        wx/os2/private.h
// Purpose:     Private declarations: as this header is only included by
//              wxWidgets itself, it may contain identifiers which don't start
//              with "wx".
// Author:      Julian Smart
// Modified by:
// Created:     01/02/97
// Copyright:   (c) Julian Smart
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

#ifndef _WX_OS2_PRIVATE_H_
#define _WX_OS2_PRIVATE_H_

#define INCL_BASE
#define INCL_PM
#define INCL_GPI
#define INCL_WINSYS
#define INCL_GPIERRORS
#define INCL_DOS
#define INCL_DOSPROCESS
#define INCL_DOSERRORS
#define INCL_WIN
#define INCL_WINATOM
#define INCL_SHLERRORS

#include <os2.h>

#if wxONLY_WATCOM_EARLIER_THAN(1,4)
    inline HATOMTBL APIENTRY WinQuerySystemAtomTable(VOID){return NULL;}
    inline ULONG APIENTRY WinQueryAtomName(HATOMTBL,ATOM,PCSZ,ULONG){return 0;}
    inline LONG APIENTRY GpiPointArc(HPS,PPOINTL){return GPI_ERROR;}
    inline BOOL APIENTRY WinDrawPointer(HPS,LONG,LONG,HPOINTER,ULONG){return FALSE;}
    inline HPOINTER APIENTRY WinCreatePointerIndirect(HWND,PPOINTERINFO){return NULLHANDLE;}
    inline BOOL APIENTRY WinGetMaxPosition(HWND,PSWP){return FALSE;}
    inline BOOL APIENTRY WinGetMinPosition(HWND,PSWP,PPOINTL){return FALSE;}
#endif

#if defined(__WATCOMC__) && defined(__WXMOTIF__)
    #include <os2def.h>
    #define I_NEED_OS2_H
    #include <X11/Xmd.h>

    // include this header from here for many of the GUI related code
    #if wxUSE_GUI
        extern "C" {
            #include <Xm/VendorSP.h>
        }
    #endif

    // provide Unix-like pipe()
    #include <types.h>
    #include <tcpustd.h>
    #include <sys/time.h>
    // Use ::DosCreatePipe or ::DosCreateNPipe under OS/2
    // for more see http://posix2.sourceforge.net/guide.html
    inline int pipe( int WXUNUSED(filedes)[2] )
    {
        wxFAIL_MSG(wxT("Implement first"));
        return -1;
    }
#endif

#if defined (__EMX__) && !defined(USE_OS2_TOOLKIT_HEADERS) && !defined(HAVE_SPBCDATA)

    typedef struct _SPBCDATA {
        ULONG     cbSize;       /*  Size of control block. */
        ULONG     ulTextLimit;  /*  Entryfield text limit. */
        LONG      lLowerLimit;  /*  Spin lower limit (numeric only). */
        LONG      lUpperLimit;  /*  Spin upper limit (numeric only). */
        ULONG     idMasterSpb;  /*  ID of the servant's master spinbutton. */
        PVOID     pHWXCtlData;  /*  Handwriting control data structure flag. */
    } SPBCDATA;

    typedef SPBCDATA *PSPBCDATA;

#endif

#include "wx/dlimpexp.h"
#include "wx/fontenc.h"

class WXDLLIMPEXP_FWD_CORE wxFont;
class WXDLLIMPEXP_FWD_CORE wxWindow;
class WXDLLIMPEXP_FWD_BASE wxString;
class WXDLLIMPEXP_FWD_CORE wxBitmap;

// ---------------------------------------------------------------------------
// private constants
// ---------------------------------------------------------------------------

//
// Constant strings for control names and classes
//

//
// Controls
//
WXDLLIMPEXP_DATA_CORE(extern const char)   wxButtonNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxCheckBoxNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxChoiceNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxComboBoxNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxDialogNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxFrameNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxGaugeNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxStaticBoxNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxListBoxNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxStaticLineNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxStaticTextNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxStaticBitmapNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxPanelNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxRadioBoxNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxRadioButtonNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxBitmapRadioButtonNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxScrollBarNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxSliderNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxTextCtrlNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxToolBarNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxStatusLineNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxGetTextFromUserPromptStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxMessageBoxCaptionStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxFileSelectorPromptStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxFileSelectorDefaultWildcardStr[];
WXDLLIMPEXP_DATA_CORE(extern const wxChar*) wxInternalErrorStr;
WXDLLIMPEXP_DATA_CORE(extern const wxChar*) wxFatalErrorStr;
WXDLLIMPEXP_DATA_CORE(extern const char)   wxTreeCtrlNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxDirDialogNameStr[];
WXDLLIMPEXP_DATA_CORE(extern const char)   wxDirDialogDefaultFolderStr[];

//
// Class names
//
WXDLLIMPEXP_DATA_CORE(extern const wxChar*)  wxFrameClassName;
WXDLLIMPEXP_DATA_CORE(extern const wxChar*)  wxFrameClassNameNoRedraw;
WXDLLIMPEXP_DATA_CORE(extern const wxChar*)  wxMDIFrameClassName;
WXDLLIMPEXP_DATA_CORE(extern const wxChar*)  wxMDIFrameClassNameNoRedraw;
WXDLLIMPEXP_DATA_CORE(extern const wxChar*)  wxMDIChildFrameClassName;
WXDLLIMPEXP_DATA_CORE(extern const wxChar*)  wxMDIChildFrameClassNameNoRedraw;
WXDLLIMPEXP_DATA_CORE(extern const wxChar*)  wxPanelClassName;
WXDLLIMPEXP_DATA_CORE(extern const wxChar*)  wxPanelClassNameNR;
WXDLLIMPEXP_DATA_CORE(extern const wxChar*)  wxCanvasClassName;
WXDLLIMPEXP_DATA_CORE(extern const wxChar*)  wxCanvasClassNameNR;

// ---------------------------------------------------------------------------
// standard icons from the resources
// ---------------------------------------------------------------------------

#ifdef __WXPM__

WXDLLIMPEXP_DATA_CORE(extern HICON) wxSTD_FRAME_ICON;
WXDLLIMPEXP_DATA_CORE(extern HICON) wxSTD_MDIPARENTFRAME_ICON;
WXDLLIMPEXP_DATA_CORE(extern HICON) wxSTD_MDICHILDFRAME_ICON;
WXDLLIMPEXP_DATA_CORE(extern HICON) wxDEFAULT_FRAME_ICON;
WXDLLIMPEXP_DATA_CORE(extern HICON) wxDEFAULT_MDIPARENTFRAME_ICON;
WXDLLIMPEXP_DATA_CORE(extern HICON) wxDEFAULT_MDICHILDFRAME_ICON;
WXDLLIMPEXP_DATA_CORE(extern HFONT) wxSTATUS_LINE_FONT;

#endif

// ---------------------------------------------------------------------------
// this defines a CASTWNDPROC macro which casts a pointer to the type of a
// window proc for PM.
// MPARAM is a void * but is really a 32-bit value
// ---------------------------------------------------------------------------

typedef MRESULT (APIENTRY * WndProcCast) (HWND, ULONG, MPARAM, MPARAM);
#define CASTWNDPROC (WndProcCast)

/*
 * Decide what window classes we're going to use
 * for this combination of CTl3D/FAFA settings
 */

#define STATIC_CLASS     wxT("STATIC")
#define STATIC_FLAGS     (SS_TEXT|DT_LEFT|SS_LEFT|WS_VISIBLE)
#define CHECK_CLASS      wxT("BUTTON")
#define CHECK_FLAGS      (BS_AUTOCHECKBOX|WS_TABSTOP)
#define CHECK_IS_FAFA    FALSE
#define RADIO_CLASS      wxT("BUTTON" )
#define RADIO_FLAGS      (BS_AUTORADIOBUTTON|WS_VISIBLE)
#define RADIO_SIZE       20
#define RADIO_IS_FAFA    FALSE
#define PURE_WINDOWS
/*  PM has no group box button style
#define GROUP_CLASS      "BUTTON"
#define GROUP_FLAGS      (BS_GROUPBOX|WS_CHILD|WS_VISIBLE)
*/

/*
#define BITCHECK_FLAGS   (FB_BITMAP|FC_BUTTONDRAW|FC_DEFAULT|WS_VISIBLE)
#define BITRADIO_FLAGS   (FC_BUTTONDRAW|FB_BITMAP|FC_RADIO|WS_CHILD|WS_VISIBLE)
*/

// ---------------------------------------------------------------------------
// misc macros
// ---------------------------------------------------------------------------

#define MEANING_CHARACTER '0'
#define DEFAULT_ITEM_WIDTH  200
#define DEFAULT_ITEM_HEIGHT 80

// Scale font to get edit control height
#define EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)    (3*(cy)/2)

#ifdef __WXPM__

// Generic subclass proc, for panel item moving/sizing and intercept
// EDIT control VK_RETURN messages
extern LONG APIENTRY wxSubclassedGenericControlProc(WXHWND hWnd, WXDWORD message, WXWPARAM wParam, WXLPARAM lParam);

#endif

// ---------------------------------------------------------------------------
// constants which might miss from some compilers' headers
// ---------------------------------------------------------------------------

#if !defined(WS_EX_CLIENTEDGE)
    #define WS_EX_CLIENTEDGE 0x00000200L
#endif

#ifndef ENDSESSION_LOGOFF
    #define ENDSESSION_LOGOFF    0x80000000
#endif

#ifndef PMERR_INVALID_PARM
    #define PMERR_INVALID_PARM 0x1303
#endif

#ifndef PMERR_INVALID_PARAMETERS
    #define PMERR_INVALID_PARAMETERS 0x1208
#endif

#ifndef BOOKERR_INVALID_PARAMETERS
    #define BOOKERR_INVALID_PARAMETERS -1
#endif

#ifndef DLGC_ENTRYFIELD
    #define DLGC_ENTRYFIELD  0x0001
#endif

#ifndef DLGC_BUTTON
    #define DLGC_BUTTON      0x0002
#endif

#ifndef DLGC_MLE
    #define DLGC_MLE         0x0400
#endif

#ifndef DP_NORMAL
    #define DP_NORMAL 0
#endif

// ---------------------------------------------------------------------------
// debug messages -- OS/2 has no native debug output system
// ---------------------------------------------------------------------------

// ---------------------------------------------------------------------------
// macros to make casting between WXFOO and FOO a bit easier: the GetFoo()
// returns Foo cast to the Windows type for oruselves, while GetFooOf() takes
// an argument which should be a pointer or reference to the object of the
// corresponding class (this depends on the macro)
// ---------------------------------------------------------------------------

#define GetHwnd()               ((HWND)GetHWND())
#define GetHwndOf(win)          ((HWND)((win)->GetHWND()))
// old name
#define GetWinHwnd              GetHwndOf

#define GetHdc()                ((HDC)GetHDC())
#define GetHdcOf(dc)            ((HDC)(dc).GetHDC())

#define GetHbitmap()            ((HBITMAP)GetHBITMAP())
#define GetHbitmapOf(bmp)       ((HBITMAP)(bmp).GetHBITMAP())

#define GetHicon()              ((HICON)GetHICON())
#define GetHiconOf(icon)        ((HICON)(icon).GetHICON())

#define GetHaccel()             ((HACCEL)GetHACCEL())
#define GetHaccelOf(table)      ((HACCEL)((table).GetHACCEL()))

#define GetHmenu()              ((HMENU)GetHMenu())
#define GetHmenuOf(menu)        ((HMENU)menu->GetHMenu())

#define GetHcursor()            ((HCURSOR)GetHCURSOR())
#define GetHcursorOf(cursor)    ((HCURSOR)(cursor).GetHCURSOR())

#define GetHfont()              ((HFONT)GetHFONT())
#define GetHfontOf(font)        ((HFONT)(font).GetHFONT())

// OS/2 convention of the mask is opposed to the wxWidgets one, so we need
// to invert the mask each time we pass one/get one to/from Windows
extern HBITMAP wxInvertMask(HBITMAP hbmpMask, int w = 0, int h = 0);
extern HBITMAP wxCopyBmp(HBITMAP hbmp, bool flip=false, int w=0, int h=0);

// ---------------------------------------------------------------------------
// global data
// ---------------------------------------------------------------------------

#ifdef __WXPM__
// The MakeProcInstance version of the function wxSubclassedGenericControlProc
WXDLLIMPEXP_DATA_CORE(extern int) wxGenericControlSubClassProc;
WXDLLIMPEXP_DATA_CORE(extern wxChar*) wxBuffer;
WXDLLIMPEXP_DATA_CORE(extern HINSTANCE) wxhInstance;
#endif

// ---------------------------------------------------------------------------
// global functions
// ---------------------------------------------------------------------------

#ifdef __WXPM__
extern "C"
{
WXDLLIMPEXP_CORE HINSTANCE wxGetInstance();
}

WXDLLIMPEXP_CORE void wxSetInstance(HINSTANCE hInst);
#endif

#include "wx/thread.h"
static inline MRESULT MySendMsg(HWND hwnd, ULONG ulMsgid,
                                MPARAM mpParam1, MPARAM mpParam2)
{
    MRESULT vRes;
    vRes = ::WinSendMsg(hwnd, ulMsgid, mpParam1, mpParam2);
#if wxUSE_THREADS
    if (!wxThread::IsMain())
        ::WinPostMsg(hwnd, ulMsgid, mpParam1, mpParam2);
#endif
    return vRes;
}
#define WinSendMsg MySendMsg

#ifdef __WXPM__

WXDLLIMPEXP_CORE void wxDrawBorder( HPS     hPS
                              ,RECTL&  rRect
                              ,WXDWORD dwStyle
                             );

WXDLLIMPEXP_CORE wxWindow* wxFindWinFromHandle(WXHWND hWnd);

WXDLLIMPEXP_CORE void   wxGetCharSize(WXHWND wnd, int *x, int *y,wxFont *the_font);

WXDLLIMPEXP_CORE void   wxConvertVectorFontSize( FIXED   fxPointSize
                                           ,PFATTRS pFattrs
                                          );
WXDLLIMPEXP_CORE void   wxFillLogFont( LOGFONT*      pLogFont
                                 ,PFACENAMEDESC pFaceName
                                 ,HPS*          phPS
                                 ,bool*         pbInternalPS
                                 ,long*         pflId
                                 ,wxString&     sFaceName
                                 ,wxFont*       pFont
                                );
WXDLLIMPEXP_CORE wxFontEncoding wxGetFontEncFromCharSet(int nCharSet);
WXDLLIMPEXP_CORE void   wxOS2SelectMatchingFontByName( PFATTRS       vFattrs
                                                 ,PFACENAMEDESC pFaceName
                                                 ,PFONTMETRICS  pFM
                                                 ,int           nNumFonts
                                                 ,const wxFont* pFont
                                                );
WXDLLIMPEXP_CORE wxFont wxCreateFontFromLogFont( LOGFONT*      pLogFont
                                           ,PFONTMETRICS  pFM
                                           ,PFACENAMEDESC pFace
                                          );
WXDLLIMPEXP_CORE int    wxGpiStrcmp(wxChar* s0, wxChar* s1);

WXDLLIMPEXP_CORE void wxSliderEvent(WXHWND control, WXWORD wParam, WXWORD pos);
WXDLLIMPEXP_CORE void wxScrollBarEvent(WXHWND hbar, WXWORD wParam, WXWORD pos);

// Find maximum size of window/rectangle
WXDLLIMPEXP_CORE extern void wxFindMaxSize(WXHWND hwnd, RECT *rect);

WXDLLIMPEXP_CORE wxWindow* wxFindControlFromHandle(WXHWND hWnd);
WXDLLIMPEXP_CORE void wxAddControlHandle(WXHWND hWnd, wxWindow *item);

// Safely get the window text (i.e. without using fixed size buffer)
WXDLLIMPEXP_CORE extern wxString wxGetWindowText(WXHWND hWnd);

// get the window class name
WXDLLIMPEXP_CORE extern wxString wxGetWindowClass(WXHWND hWnd);

// get the window id (should be unsigned, hence this is not wxWindowID which
// is, for mainly historical reasons, signed)
WXDLLIMPEXP_CORE extern WXWORD wxGetWindowId(WXHWND hWnd);

// Convert a PM Error code to a string
WXDLLIMPEXP_BASE extern wxString wxPMErrorToStr(ERRORID vError);

// Does this window style specify any border?
inline bool wxStyleHasBorder(long style)
{
  return (style & (wxSIMPLE_BORDER | wxRAISED_BORDER |
                   wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0;
}

inline RECTL wxGetWindowRect(HWND hWnd)
{
    RECTL                           vRect;

    ::WinQueryWindowRect(hWnd, &vRect);
    return vRect;
} // end of wxGetWindowRect

WXDLLIMPEXP_CORE extern void wxOS2SetFont( HWND          hWnd
                                     ,const wxFont& rFont
                                    );


WXDLLIMPEXP_CORE extern bool wxCheckWindowWndProc( WXHWND    hWnd
                                             ,WXFARPROC fnWndProc
                                            );
WXDLLIMPEXP_CORE extern wxBitmap wxDisableBitmap( const wxBitmap& rBmp
                                            ,long            lColor
                                           );
#if wxUSE_GUI
class wxColour;
WXDLLIMPEXP_CORE extern COLORREF wxColourToRGB(const wxColour& rColor);
#endif

#endif // __WXPM__

#endif // _WX_OS2_PRIVATE_H_