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_
|