]> git.saurik.com Git - wxWidgets.git/blame - include/wx/os2/private.h
Added missing include.
[wxWidgets.git] / include / wx / os2 / private.h
CommitLineData
0e320a79
DW
1/////////////////////////////////////////////////////////////////////////////
2// Name: private.h
45fcbf3b
DW
3// Purpose: Private declarations: as this header is only included by
4// wxWindows itself, it may contain identifiers which don't start
5// with "wx".
6// Author: Julian Smart
0e320a79 7// Modified by:
45fcbf3b 8// Created: 01/02/97
0e320a79 9// RCS-ID: $Id$
45fcbf3b
DW
10// Copyright: (c) Julian Smart
11// Licence: wxWindows licence
0e320a79
DW
12/////////////////////////////////////////////////////////////////////////////
13
14#ifndef _WX_PRIVATE_H_
15#define _WX_PRIVATE_H_
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>
74707ecf
SN
23#if defined (__EMX__) && !defined(USE_OS2_TOOLKIT_HEADERS)
24/* struct missing in "os2emx.h" */
25 typedef struct _SPBCDATA {
26 ULONG cbSize; /* Size of control block. */
27 ULONG ulTextLimit; /* Entryfield text limit. */
28 LONG lLowerLimit; /* Spin lower limit (numeric only). */
29 LONG lUpperLimit; /* Spin upper limit (numeric only). */
30 ULONG idMasterSpb; /* ID of the servant's master spinbutton. */
31 PVOID pHWXCtlData; /* Handwriting control data structure flag. */
32 } SPBCDATA;
f140b352 33
74707ecf
SN
34 typedef SPBCDATA *PSPBCDATA;
35#endif
0e320a79 36
f5b5c15c
DW
37#include "wx/fontenc.h"
38
45fcbf3b
DW
39class WXDLLEXPORT wxFont;
40class WXDLLEXPORT wxWindow;
74707ecf 41class WXDLLEXPORT wxString;
db16e5c3 42class WXDLLEXPORT wxBitmap;
45fcbf3b
DW
43
44// ---------------------------------------------------------------------------
45// private constants
46// ---------------------------------------------------------------------------
47
48// Conversion
49static const double METRIC_CONVERSION_CONSTANT = 0.0393700787;
50
51// Scaling factors for various unit conversions
52static const double mm2inches = (METRIC_CONVERSION_CONSTANT);
53static const double inches2mm = (1/METRIC_CONVERSION_CONSTANT);
54
55static const double mm2twips = (METRIC_CONVERSION_CONSTANT*1440);
56static const double twips2mm = (1/(METRIC_CONVERSION_CONSTANT*1440));
57
58static const double mm2pt = (METRIC_CONVERSION_CONSTANT*72);
59static const double pt2mm = (1/(METRIC_CONVERSION_CONSTANT*72));
60
511ac294
DW
61//
62// Constant strings for control names and classes
63//
64
65//
66// Controls
67//
68WXDLLEXPORT_DATA(extern const wxChar*) wxButtonNameStr;
69WXDLLEXPORT_DATA(extern const wxChar*) wxCanvasNameStr;
70WXDLLEXPORT_DATA(extern const wxChar*) wxCheckBoxNameStr;
71WXDLLEXPORT_DATA(extern const wxChar*) wxChoiceNameStr;
72WXDLLEXPORT_DATA(extern const wxChar*) wxComboBoxNameStr;
73WXDLLEXPORT_DATA(extern const wxChar*) wxDialogNameStr;
74WXDLLEXPORT_DATA(extern const wxChar*) wxFrameNameStr;
75WXDLLEXPORT_DATA(extern const wxChar*) wxGaugeNameStr;
76WXDLLEXPORT_DATA(extern const wxChar*) wxStaticBoxNameStr;
77WXDLLEXPORT_DATA(extern const wxChar*) wxListBoxNameStr;
78WXDLLEXPORT_DATA(extern const wxChar*) wxStaticTextNameStr;
79WXDLLEXPORT_DATA(extern const wxChar*) wxStaticBitmapNameStr;
80WXDLLEXPORT_DATA(extern const wxChar*) wxMultiTextNameStr;
81WXDLLEXPORT_DATA(extern const wxChar*) wxPanelNameStr;
82WXDLLEXPORT_DATA(extern const wxChar*) wxRadioBoxNameStr;
83WXDLLEXPORT_DATA(extern const wxChar*) wxRadioButtonNameStr;
84WXDLLEXPORT_DATA(extern const wxChar*) wxBitmapRadioButtonNameStr;
85WXDLLEXPORT_DATA(extern const wxChar*) wxScrollBarNameStr;
86WXDLLEXPORT_DATA(extern const wxChar*) wxSliderNameStr;
87WXDLLEXPORT_DATA(extern const wxChar*) wxStaticNameStr;
88WXDLLEXPORT_DATA(extern const wxChar*) wxTextCtrlWindowNameStr;
89WXDLLEXPORT_DATA(extern const wxChar*) wxTextCtrlNameStr;
90WXDLLEXPORT_DATA(extern const wxChar*) wxVirtListBoxNameStr;
91WXDLLEXPORT_DATA(extern const wxChar*) wxButtonBarNameStr;
92WXDLLEXPORT_DATA(extern const wxChar*) wxEnhDialogNameStr;
93WXDLLEXPORT_DATA(extern const wxChar*) wxToolBarNameStr;
94WXDLLEXPORT_DATA(extern const wxChar*) wxStatusLineNameStr;
95WXDLLEXPORT_DATA(extern const wxChar*) wxGetTextFromUserPromptStr;
96WXDLLEXPORT_DATA(extern const wxChar*) wxMessageBoxCaptionStr;
97WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorPromptStr;
98WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorDefaultWildcardStr;
99WXDLLEXPORT_DATA(extern const wxChar*) wxInternalErrorStr;
100WXDLLEXPORT_DATA(extern const wxChar*) wxFatalErrorStr;
101WXDLLEXPORT_DATA(extern const wxChar*) wxTreeCtrlNameStr;
102WXDLLEXPORT_DATA(extern const wxChar*) wxDirDialogNameStr;
103WXDLLEXPORT_DATA(extern const wxChar*) wxDirDialogDefaultFolderStr;
104
105//
106// Class names
107//
108WXDLLEXPORT_DATA(extern const wxChar*) wxFrameClassName;
109WXDLLEXPORT_DATA(extern const wxChar*) wxFrameClassNameNoRedraw;
110WXDLLEXPORT_DATA(extern const wxChar*) wxMDIFrameClassName;
111WXDLLEXPORT_DATA(extern const wxChar*) wxMDIFrameClassNameNoRedraw;
112WXDLLEXPORT_DATA(extern const wxChar*) wxMDIChildFrameClassName;
113WXDLLEXPORT_DATA(extern const wxChar*) wxMDIChildFrameClassNameNoRedraw;
114WXDLLEXPORT_DATA(extern const wxChar*) wxPanelClassName;
115WXDLLEXPORT_DATA(extern const wxChar*) wxPanelClassNameNR;
116WXDLLEXPORT_DATA(extern const wxChar*) wxCanvasClassName;
117WXDLLEXPORT_DATA(extern const wxChar*) wxCanvasClassNameNR;
118
45fcbf3b
DW
119// ---------------------------------------------------------------------------
120// standard icons from the resources
121// ---------------------------------------------------------------------------
122
bd3b171d
SN
123#if wxUSE_GUI
124
45fcbf3b
DW
125WXDLLEXPORT_DATA(extern HICON) wxSTD_FRAME_ICON;
126WXDLLEXPORT_DATA(extern HICON) wxSTD_MDIPARENTFRAME_ICON;
127WXDLLEXPORT_DATA(extern HICON) wxSTD_MDICHILDFRAME_ICON;
128WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_FRAME_ICON;
129WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_MDIPARENTFRAME_ICON;
130WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_MDICHILDFRAME_ICON;
131WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT;
132
bd3b171d
SN
133#endif // wxUSE_GUI
134
45fcbf3b
DW
135// ---------------------------------------------------------------------------
136// this defines a CASTWNDPROC macro which casts a pointer to the type of a
137// window proc for PM.
138// MPARAM is a void * but is really a 32-bit value
139// ---------------------------------------------------------------------------
140
141typedef MRESULT (APIENTRY * WndProcCast) (HWND, ULONG, MPARAM, MPARAM);
142#define CASTWNDPROC (WndProcCast)
143
144#if wxUSE_ITSY_BITSY
145 #define IBS_HORZCAPTION 0x4000L
146 #define IBS_VERTCAPTION 0x8000L
147
86de7616
DW
148 UINT APIENTRY ibGetCaptionSize( HWND hWnd ) ;
149 UINT APIENTRY ibSetCaptionSize( HWND hWnd, UINT nSize ) ;
150 MRESULT APIENTRY ibDefWindowProc( HWND hWnd, ULONG ulMsg, MPARAM wParam, MPARAM lParam ) ;
151 VOID APIENTRY ibAdjustWindowRect( HWND hWnd, LPRECT lprc ) ;
45fcbf3b
DW
152#endif // wxUSE_ITSY_BITSY
153
154/*
155 * Decide what window classes we're going to use
156 * for this combination of CTl3D/FAFA settings
0e320a79
DW
157 */
158
45fcbf3b
DW
159#define STATIC_CLASS _T("STATIC")
160#define STATIC_FLAGS (SS_TEXT|DT_LEFT|SS_LEFT|WS_VISIBLE)
86de7616 161#define CHECK_CLASS _T("BUTTON")
45fcbf3b
DW
162#define CHECK_FLAGS (BS_AUTOCHECKBOX|WS_TABSTOP)
163#define CHECK_IS_FAFA FALSE
86de7616 164#define RADIO_CLASS _T("BUTTON" )
45fcbf3b
DW
165#define RADIO_FLAGS (BS_AUTORADIOBUTTON|WS_VISIBLE)
166#define RADIO_SIZE 20
167#define RADIO_IS_FAFA FALSE
168#define PURE_WINDOWS
169/* PM has no group box button style
170#define GROUP_CLASS "BUTTON"
171#define GROUP_FLAGS (BS_GROUPBOX|WS_CHILD|WS_VISIBLE)
172*/
173
174/*
175#define BITCHECK_FLAGS (FB_BITMAP|FC_BUTTONDRAW|FC_DEFAULT|WS_VISIBLE)
176#define BITRADIO_FLAGS (FC_BUTTONDRAW|FB_BITMAP|FC_RADIO|WS_CHILD|WS_VISIBLE)
177*/
178
179// ---------------------------------------------------------------------------
180// misc macros
181// ---------------------------------------------------------------------------
182
183#define MEANING_CHARACTER '0'
184#define DEFAULT_ITEM_WIDTH 200
185#define DEFAULT_ITEM_HEIGHT 80
186
187// Scale font to get edit control height
188#define EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy) (3*(cy)/2)
189
bd3b171d
SN
190#if wxUSE_GUI
191
45fcbf3b
DW
192// Generic subclass proc, for panel item moving/sizing and intercept
193// EDIT control VK_RETURN messages
86de7616 194extern LONG APIENTRY wxSubclassedGenericControlProc(WXHWND hWnd, WXDWORD message, WXWPARAM wParam, WXLPARAM lParam);
45fcbf3b 195
bd3b171d
SN
196#endif
197
45fcbf3b
DW
198// ---------------------------------------------------------------------------
199// constants which might miss from some compilers' headers
200// ---------------------------------------------------------------------------
201
202#if !defined(WS_EX_CLIENTEDGE)
008089f6 203 #define WS_EX_CLIENTEDGE 0x00000200L
45fcbf3b
DW
204#endif
205
206#ifndef ENDSESSION_LOGOFF
207 #define ENDSESSION_LOGOFF 0x80000000
208#endif
209
210// ---------------------------------------------------------------------------
211// debug messages -- OS/2 has no native debug output system
212// ---------------------------------------------------------------------------
213
214// ---------------------------------------------------------------------------
215// macros to make casting between WXFOO and FOO a bit easier: the GetFoo()
216// returns Foo cast to the Windows type for oruselves, while GetFooOf() takes
217// an argument which should be a pointer or reference to the object of the
218// corresponding class (this depends on the macro)
219// ---------------------------------------------------------------------------
220
221#define GetHwnd() ((HWND)GetHWND())
222#define GetHwndOf(win) ((HWND)((win)->GetHWND()))
223// old name
224#define GetWinHwnd GetHwndOf
225
226#define GetHdc() ((HDC)GetHDC())
227#define GetHdcOf(dc) ((HDC)(dc).GetHDC())
228
8bb6da4a
DW
229#define GetHbitmap() ((HBITMAP)GetHBITMAP())
230#define GetHbitmapOf(bmp) ((HBITMAP)(bmp).GetHBITMAP())
231
45fcbf3b
DW
232#define GetHicon() ((HICON)GetHICON())
233#define GetHiconOf(icon) ((HICON)(icon).GetHICON())
234
235#define GetHaccel() ((HACCEL)GetHACCEL())
236#define GetHaccelOf(table) ((HACCEL)((table).GetHACCEL()))
237
238#define GetHmenu() ((HMENU)GetHMenu())
239#define GetHmenuOf(menu) ((HMENU)menu->GetHMenu())
240
8bb6da4a
DW
241#define GetHcursor() ((HCURSOR)GetHCURSOR())
242#define GetHcursorOf(cursor) ((HCURSOR)(cursor).GetHCURSOR())
243
244#define GetHfont() ((HFONT)GetHFONT())
245#define GetHfontOf(font) ((HFONT)(font).GetHFONT())
246
247// OS/2 convention of the mask is opposed to the wxWindows one, so we need
248// to invert the mask each time we pass one/get one to/from Windows
249extern HBITMAP wxInvertMask(HBITMAP hbmpMask, int w = 0, int h = 0);
250
45fcbf3b
DW
251// ---------------------------------------------------------------------------
252// global data
253// ---------------------------------------------------------------------------
254
255// The MakeProcInstance version of the function wxSubclassedGenericControlProc
283ed244 256WXDLLEXPORT_DATA(extern int) wxGenericControlSubClassProc;
45fcbf3b
DW
257WXDLLEXPORT_DATA(extern wxChar*) wxBuffer;
258WXDLLEXPORT_DATA(extern HINSTANCE) wxhInstance;
259
260// ---------------------------------------------------------------------------
261// global functions
262// ---------------------------------------------------------------------------
263
264extern "C"
265{
266WXDLLEXPORT HINSTANCE wxGetInstance();
267}
268
bd3b171d
SN
269WXDLLEXPORT void wxSetInstance(HINSTANCE hInst);
270
271#if wxUSE_GUI
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 );
304WXDLLEXPORT int wxGpiStrcmp(char* s0, char* 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
bd3b171d
SN
359#endif // wxUSE_GUI
360
361#endif // _WX_PRIVATE_H_