]> git.saurik.com Git - wxWidgets.git/blame - include/wx/os2/private.h
declare wxEntry() as taking char **Argv, not char *argv[]
[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
123WXDLLEXPORT_DATA(extern HICON) wxSTD_FRAME_ICON;
124WXDLLEXPORT_DATA(extern HICON) wxSTD_MDIPARENTFRAME_ICON;
125WXDLLEXPORT_DATA(extern HICON) wxSTD_MDICHILDFRAME_ICON;
126WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_FRAME_ICON;
127WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_MDIPARENTFRAME_ICON;
128WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_MDICHILDFRAME_ICON;
129WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT;
130
131// ---------------------------------------------------------------------------
132// this defines a CASTWNDPROC macro which casts a pointer to the type of a
133// window proc for PM.
134// MPARAM is a void * but is really a 32-bit value
135// ---------------------------------------------------------------------------
136
137typedef MRESULT (APIENTRY * WndProcCast) (HWND, ULONG, MPARAM, MPARAM);
138#define CASTWNDPROC (WndProcCast)
139
140#if wxUSE_ITSY_BITSY
141 #define IBS_HORZCAPTION 0x4000L
142 #define IBS_VERTCAPTION 0x8000L
143
86de7616
DW
144 UINT APIENTRY ibGetCaptionSize( HWND hWnd ) ;
145 UINT APIENTRY ibSetCaptionSize( HWND hWnd, UINT nSize ) ;
146 MRESULT APIENTRY ibDefWindowProc( HWND hWnd, ULONG ulMsg, MPARAM wParam, MPARAM lParam ) ;
147 VOID APIENTRY ibAdjustWindowRect( HWND hWnd, LPRECT lprc ) ;
45fcbf3b
DW
148#endif // wxUSE_ITSY_BITSY
149
150/*
151 * Decide what window classes we're going to use
152 * for this combination of CTl3D/FAFA settings
0e320a79
DW
153 */
154
45fcbf3b
DW
155#define STATIC_CLASS _T("STATIC")
156#define STATIC_FLAGS (SS_TEXT|DT_LEFT|SS_LEFT|WS_VISIBLE)
86de7616 157#define CHECK_CLASS _T("BUTTON")
45fcbf3b
DW
158#define CHECK_FLAGS (BS_AUTOCHECKBOX|WS_TABSTOP)
159#define CHECK_IS_FAFA FALSE
86de7616 160#define RADIO_CLASS _T("BUTTON" )
45fcbf3b
DW
161#define RADIO_FLAGS (BS_AUTORADIOBUTTON|WS_VISIBLE)
162#define RADIO_SIZE 20
163#define RADIO_IS_FAFA FALSE
164#define PURE_WINDOWS
165/* PM has no group box button style
166#define GROUP_CLASS "BUTTON"
167#define GROUP_FLAGS (BS_GROUPBOX|WS_CHILD|WS_VISIBLE)
168*/
169
170/*
171#define BITCHECK_FLAGS (FB_BITMAP|FC_BUTTONDRAW|FC_DEFAULT|WS_VISIBLE)
172#define BITRADIO_FLAGS (FC_BUTTONDRAW|FB_BITMAP|FC_RADIO|WS_CHILD|WS_VISIBLE)
173*/
174
175// ---------------------------------------------------------------------------
176// misc macros
177// ---------------------------------------------------------------------------
178
179#define MEANING_CHARACTER '0'
180#define DEFAULT_ITEM_WIDTH 200
181#define DEFAULT_ITEM_HEIGHT 80
182
183// Scale font to get edit control height
184#define EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy) (3*(cy)/2)
185
186// Generic subclass proc, for panel item moving/sizing and intercept
187// EDIT control VK_RETURN messages
86de7616 188extern LONG APIENTRY wxSubclassedGenericControlProc(WXHWND hWnd, WXDWORD message, WXWPARAM wParam, WXLPARAM lParam);
45fcbf3b
DW
189
190// ---------------------------------------------------------------------------
191// constants which might miss from some compilers' headers
192// ---------------------------------------------------------------------------
193
194#if !defined(WS_EX_CLIENTEDGE)
008089f6 195 #define WS_EX_CLIENTEDGE 0x00000200L
45fcbf3b
DW
196#endif
197
198#ifndef ENDSESSION_LOGOFF
199 #define ENDSESSION_LOGOFF 0x80000000
200#endif
201
202// ---------------------------------------------------------------------------
203// debug messages -- OS/2 has no native debug output system
204// ---------------------------------------------------------------------------
205
206// ---------------------------------------------------------------------------
207// macros to make casting between WXFOO and FOO a bit easier: the GetFoo()
208// returns Foo cast to the Windows type for oruselves, while GetFooOf() takes
209// an argument which should be a pointer or reference to the object of the
210// corresponding class (this depends on the macro)
211// ---------------------------------------------------------------------------
212
213#define GetHwnd() ((HWND)GetHWND())
214#define GetHwndOf(win) ((HWND)((win)->GetHWND()))
215// old name
216#define GetWinHwnd GetHwndOf
217
218#define GetHdc() ((HDC)GetHDC())
219#define GetHdcOf(dc) ((HDC)(dc).GetHDC())
220
8bb6da4a
DW
221#define GetHbitmap() ((HBITMAP)GetHBITMAP())
222#define GetHbitmapOf(bmp) ((HBITMAP)(bmp).GetHBITMAP())
223
45fcbf3b
DW
224#define GetHicon() ((HICON)GetHICON())
225#define GetHiconOf(icon) ((HICON)(icon).GetHICON())
226
227#define GetHaccel() ((HACCEL)GetHACCEL())
228#define GetHaccelOf(table) ((HACCEL)((table).GetHACCEL()))
229
230#define GetHmenu() ((HMENU)GetHMenu())
231#define GetHmenuOf(menu) ((HMENU)menu->GetHMenu())
232
8bb6da4a
DW
233#define GetHcursor() ((HCURSOR)GetHCURSOR())
234#define GetHcursorOf(cursor) ((HCURSOR)(cursor).GetHCURSOR())
235
236#define GetHfont() ((HFONT)GetHFONT())
237#define GetHfontOf(font) ((HFONT)(font).GetHFONT())
238
239// OS/2 convention of the mask is opposed to the wxWindows one, so we need
240// to invert the mask each time we pass one/get one to/from Windows
241extern HBITMAP wxInvertMask(HBITMAP hbmpMask, int w = 0, int h = 0);
242
45fcbf3b
DW
243// ---------------------------------------------------------------------------
244// global data
245// ---------------------------------------------------------------------------
246
247// The MakeProcInstance version of the function wxSubclassedGenericControlProc
86de7616 248WXDLLEXPORT_DATA(extern) wxGenericControlSubClassProc;
45fcbf3b
DW
249WXDLLEXPORT_DATA(extern wxChar*) wxBuffer;
250WXDLLEXPORT_DATA(extern HINSTANCE) wxhInstance;
251
252// ---------------------------------------------------------------------------
253// global functions
254// ---------------------------------------------------------------------------
255
256extern "C"
257{
258WXDLLEXPORT HINSTANCE wxGetInstance();
259}
260
008089f6
DW
261WXDLLEXPORT void wxDrawBorder( HPS hPS
262 ,RECTL& rRect
263 ,WXDWORD dwStyle
264 );
265
45fcbf3b
DW
266WXDLLEXPORT void wxSetInstance(HINSTANCE hInst);
267
268WXDLLEXPORT wxWindow* wxFindWinFromHandle(WXHWND hWnd);
269
e99762c0 270WXDLLEXPORT void wxGetCharSize(WXHWND wnd, int *x, int *y,wxFont *the_font);
1b75810c
DW
271
272WXDLLEXPORT void wxConvertVectorFontSize( FIXED fxPointSize
273 ,PFATTRS pFattrs
274 );
e99762c0
DW
275WXDLLEXPORT void wxFillLogFont( LOGFONT* pLogFont
276 ,PFACENAMEDESC pFaceName
f140b352 277 ,HPS* phPS
7d921159 278 ,bool* pbInternalPS
cc95f4f9
DW
279 ,long* pflId
280 ,wxString& sFaceName
281 ,wxFont* pFont
e99762c0 282 );
cc95f4f9
DW
283WXDLLEXPORT wxFontEncoding wxGetFontEncFromCharSet(int nCharSet);
284WXDLLEXPORT void wxOS2SelectMatchingFontByName( PFATTRS vFattrs
285 ,PFACENAMEDESC pFaceName
286 ,PFONTMETRICS pFM
287 ,int nNumFonts
288 ,const wxFont* pFont
289 );
e99762c0
DW
290WXDLLEXPORT wxFont wxCreateFontFromLogFont( LOGFONT* pLogFont
291 ,PFONTMETRICS pFM
292 ,PFACENAMEDESC pFace
293 );
294WXDLLEXPORT int wxGpiStrcmp(char* s0, char* s1);
45fcbf3b
DW
295
296WXDLLEXPORT void wxSliderEvent(WXHWND control, WXWORD wParam, WXWORD pos);
297WXDLLEXPORT void wxScrollBarEvent(WXHWND hbar, WXWORD wParam, WXWORD pos);
298
299// Find maximum size of window/rectangle
300WXDLLEXPORT extern void wxFindMaxSize(WXHWND hwnd, RECT *rect);
301
302WXDLLEXPORT wxWindow* wxFindControlFromHandle(WXHWND hWnd);
303WXDLLEXPORT void wxAddControlHandle(WXHWND hWnd, wxWindow *item);
304
305// Safely get the window text (i.e. without using fixed size buffer)
306WXDLLEXPORT extern wxString wxGetWindowText(WXHWND hWnd);
307
308// get the window class name
309WXDLLEXPORT extern wxString wxGetWindowClass(WXHWND hWnd);
310
311// get the window id (should be unsigned, hence this is not wxWindowID which
312// is, for mainly historical reasons, signed)
313WXDLLEXPORT extern WXWORD wxGetWindowId(WXHWND hWnd);
314
914589c2
DW
315// Convert a PM Error code to a string
316WXDLLEXPORT extern wxString wxPMErrorToStr(ERRORID vError);
317
45fcbf3b
DW
318// Does this window style specify any border?
319inline bool wxStyleHasBorder(long style)
320{
321 return (style & (wxSIMPLE_BORDER | wxRAISED_BORDER |
322 wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0;
323}
324
3011bf2b
DW
325inline RECTL wxGetWindowRect(HWND hWnd)
326{
327 RECTL vRect;
328
329 ::WinQueryWindowRect(hWnd, &vRect);
330 return vRect;
331} // end of wxGetWindowRect
332
3c299c3a
DW
333WXDLLEXPORT extern void wxOS2SetFont( HWND hWnd
334 ,const wxFont& rFont
335 );
336
008089f6 337
db16e5c3
DW
338WXDLLEXPORT extern bool wxCheckWindowWndProc( WXHWND hWnd
339 ,WXFARPROC fnWndProc
3011bf2b 340 );
db16e5c3
DW
341WXDLLEXPORT extern wxBitmap wxDisableBitmap( const wxBitmap& rBmp
342 ,long lColor
343 );
344
345#endif // _WX_PRIVATE_H_
3011bf2b 346