home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Programmierung / SOURCE.mdf / programm / windows / c / mobjm260 / stoolbar.cp_ / stoolbar.cp
Encoding:
Text File  |  1994-09-06  |  3.4 KB  |  185 lines

  1. //    Microworks ObjectMate  2.6
  2. //
  3. //  "SFX Class Library"
  4. //
  5. //    An ObjectWindows 2.0 extension for Borland C++ 4.0
  6. //
  7. //    Copyright 1992-94 Microworks Sydney, Australia.
  8. //
  9. //  STOOLBAR.CPP
  10.  
  11. #include <owl\owlpch.h>
  12. #include <sfx\sfx200.h>
  13. #include <sfx\stoolbar.h>
  14.  
  15. DEFINE_RESPONSE_TABLE1(TSFXToolbar, TWindow)
  16.     EV_WM_PAINT,
  17. END_RESPONSE_TABLE;
  18.  
  19. //    constructor for a TSFXToolbar object
  20.  
  21. TSFXToolbar::TSFXToolbar(TWindow*        parent,
  22.                          int             id,
  23.                          const char far* title,
  24.                          int x, int y,
  25.                          BOOL            isChild,
  26.                          TModule*        module)
  27.     :TWindow(parent, title, module)
  28. {
  29.     if (isChild)
  30.     {
  31.         Attr.Style = (WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP);
  32.         Attr.Id = id;
  33.     }
  34.     else
  35.     {
  36.         Attr.Style = (WS_POPUPWINDOW | WS_CAPTION | WS_VISIBLE | MTB_3DFRAME);
  37.     }
  38.     Attr.X = x;
  39.     Attr.Y = y;
  40. }
  41.  
  42. //    constructor for a TSFXToolbar resource object
  43.  
  44. TSFXToolbar::TSFXToolbar(TWindow* parent, int resourceId, TModule* module)
  45.     :TWindow(parent, 0, module)
  46. {
  47.     SetFlag(wfFromResource);
  48.     memset(&Attr, 0x0, sizeof(Attr));
  49.     Attr.Id = resourceId;
  50. }
  51.  
  52. char far*
  53. TSFXToolbar::GetClassName()
  54. {
  55.     return "SFXTOOLBAR";
  56. }
  57.  
  58. int
  59. TSFXToolbar::GetId()
  60. {
  61.     return Attr.Id;
  62. }
  63.  
  64. void
  65. TSFXToolbar::GetTitle(char far* str)
  66. {
  67.     HGLOBAL hText = (HGLOBAL)GetWindowWord(4);
  68.     if (hText)
  69.     {
  70.         char* title = (char*)GlobalLock(hText);
  71.         lstrcpyn(str, title, lstrlen(title) + 1);
  72.         GlobalUnlock(hText);
  73.     }
  74. }
  75.  
  76. void
  77. TSFXToolbar::AlignToolbar()
  78. {
  79.     HandleMessage(WM_ALIGNTOOLBAR, 0, 0);
  80. }
  81.  
  82. UINT
  83. TSFXToolbar::GetCheck(int toolId)
  84. {
  85.     return (UINT)HandleMessage(WM_GETCHECK, toolId, 0);
  86. }
  87.  
  88. void
  89. TSFXToolbar::CheckTool(int toolId)
  90. {
  91.     HandleMessage(WM_SETCHECK, toolId, 1);
  92. }
  93.  
  94. void
  95. TSFXToolbar::UncheckTool(int toolId)
  96. {
  97.     HandleMessage(WM_SETCHECK, toolId, 0);
  98. }
  99.  
  100. BOOL
  101. TSFXToolbar::IsToolEnabled(int toolId)
  102. {
  103.     return ::IsWindowEnabled(GetDlgItem(toolId));
  104. }
  105.  
  106. void
  107. TSFXToolbar::EnableTool(int toolId, BOOL enabled)
  108. {
  109.     if (enabled && !IsToolEnabled(toolId))
  110.     {
  111.         ::EnableWindow(GetDlgItem(toolId), TRUE);
  112.         ::InvalidateRect(GetDlgItem(toolId), NULL, TRUE);
  113.     }
  114.     else
  115.     if (!enabled && IsToolEnabled(toolId))
  116.     {
  117.         ::EnableWindow(GetDlgItem(toolId), FALSE);
  118.         ::InvalidateRect(GetDlgItem(toolId), NULL, TRUE);
  119.     }
  120. }
  121.  
  122. void
  123. TSFXToolbar::GetText(char far* str)
  124. {
  125.     ::GetWindowText(StatusWindow(), str, sizeof(str));
  126. }
  127.  
  128. void
  129. TSFXToolbar::SetText(const char far* str)
  130. {
  131.     if (((Attr.Style & 0xF00) != MTB_LEFT) && ((Attr.Style & 0xF00) != MTB_RIGHT) &&
  132.         ((Attr.Style & 0xF00) != MTB_FLOAT))
  133.     {
  134.         ::SetWindowText(StatusWindow(), str);
  135.     }
  136. }
  137.  
  138. void
  139. TSFXToolbar::SetTool(int newId, int toolId)
  140. {
  141.     HandleMessage(WM_SETBITMAP, newId, toolId);
  142. }
  143.  
  144. void
  145. TSFXToolbar::SetFont(HFONT font)
  146. {
  147.     ::SendMessage(StatusWindow(), WM_SETFONT, (UINT)font, 1);
  148. }
  149.  
  150. HWND
  151. TSFXToolbar::StatusWindow()
  152. {
  153.     return (HWND)GetWindowWord(MTB_WNDSTATIC);
  154. }
  155.  
  156. void
  157. TSFXToolbar::EvPaint()
  158. {
  159.     DefaultProcessing();
  160. }
  161.  
  162. IMPLEMENT_STREAMABLE1(TSFXToolbar, TWindow);
  163.  
  164. void*
  165. TSFXToolbar::Streamer::Read(ipstream& is, uint32 /*version*/) const
  166. {
  167.     TSFXToolbar* o = GetObject();
  168.     ReadVirtualBase((TWindow*)o, is);
  169.     o->Title = is.freadString();
  170.     return o;
  171. }
  172.  
  173. void
  174. TSFXToolbar::Streamer::Write(opstream& os) const
  175. {
  176.     char str[256];
  177.  
  178.     TSFXToolbar* o = GetObject();
  179.     WriteVirtualBase((TWindow*) o, os);
  180.     o->GetTitle(str);
  181.     os.fwriteString(str);
  182. }
  183.  
  184.  
  185.