]> git.saurik.com Git - wxWidgets.git/blame - include/wx/os2/private.h
wxOS2 with Open Watcom: correct PCH usage, missing headers, warning fixes, source...
[wxWidgets.git] / include / wx / os2 / private.h
CommitLineData
0e320a79
DW
1/////////////////////////////////////////////////////////////////////////////
2// Name: private.h
45fcbf3b 3// Purpose: Private declarations: as this header is only included by
77ffb593 4// wxWidgets itself, it may contain identifiers which don't start
45fcbf3b
DW
5// with "wx".
6// Author: Julian Smart
0e320a79 7// Modified by:
45fcbf3b 8// Created: 01/02/97
0e320a79 9// RCS-ID: $Id$
45fcbf3b 10// Copyright: (c) Julian Smart
65571936 11// Licence: wxWindows licence
0e320a79
DW
12/////////////////////////////////////////////////////////////////////////////
13
93599ac0
SN
14#ifndef _WX_OS2_PRIVATE_H_
15#define _WX_OS2_PRIVATE_H_
0e320a79 16
b86737ee 17#define INCL_BASE
45fcbf3b 18#define INCL_PM
20947e08 19#define INCL_GPI
61243a51 20#define INCL_WINSYS
f6bcfd97 21#define INCL_SHLERRORS
45fcbf3b 22#include <os2.h>
93599ac0 23#if defined (__EMX__) && !defined(USE_OS2_TOOLKIT_HEADERS) && !defined(HAVE_SPBCDATA)
74707ecf
SN
24 typedef struct _SPBCDATA {
25 ULONG cbSize; /* Size of control block. */
26 ULONG ulTextLimit; /* Entryfield text limit. */
27 LONG lLowerLimit; /* Spin lower limit (numeric only). */
28 LONG lUpperLimit; /* Spin upper limit (numeric only). */
29 ULONG idMasterSpb; /* ID of the servant's master spinbutton. */
30 PVOID pHWXCtlData; /* Handwriting control data structure flag. */
31 } SPBCDATA;
f140b352 32
74707ecf
SN
33 typedef SPBCDATA *PSPBCDATA;
34#endif
0e320a79 35
f5b5c15c
DW
36#include "wx/fontenc.h"
37
45fcbf3b
DW
38class WXDLLEXPORT wxFont;
39class WXDLLEXPORT wxWindow;
74707ecf 40class WXDLLEXPORT wxString;
db16e5c3 41class WXDLLEXPORT wxBitmap;
45fcbf3b
DW
42
43// ---------------------------------------------------------------------------
44// private constants
45// ---------------------------------------------------------------------------
46
511ac294
DW
47//
48// Constant strings for control names and classes
49//
50
51//
52// Controls
53//
54WXDLLEXPORT_DATA(extern const wxChar*) wxButtonNameStr;
55WXDLLEXPORT_DATA(extern const wxChar*) wxCanvasNameStr;
56WXDLLEXPORT_DATA(extern const wxChar*) wxCheckBoxNameStr;
57WXDLLEXPORT_DATA(extern const wxChar*) wxChoiceNameStr;
58WXDLLEXPORT_DATA(extern const wxChar*) wxComboBoxNameStr;
59WXDLLEXPORT_DATA(extern const wxChar*) wxDialogNameStr;
60WXDLLEXPORT_DATA(extern const wxChar*) wxFrameNameStr;
61WXDLLEXPORT_DATA(extern const wxChar*) wxGaugeNameStr;
62WXDLLEXPORT_DATA(extern const wxChar*) wxStaticBoxNameStr;
63WXDLLEXPORT_DATA(extern const wxChar*) wxListBoxNameStr;
64WXDLLEXPORT_DATA(extern const wxChar*) wxStaticTextNameStr;
65WXDLLEXPORT_DATA(extern const wxChar*) wxStaticBitmapNameStr;
66WXDLLEXPORT_DATA(extern const wxChar*) wxMultiTextNameStr;
67WXDLLEXPORT_DATA(extern const wxChar*) wxPanelNameStr;
68WXDLLEXPORT_DATA(extern const wxChar*) wxRadioBoxNameStr;
69WXDLLEXPORT_DATA(extern const wxChar*) wxRadioButtonNameStr;
70WXDLLEXPORT_DATA(extern const wxChar*) wxBitmapRadioButtonNameStr;
71WXDLLEXPORT_DATA(extern const wxChar*) wxScrollBarNameStr;
72WXDLLEXPORT_DATA(extern const wxChar*) wxSliderNameStr;
73WXDLLEXPORT_DATA(extern const wxChar*) wxStaticNameStr;
74WXDLLEXPORT_DATA(extern const wxChar*) wxTextCtrlWindowNameStr;
75WXDLLEXPORT_DATA(extern const wxChar*) wxTextCtrlNameStr;
76WXDLLEXPORT_DATA(extern const wxChar*) wxVirtListBoxNameStr;
77WXDLLEXPORT_DATA(extern const wxChar*) wxButtonBarNameStr;
78WXDLLEXPORT_DATA(extern const wxChar*) wxEnhDialogNameStr;
79WXDLLEXPORT_DATA(extern const wxChar*) wxToolBarNameStr;
80WXDLLEXPORT_DATA(extern const wxChar*) wxStatusLineNameStr;
81WXDLLEXPORT_DATA(extern const wxChar*) wxGetTextFromUserPromptStr;
82WXDLLEXPORT_DATA(extern const wxChar*) wxMessageBoxCaptionStr;
83WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorPromptStr;
84WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorDefaultWildcardStr;
85WXDLLEXPORT_DATA(extern const wxChar*) wxInternalErrorStr;
86WXDLLEXPORT_DATA(extern const wxChar*) wxFatalErrorStr;
87WXDLLEXPORT_DATA(extern const wxChar*) wxTreeCtrlNameStr;
88WXDLLEXPORT_DATA(extern const wxChar*) wxDirDialogNameStr;
89WXDLLEXPORT_DATA(extern const wxChar*) wxDirDialogDefaultFolderStr;
90
91//
92// Class names
93//
94WXDLLEXPORT_DATA(extern const wxChar*) wxFrameClassName;
95WXDLLEXPORT_DATA(extern const wxChar*) wxFrameClassNameNoRedraw;
96WXDLLEXPORT_DATA(extern const wxChar*) wxMDIFrameClassName;
97WXDLLEXPORT_DATA(extern const wxChar*) wxMDIFrameClassNameNoRedraw;
98WXDLLEXPORT_DATA(extern const wxChar*) wxMDIChildFrameClassName;
99WXDLLEXPORT_DATA(extern const wxChar*) wxMDIChildFrameClassNameNoRedraw;
100WXDLLEXPORT_DATA(extern const wxChar*) wxPanelClassName;
101WXDLLEXPORT_DATA(extern const wxChar*) wxPanelClassNameNR;
102WXDLLEXPORT_DATA(extern const wxChar*) wxCanvasClassName;
103WXDLLEXPORT_DATA(extern const wxChar*) wxCanvasClassNameNR;
104
45fcbf3b
DW
105// ---------------------------------------------------------------------------
106// standard icons from the resources
107// ---------------------------------------------------------------------------
108
22e0b22b 109#ifdef __WXPM__
bd3b171d 110
45fcbf3b
DW
111WXDLLEXPORT_DATA(extern HICON) wxSTD_FRAME_ICON;
112WXDLLEXPORT_DATA(extern HICON) wxSTD_MDIPARENTFRAME_ICON;
113WXDLLEXPORT_DATA(extern HICON) wxSTD_MDICHILDFRAME_ICON;
114WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_FRAME_ICON;
115WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_MDIPARENTFRAME_ICON;
116WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_MDICHILDFRAME_ICON;
117WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT;
118
22e0b22b 119#endif
bd3b171d 120
45fcbf3b
DW
121// ---------------------------------------------------------------------------
122// this defines a CASTWNDPROC macro which casts a pointer to the type of a
123// window proc for PM.
124// MPARAM is a void * but is really a 32-bit value
125// ---------------------------------------------------------------------------
126
127typedef MRESULT (APIENTRY * WndProcCast) (HWND, ULONG, MPARAM, MPARAM);
128#define CASTWNDPROC (WndProcCast)
129
130#if wxUSE_ITSY_BITSY
131 #define IBS_HORZCAPTION 0x4000L
132 #define IBS_VERTCAPTION 0x8000L
133
86de7616
DW
134 UINT APIENTRY ibGetCaptionSize( HWND hWnd ) ;
135 UINT APIENTRY ibSetCaptionSize( HWND hWnd, UINT nSize ) ;
136 MRESULT APIENTRY ibDefWindowProc( HWND hWnd, ULONG ulMsg, MPARAM wParam, MPARAM lParam ) ;
137 VOID APIENTRY ibAdjustWindowRect( HWND hWnd, LPRECT lprc ) ;
45fcbf3b
DW
138#endif // wxUSE_ITSY_BITSY
139
140/*
141 * Decide what window classes we're going to use
142 * for this combination of CTl3D/FAFA settings
0e320a79
DW
143 */
144
45fcbf3b
DW
145#define STATIC_CLASS _T("STATIC")
146#define STATIC_FLAGS (SS_TEXT|DT_LEFT|SS_LEFT|WS_VISIBLE)
86de7616 147#define CHECK_CLASS _T("BUTTON")
45fcbf3b
DW
148#define CHECK_FLAGS (BS_AUTOCHECKBOX|WS_TABSTOP)
149#define CHECK_IS_FAFA FALSE
86de7616 150#define RADIO_CLASS _T("BUTTON" )
45fcbf3b
DW
151#define RADIO_FLAGS (BS_AUTORADIOBUTTON|WS_VISIBLE)
152#define RADIO_SIZE 20
153#define RADIO_IS_FAFA FALSE
154#define PURE_WINDOWS
155/* PM has no group box button style
156#define GROUP_CLASS "BUTTON"
157#define GROUP_FLAGS (BS_GROUPBOX|WS_CHILD|WS_VISIBLE)
158*/
159
160/*
161#define BITCHECK_FLAGS (FB_BITMAP|FC_BUTTONDRAW|FC_DEFAULT|WS_VISIBLE)
162#define BITRADIO_FLAGS (FC_BUTTONDRAW|FB_BITMAP|FC_RADIO|WS_CHILD|WS_VISIBLE)
163*/
164
165// ---------------------------------------------------------------------------
166// misc macros
167// ---------------------------------------------------------------------------
168
169#define MEANING_CHARACTER '0'
170#define DEFAULT_ITEM_WIDTH 200
171#define DEFAULT_ITEM_HEIGHT 80
172
173// Scale font to get edit control height
174#define EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy) (3*(cy)/2)
175
22e0b22b 176#ifdef __WXPM__
bd3b171d 177
45fcbf3b
DW
178// Generic subclass proc, for panel item moving/sizing and intercept
179// EDIT control VK_RETURN messages
86de7616 180extern LONG APIENTRY wxSubclassedGenericControlProc(WXHWND hWnd, WXDWORD message, WXWPARAM wParam, WXLPARAM lParam);
45fcbf3b 181
bd3b171d
SN
182#endif
183
45fcbf3b
DW
184// ---------------------------------------------------------------------------
185// constants which might miss from some compilers' headers
186// ---------------------------------------------------------------------------
187
188#if !defined(WS_EX_CLIENTEDGE)
008089f6 189 #define WS_EX_CLIENTEDGE 0x00000200L
45fcbf3b
DW
190#endif
191
192#ifndef ENDSESSION_LOGOFF
193 #define ENDSESSION_LOGOFF 0x80000000
194#endif
195
196// ---------------------------------------------------------------------------
197// debug messages -- OS/2 has no native debug output system
198// ---------------------------------------------------------------------------
199
200// ---------------------------------------------------------------------------
201// macros to make casting between WXFOO and FOO a bit easier: the GetFoo()
202// returns Foo cast to the Windows type for oruselves, while GetFooOf() takes
203// an argument which should be a pointer or reference to the object of the
204// corresponding class (this depends on the macro)
205// ---------------------------------------------------------------------------
206
207#define GetHwnd() ((HWND)GetHWND())
208#define GetHwndOf(win) ((HWND)((win)->GetHWND()))
209// old name
210#define GetWinHwnd GetHwndOf
211
212#define GetHdc() ((HDC)GetHDC())
213#define GetHdcOf(dc) ((HDC)(dc).GetHDC())
214
8bb6da4a
DW
215#define GetHbitmap() ((HBITMAP)GetHBITMAP())
216#define GetHbitmapOf(bmp) ((HBITMAP)(bmp).GetHBITMAP())
217
45fcbf3b
DW
218#define GetHicon() ((HICON)GetHICON())
219#define GetHiconOf(icon) ((HICON)(icon).GetHICON())
220
221#define GetHaccel() ((HACCEL)GetHACCEL())
222#define GetHaccelOf(table) ((HACCEL)((table).GetHACCEL()))
223
224#define GetHmenu() ((HMENU)GetHMenu())
225#define GetHmenuOf(menu) ((HMENU)menu->GetHMenu())
226
8bb6da4a
DW
227#define GetHcursor() ((HCURSOR)GetHCURSOR())
228#define GetHcursorOf(cursor) ((HCURSOR)(cursor).GetHCURSOR())
229
230#define GetHfont() ((HFONT)GetHFONT())
231#define GetHfontOf(font) ((HFONT)(font).GetHFONT())
232
77ffb593 233// OS/2 convention of the mask is opposed to the wxWidgets one, so we need
8bb6da4a
DW
234// to invert the mask each time we pass one/get one to/from Windows
235extern HBITMAP wxInvertMask(HBITMAP hbmpMask, int w = 0, int h = 0);
236
45fcbf3b
DW
237// ---------------------------------------------------------------------------
238// global data
239// ---------------------------------------------------------------------------
240
241// The MakeProcInstance version of the function wxSubclassedGenericControlProc
283ed244 242WXDLLEXPORT_DATA(extern int) wxGenericControlSubClassProc;
45fcbf3b
DW
243WXDLLEXPORT_DATA(extern wxChar*) wxBuffer;
244WXDLLEXPORT_DATA(extern HINSTANCE) wxhInstance;
245
246// ---------------------------------------------------------------------------
247// global functions
248// ---------------------------------------------------------------------------
249
250extern "C"
251{
252WXDLLEXPORT HINSTANCE wxGetInstance();
253}
254
bd3b171d
SN
255WXDLLEXPORT void wxSetInstance(HINSTANCE hInst);
256
d4ca5c8c
SN
257#include "wx/thread.h"
258static inline MRESULT MySendMsg(HWND hwnd, ULONG ulMsgid,
259 MPARAM mpParam1, MPARAM mpParam2)
260{
261 MRESULT vRes;
262 vRes = ::WinSendMsg(hwnd, ulMsgid, mpParam1, mpParam2);
263#if wxUSE_THREADS
264 if (!wxThread::IsMain())
265 ::WinPostMsg(hwnd, ulMsgid, mpParam1, mpParam2);
266#endif
267 return vRes;
268}
269#define WinSendMsg MySendMsg
270
22e0b22b 271#ifdef __WXPM__
bd3b171d 272
008089f6
DW
273WXDLLEXPORT void wxDrawBorder( HPS hPS
274 ,RECTL& rRect
275 ,WXDWORD dwStyle
276 );
277
45fcbf3b
DW
278WXDLLEXPORT wxWindow* wxFindWinFromHandle(WXHWND hWnd);
279
e99762c0 280WXDLLEXPORT void wxGetCharSize(WXHWND wnd, int *x, int *y,wxFont *the_font);
1b75810c
DW
281
282WXDLLEXPORT void wxConvertVectorFontSize( FIXED fxPointSize
283 ,PFATTRS pFattrs
284 );
e99762c0
DW
285WXDLLEXPORT void wxFillLogFont( LOGFONT* pLogFont
286 ,PFACENAMEDESC pFaceName
f140b352 287 ,HPS* phPS
7d921159 288 ,bool* pbInternalPS
cc95f4f9
DW
289 ,long* pflId
290 ,wxString& sFaceName
291 ,wxFont* pFont
e99762c0 292 );
cc95f4f9
DW
293WXDLLEXPORT wxFontEncoding wxGetFontEncFromCharSet(int nCharSet);
294WXDLLEXPORT void wxOS2SelectMatchingFontByName( PFATTRS vFattrs
295 ,PFACENAMEDESC pFaceName
296 ,PFONTMETRICS pFM
297 ,int nNumFonts
298 ,const wxFont* pFont
299 );
e99762c0
DW
300WXDLLEXPORT wxFont wxCreateFontFromLogFont( LOGFONT* pLogFont
301 ,PFONTMETRICS pFM
302 ,PFACENAMEDESC pFace
303 );
edf1dfa1 304WXDLLEXPORT int wxGpiStrcmp(wxChar* s0, wxChar* s1);
45fcbf3b
DW
305
306WXDLLEXPORT void wxSliderEvent(WXHWND control, WXWORD wParam, WXWORD pos);
307WXDLLEXPORT void wxScrollBarEvent(WXHWND hbar, WXWORD wParam, WXWORD pos);
308
309// Find maximum size of window/rectangle
310WXDLLEXPORT extern void wxFindMaxSize(WXHWND hwnd, RECT *rect);
311
312WXDLLEXPORT wxWindow* wxFindControlFromHandle(WXHWND hWnd);
313WXDLLEXPORT void wxAddControlHandle(WXHWND hWnd, wxWindow *item);
314
315// Safely get the window text (i.e. without using fixed size buffer)
316WXDLLEXPORT extern wxString wxGetWindowText(WXHWND hWnd);
317
318// get the window class name
319WXDLLEXPORT extern wxString wxGetWindowClass(WXHWND hWnd);
320
321// get the window id (should be unsigned, hence this is not wxWindowID which
322// is, for mainly historical reasons, signed)
323WXDLLEXPORT extern WXWORD wxGetWindowId(WXHWND hWnd);
324
914589c2
DW
325// Convert a PM Error code to a string
326WXDLLEXPORT extern wxString wxPMErrorToStr(ERRORID vError);
327
45fcbf3b
DW
328// Does this window style specify any border?
329inline bool wxStyleHasBorder(long style)
330{
331 return (style & (wxSIMPLE_BORDER | wxRAISED_BORDER |
332 wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0;
333}
334
3011bf2b
DW
335inline RECTL wxGetWindowRect(HWND hWnd)
336{
337 RECTL vRect;
338
339 ::WinQueryWindowRect(hWnd, &vRect);
340 return vRect;
341} // end of wxGetWindowRect
342
3c299c3a
DW
343WXDLLEXPORT extern void wxOS2SetFont( HWND hWnd
344 ,const wxFont& rFont
345 );
346
008089f6 347
db16e5c3
DW
348WXDLLEXPORT extern bool wxCheckWindowWndProc( WXHWND hWnd
349 ,WXFARPROC fnWndProc
3011bf2b 350 );
db16e5c3
DW
351WXDLLEXPORT extern wxBitmap wxDisableBitmap( const wxBitmap& rBmp
352 ,long lColor
353 );
354
bd3b171d
SN
355#include "wx/colour.h"
356
9794cae1 357WXDLLEXPORT extern COLORREF wxColourToRGB(const wxColour& rColor);
3011bf2b 358
22e0b22b 359#endif // __WXPM__
bd3b171d
SN
360
361#endif // _WX_PRIVATE_H_