home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / owlsrc.pak / STATIC.CPP < prev    next >
C/C++ Source or Header  |  1997-07-23  |  3KB  |  135 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows
  3. // (C) Copyright 1991, 1994 by Borland International, All Rights Reserved
  4. //
  5. //   Implementation of class TStatic.  This defines the basic behavior of
  6. //   static controls
  7. //----------------------------------------------------------------------------
  8. #pragma hdrignore SECTION
  9. #include <owl/owlpch.h>
  10. #include <owl/static.h>
  11. #include <owl/applicat.h>
  12. #include <bwcc.h>
  13.  
  14. #if !defined(SECTION) || SECTION == 1
  15.  
  16. DEFINE_RESPONSE_TABLE1(TStatic,TControl)
  17.   EV_WM_SIZE,
  18. END_RESPONSE_TABLE;
  19.  
  20. //
  21. // constructor for a TStatic object
  22. //
  23. // by default, static controls have left-justified text
  24. //
  25. TStatic::TStatic(TWindow*        parent,
  26.                  int             id,
  27.                  const char far* title,
  28.                  int x, int y, int w, int h,
  29.                  uint            textLen,
  30.                  TModule*        module)
  31. :
  32.   TControl(parent, id, title, x, y, w, h, module)
  33. {
  34.   TextLen = textLen;
  35.   Attr.Style = (Attr.Style | SS_LEFT) & ~WS_TABSTOP;
  36. }
  37.  
  38. //
  39. // constructor for a TStatic to be associated with a MS-Windows
  40. // interface element created by MS-Windows from a resource definition
  41. //
  42. // initializes its data fields using passed parameters
  43. //
  44. // data transfer is disabled, by default, for the TStatic
  45. //
  46. TStatic::TStatic(TWindow*   parent,
  47.                  int        resourceId,
  48.                  uint       textLen,
  49.                  TModule*   module)
  50. :
  51.   TControl(parent, resourceId, module)
  52. {
  53.   TextLen = textLen;
  54.   DisableTransfer();
  55. }
  56.  
  57. //
  58. // Static controls don't repaint when they are re-sized
  59. // This will force them to be re-painted
  60. //
  61. void
  62. TStatic::EvSize(uint sizeType, TSize& size)
  63. {
  64.   Invalidate();
  65.   TControl::EvSize(sizeType,size);
  66. }
  67.  
  68. //
  69. // Return name of predefined BWCC or Windows static class
  70. //
  71. char far*
  72. TStatic::GetClassName()
  73. {
  74.   if (GetApplication()->BWCCEnabled())
  75.     return STATIC_CLASS;
  76.   else
  77.     return "STATIC";
  78. }
  79.  
  80. //
  81. // transfers state information for TStatic controls
  82. //
  83. // the direction passed specifies whether data is to be read from or
  84. // written to the passed buffer, or whether the data element size is simply to
  85. // be returned
  86. //
  87. // the return value is the size (in bytes) of the transfer data
  88. //
  89. uint
  90. TStatic::Transfer(void* buffer, TTransferDirection direction)
  91. {
  92.   if (direction == tdGetData)
  93.     GetText((char far*)buffer, TextLen);
  94.  
  95.   else if (direction == tdSetData)
  96.     SetText((char far*)buffer);
  97.  
  98.   return TextLen;
  99. }
  100.  
  101. void
  102. TStatic::Clear()
  103. {
  104.   SetText("");
  105. }
  106.  
  107. #endif
  108. #if !defined(SECTION) || SECTION == 2
  109.  
  110. IMPLEMENT_STREAMABLE1(TStatic, TControl);
  111.  
  112. //
  113. // reads an instance of TStatic from the passed ipstream
  114. //
  115. void*
  116. TStatic::Streamer::Read(ipstream& is, uint32 /*version*/) const
  117. {
  118.   ReadBaseObject((TControl*)GetObject(), is);
  119.   is >> GetObject()->TextLen;
  120.   return GetObject();
  121. }
  122.  
  123. //
  124. // writes the TStatic to the passed opstream
  125. //
  126. void
  127. TStatic::Streamer::Write(opstream& os) const
  128. {
  129.   WriteBaseObject((TControl*)GetObject(), os);
  130.   os << GetObject()->TextLen;
  131. }
  132.  
  133. #endif
  134.  
  135.