home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / odtlktv4.zip / ODTLKT / TOOLKIT / SAMPLES / OPENDOC / PARTS / PUSHBTN / PUSHBTN.HPP < prev    next >
Text File  |  1995-12-15  |  5KB  |  116 lines

  1. /***********************************************************************
  2. *
  3. *  File Name   : PUSHBTN.HPP
  4. *
  5. *  Description : PushButtonPart class header file.
  6. *
  7. *  Notes       : N/A
  8. *
  9. *     (C) COPYRIGHT International Business Machines Corp. 1995
  10. *     All Rights Reserved
  11. *     Licensed Materials - Property of IBM
  12. *
  13. *     US Government Users Restricted Rights - Use, duplication or
  14. *     disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  15. *
  16. *     DISCLAIMER OF WARRANTIES.  The following [enclosed] code is
  17. *     sample code created by IBM Corporation. This sample code is not
  18. *     part of any standard or IBM product and is provided to you solely
  19. *     for the purpose of assisting you in the development of your
  20. *     applications.  The code is provided "AS IS", without
  21. *     warranty of any kind.  IBM shall not be liable for any damages
  22. *     arising out of your use of the sample code, even if they have been
  23. *     advised of the possibility of such damages.
  24. *
  25. ***********************************************************************/
  26.  
  27. #ifndef _PUSHBTN_HPP_
  28. #define _PUSHBTN_HPP_
  29.  
  30. #define TEXTBUFFERSIZE     30   // Buffer size for the text show on push button
  31. #define MSGBUFFERSIZE      300  // Buffer size for message
  32. #define IDS_PUSHBUTTONMSG  1    // Message ID
  33. #define PB_ID              100  // Push button ID
  34. #define PB_INITTEXT        200  // Push button initial text ID
  35. #define PB_WIDTH           100  // Width  of push button in OD coordinates
  36. #define PB_HEIGHT          50   // Height of push button in OD coordinates
  37. #define FIXED2LONG(f)      (((f) + 0x8000) >> 16)
  38. #define SMALLICONSIZE      16
  39. #define LARGEICONSIZE      32
  40. #define THUMBNAILSIZE      64
  41. #define IDB_BMP            301
  42. #define IDI_ICON           1
  43.  
  44. // The Title bar text of message window, when user press the Push Button.
  45. #define kTitleBarText     "IBM OpenDoc Push Button Part Sample 1.1"
  46.  
  47. // The Push Button module name is defined for obtaining module
  48. // resources such as the default Push Button text and messages text.
  49. #define MODULENAME        "pushbtn.dll"
  50.  
  51. // Push Button part storage unit properties.
  52. static const ODPropertyName kODPropPushButtonAttr  = \
  53.        "+//ISO 9070/ANSI::113722::US::CI LABS::IBM:PushButtonPart:Attributes";
  54.  
  55. // Push Button values types to add to the storage unit properties.
  56. static const ODValueType kPushButtonAttrType  = \
  57.        "+//ISO 9070/ANSI::113722::US::CI LABS::IBM:PushButton:Attributes";
  58. static const ODValueType kPushButtonTextType  = \
  59.        "+//ISO 9070/ANSI::113722::US::CI LABS::IBM:PushButton:Text";
  60.  
  61. // Push Button types for the OpenDoc registration process.
  62. const ODType   kKindPushButtonPart     = "PushButtonPart:pushbtn";
  63. const ODType   kKindDisplayName        = "Push Button Part Kind";
  64. const ODType   kPartHandlerDisplayName = "Push Button Part";
  65. const ODType   kPartHandlerName        = "PushButtonPart";
  66. const ODType   kCategory               = "Control";
  67.  
  68. // OpenDoc class utility for constructing an ODPOINTL object from a POINTL.
  69. class ODPOINTL : public POINTL
  70. {
  71.    public:
  72.    operator ODPoint() const { ODPoint pt = {MAKEFIXED(x,0),MAKEFIXED(y,0)}; return pt; } ;
  73.    ODPOINTL( ODPoint pt) {x = FIXED2LONG(pt.x); y = FIXED2LONG(pt.y); };
  74.    ODPOINTL( int x1, int y1) { x = x1; y = y1; };
  75.    ODPOINTL( ) { x = y = 0; };
  76.    //ODPOINTL( POINTL & pt) { } ;
  77. };
  78.  
  79. // OpenDoc class utility for constructing an ODRECTL object from a RECTL.
  80. class ODRECTL : public RECTL
  81. {
  82.    public:
  83.    operator ODRect() const { ODRect rct = {
  84.                                  MAKEFIXED(xLeft,0),
  85.                                  MAKEFIXED(yTop,0),
  86.                                  MAKEFIXED(xRight,0),
  87.                                  MAKEFIXED(yBottom,0)
  88.                                           }; return rct; } ;
  89.    ODRECTL( ODRect rct) {
  90.            xLeft   = FIXED2LONG(rct.left);
  91.            yBottom = FIXED2LONG(rct.bottom);
  92.            xRight  = FIXED2LONG(rct.right);
  93.            yTop    = FIXED2LONG(rct.top);
  94.                         };
  95.    ODRECTL( ODPoint botLeft, ODPoint topRight) {
  96.            xLeft   = FIXED2LONG(botLeft.x);
  97.            yBottom = FIXED2LONG(botLeft.y);
  98.            xRight  = FIXED2LONG(topRight.x);
  99.            yTop    = FIXED2LONG(topRight.y);
  100.                         };
  101.    ODRECTL( ) { xLeft = yBottom = xRight = yTop = 0; };
  102.    ODRECTL( RECTL & rct)  { *this = *(ODRECTL *)&rct ;}
  103. };
  104.  
  105. // Handy functions and macros for dealing with ref-counted objectes
  106. #define ODReleaseObject(ev, object) \
  107.    do { \
  108.       if (object!=kODNULL) {  \
  109.          object->Release(ev); \
  110.          object = kODNULL;    \
  111.       } \
  112.    } while(0)
  113.  
  114.  
  115. #endif  // _PUSHBTN_HPP_
  116.