home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c083 / 21.ddi / VBDIALOG.PAK / VBDIALOG.C < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-02  |  3.0 KB  |  127 lines

  1. // Borland C++ - (C) Copyright 1993 by Borland International
  2. //
  3. //  Windows VBX Example - C/C++ Version
  4. //
  5. #include <windows.h>
  6. #pragma hdrstop
  7. #include <bivbx.h>
  8. #include "vbdialog.h"
  9.  
  10. // some useful macros for working with VBX controls
  11. #define VBXGetDlgItem(w,i)          VBXGetHctl(GetDlgItem(w,i))
  12. #define VBXSetPropByName(c,n,v)     VBXSetProp(c,VBXGetPropIndex(c,n),v)
  13. #define VBXGetPropByName(c,n,v)     VBXGetProp(c,VBXGetPropIndex(c,n),v)
  14.  
  15.  
  16. static HINSTANCE hInst;
  17.  
  18. void SamplesEvent( VBXEVENT FAR * lpEvent )
  19. {
  20.   LONG val;
  21.   switch( lpEvent->ID )
  22.   {
  23.     case IDC_BIPICT3:
  24.       if( ! lstrcmpi( lpEvent->EventName, "DragDrop" ) )
  25.         if( VBXGetPropByName(VBX_EVENTARGNUM(lpEvent,HCTL,0),"Picture",&val) )
  26.           VBXSetPropByName( lpEvent->Control, "Picture", val );
  27.       break;
  28.     case IDC_BIPICT1:
  29.     case IDC_BIPICT2:
  30.       if( ! lstrcmpi( lpEvent->EventName, "DragDrop" ) )
  31.         MessageBeep(0);
  32.       break;
  33.   }
  34. }
  35.  
  36. void SamplesTimer( HWND hWnd, int iSwitch, int iGauge )
  37. {
  38.   HCTL hCtlSwitch = VBXGetDlgItem(hWnd,iSwitch);
  39.   HCTL hCtlGauge  = VBXGetDlgItem(hWnd,iGauge);
  40.  
  41.   LONG on  = 0;
  42.   LONG val = 0;
  43.  
  44.   if( VBXGetPropByName( hCtlSwitch, "On", &on ) && on )
  45.     if( VBXGetPropByName( hCtlGauge, "Value", &val ) )
  46.       VBXSetPropByName( hCtlGauge, "Value", (LONG) ( val + 5 ) % 100 );
  47. }
  48.  
  49. LONG FAR PASCAL    SamplesDialog
  50. (
  51. HWND hWnd,
  52. WORD wMsg,
  53. WORD wParam,
  54. LONG lParam
  55. )
  56. {
  57.   // process the message
  58.   switch( wMsg )
  59.   {
  60.     // process command from one of the child controls
  61.     case WM_COMMAND:
  62.       switch( wParam )
  63.       {
  64.         // ok or cancel, so end the dialog
  65.         case IDOK:
  66.         case IDCANCEL:
  67.           EndDialog( hWnd, 0 );
  68.           break;
  69.       }
  70.       break;
  71.  
  72.     // process VBX event
  73.     case WM_VBXFIREEVENT:
  74.       SamplesEvent( (VBXEVENT FAR *)lParam );
  75.       break;
  76.       
  77.     // initialize the dialog
  78.     case WM_INITDIALOG:
  79.       VBXInitDialog( hWnd, hInst, "Samples" );
  80.       SetTimer( hWnd, 0, 0, 0 );
  81.       return FALSE;
  82.  
  83.     // timer tick
  84.     case WM_TIMER:
  85.       SamplesTimer( hWnd, IDC_BISWITCH1, IDC_BIGAUGE1 );
  86.       SamplesTimer( hWnd, IDC_BISWITCH2, IDC_BIGAUGE2 );
  87.       SamplesTimer( hWnd, IDC_BISWITCH3, IDC_BIGAUGE3 );
  88.       SamplesTimer( hWnd, IDC_BISWITCH4, IDC_BIGAUGE4 );
  89.       break;
  90.   }
  91.   return FALSE;
  92. }
  93.  
  94. // Turn off warning: Parameter * is never used in function WinMain...
  95. #pragma argsused
  96.  
  97. int PASCAL WinMain
  98. (
  99. HINSTANCE hInstance,
  100. HINSTANCE hPrevInstance,
  101. LPSTR     lpszCmdLine,
  102. int       nCmdShow
  103. )
  104. {
  105.   // save the instance
  106.   hInst = hInstance;
  107.  
  108.   // initialize the VBX library
  109.   if( ! VBXInit( hInstance, "Thunder" ) )
  110.   {
  111.     MessageBox( NULL, "Can't init VBX library!\n", NULL, MB_OK | MB_APPLMODAL );
  112.     return 0;
  113.   }
  114.   
  115.   // load the samples dialog box
  116.   if( DialogBox( hInstance, "Samples", NULL, (FARPROC)SamplesDialog ) == -1 )
  117.     MessageBox( NULL, "Can't load dialog box!\n", NULL, MB_OK | MB_APPLMODAL );
  118.  
  119.   // terminate the VBX library
  120.   VBXTerm();
  121.   
  122.   // end of program
  123.   return 0;
  124. }
  125.  
  126. 
  127.