home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2233.zip / wxOS2-2_3_3.zip / wxWindows-2.3.3 / include / wx / os2 / private.h < prev    next >
C/C++ Source or Header  |  2002-08-23  |  14KB  |  343 lines

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