home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / VBXCTL.PAK / VBXCTLX.CPP < prev    next >
C/C++ Source or Header  |  1995-08-29  |  4KB  |  148 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows - (C) Copyright 1993 by Borland International
  3. //----------------------------------------------------------------------------
  4. #include <owl\owlpch.h>
  5. #include <owl\applicat.h>
  6. #include <owl\dialog.h>
  7. #include <owl\framewin.h>
  8. #include <owl\vbxctl.h>
  9. #include "vbxctlx.h"
  10.  
  11. //#define USE_RESOURCE_DLL
  12.  
  13. class TTestDialog : public TDialog, public TVbxEventHandler {
  14.   public:
  15.     TTestDialog(TWindow* parent, const char* name, TModule* module=0);
  16.  
  17.   protected:
  18.     void SetupWindow();
  19.  
  20.     // OWL Aliases for VBX controls in dialog
  21.     //
  22.     TVbxControl* Switch1;
  23.     TVbxControl* Switch2;
  24.     TVbxControl* Switch3;
  25.     TVbxControl* Switch4;
  26.     TVbxControl* Gauge1;
  27.     TVbxControl* Gauge2;
  28.     TVbxControl* Gauge3;
  29.     TVbxControl* Gauge4;
  30.  
  31.     void EvTimer(UINT timerId);
  32.     void EvDropSrc(VBXEVENT far* event);
  33.     void EvDropDest(VBXEVENT far* event);
  34.     void UpdateGauge(TVbxControl* sw, TVbxControl* ga);
  35.  
  36.   DECLARE_RESPONSE_TABLE(TTestDialog);
  37. };
  38.  
  39. DEFINE_RESPONSE_TABLE2(TTestDialog, TDialog, TVbxEventHandler)
  40.   EV_WM_TIMER,
  41.   EV_VBXEVENTNAME(IDC_BIPICT1,"DragDrop",EvDropSrc),
  42.   EV_VBXEVENTNAME(IDC_BIPICT2,"DragDrop",EvDropSrc),
  43.   EV_VBXEVENTNAME(IDC_BIPICT3,"DragDrop",EvDropDest),
  44. END_RESPONSE_TABLE;
  45.  
  46. TTestDialog::TTestDialog(TWindow* parent, const char* name, TModule* module)
  47.   : TDialog(parent, name, module)
  48. {
  49.   Switch1 = new TVbxControl(this, IDC_BISWITCH1);
  50.   Switch2 = new TVbxControl(this, IDC_BISWITCH2);
  51.   Switch3 = new TVbxControl(this, IDC_BISWITCH3);
  52.   Switch4 = new TVbxControl(this, IDC_BISWITCH4);
  53.   Gauge1  = new TVbxControl(this, IDC_BIGAUGE1);
  54.   Gauge2  = new TVbxControl(this, IDC_BIGAUGE2);
  55.   Gauge3  = new TVbxControl(this, IDC_BIGAUGE3);
  56.   Gauge4  = new TVbxControl(this, IDC_BIGAUGE4);
  57. }
  58.  
  59. void
  60. TTestDialog::SetupWindow()
  61. {
  62.   TDialog::SetupWindow();
  63.   SetTimer(1, 1);  // As fast as possible
  64. }
  65.  
  66. void
  67. TTestDialog::EvTimer(UINT /*timerId*/)
  68. {
  69.   UpdateGauge(Switch1, Gauge1);
  70.   UpdateGauge(Switch2, Gauge2);
  71.   UpdateGauge(Switch3, Gauge3);
  72.   UpdateGauge(Switch4, Gauge4);
  73. }
  74.  
  75. void
  76. TTestDialog::UpdateGauge(TVbxControl *sw, TVbxControl* ga)
  77. {
  78.   BOOL on=FALSE;
  79.   int val=0;
  80.   if( sw->GetProp("On", on) && on )
  81.     if( ga->GetProp("Value", val) )
  82.       ga->SetProp("Value",  (val + 5)  % 100);
  83. }
  84.  
  85. void
  86. TTestDialog::EvDropSrc(VBXEVENT far * /*event*/)
  87. {
  88.   MessageBeep(0);
  89. }
  90.  
  91. void
  92. TTestDialog::EvDropDest(VBXEVENT far * event)
  93. {
  94.   long pic;
  95.   if (VBXGetPropByName(VBX_EVENTARGNUM(event,HCTL,0), "Picture", &pic))
  96.     VBXSetPropByName(event->Control, "Picture", pic);
  97. }
  98.  
  99. //----------------------------------------------------------------------------
  100.  
  101. class TTestApp : public TApplication {
  102.   public:
  103.     TTestApp() : TApplication() {}
  104.    ~TTestApp() {delete ResModule;}
  105.  
  106.   protected:
  107.     void InitMainWindow() {
  108.       MainWindow = new TFrameWindow(0, "Dialog Tester", 0);
  109.       MainWindow->AssignMenu("COMMANDS");
  110. #if defined(USE_RESOURCE_DLL)
  111.       ResModule = new TModule("resource.dll");
  112. # if 1
  113.       VBXEnableDLL(*this, *ResModule);
  114. # else
  115.       WNDCLASS wc;
  116.       GetClassInfo("VBCONTROL", &wc);
  117.       wc.hInstance = *ResModule;
  118.       RegisterClass(&wc);
  119. # endif
  120. #else
  121.       ResModule = 0;
  122. #endif
  123.     }
  124.     void CmTest() {TTestDialog(MainWindow, "SAMPLES", ResModule).Execute();}
  125.  
  126.   private:
  127.     TModule* ResModule;
  128.  
  129.   DECLARE_RESPONSE_TABLE(TTestApp);
  130. };
  131.  
  132. DEFINE_RESPONSE_TABLE(TTestApp)
  133.   EV_COMMAND(CM_TEST, CmTest),
  134. END_RESPONSE_TABLE;
  135.  
  136. int
  137. OwlMain(int, char**)
  138. {
  139.   try {
  140.     TBIVbxLibrary vbxLib;     // constructing this loads & inits the library
  141.     return TTestApp().Run();
  142.   }
  143.   catch (xmsg& x) {
  144.     ::MessageBox(0, x.why().c_str(), "OWL Examples", MB_OK);
  145.     return -1;
  146.   }
  147. }
  148.