home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / draglb.zip / DEMOLB.CPP next >
Text File  |  1994-05-18  |  4KB  |  73 lines

  1. /******************************************************************************/
  2. /*                                                                            */
  3. /* This program demonstrates how to enable drag/drop support for a            */
  4. /* single select list box (i.e. IListBox).                                    */
  5. /*                                                                            */
  6. /******************************************************************************/
  7. #include <iapp.hpp>
  8. #include <icanvas.hpp>
  9. #include <idmhndlr.hpp>
  10. #include <iframe.hpp>
  11. #include <ilistbox.hpp>
  12.  
  13. #include "draglb.hpp"
  14.  
  15. void main()
  16. {
  17.   /*****************************************************************/
  18.   /* Create a frame window and a canvas object and make the canvas */
  19.   /* object the client.                                            */
  20.   /*****************************************************************/
  21.   IFrameWindow *pFrame  = new IFrameWindow( IFrameWindow::defaultStyle() );
  22.   ICanvas *pCanvas = new ICanvas( 1000, pFrame, pFrame );
  23.  
  24.   pFrame->setClient( pCanvas );
  25.  
  26.   /*****************************************************************/
  27.   /* Create 2 list box objects and populate both with list items.  */
  28.   /*****************************************************************/
  29.   IListBox *pLB1 = new IListBox( 2000, pCanvas, pCanvas,
  30.                                              IRectangle( 10, 70, 210, 370 ) );
  31.   IListBox *pLB2 = new IListBox( 2001, pCanvas, pCanvas,
  32.                                              IRectangle( 220,70,420,370 ) );
  33.  
  34.   pLB1->addAsLast( "LB1 Item 1" );   pLB2->addAsLast( "LB2 Item 1" );
  35.   pLB1->addAsLast( "LB1 Item 2" );   pLB2->addAsLast( "LB2 Item 2" );
  36.   pLB1->addAsLast( "LB1 Item 3" );   pLB2->addAsLast( "LB2 Item 3" );
  37.   pLB1->addAsLast( "LB1 Item 4" );   pLB2->addAsLast( "LB2 Item 4" );
  38.   pLB1->addAsLast( "LB1 Item 5" );   pLB2->addAsLast( "LB2 Item 5" );
  39.   pLB1->addAsLast( "LB1 Item 6" );   pLB2->addAsLast( "LB2 Item 6" );
  40.   pLB1->addAsLast( "LB1 Item 7" );   pLB2->addAsLast( "LB2 Item 7" );
  41.   pLB1->addAsLast( "LB1 Item 8" );   pLB2->addAsLast( "LB2 Item 8" );
  42.   pLB1->addAsLast( "LB1 Item 9" );   pLB2->addAsLast( "LB2 Item 9" );
  43.   pLB1->addAsLast( "LB1 Item 10" );  pLB2->addAsLast( "LB2 Item 10" );
  44.  
  45.   pLB1->select( 0 );  pLB2->select( 0 );
  46.  
  47.   /*****************************************************************/
  48.   /* Create a list box drag item provider, and use it for both     */
  49.   /* objects.                                                      */
  50.   /*****************************************************************/
  51.   LBProvider *pLBProvider = new LBProvider();
  52.   pLB1->setItemProvider( pLBProvider );
  53.   pLB2->setItemProvider( pLBProvider );
  54.  
  55.   /*****************************************************************/
  56.   /* Enable both objects as a source and a target for a drag       */
  57.   /* operation.                                                    */
  58.   /*****************************************************************/
  59.   IDMHandler::enableDragDropFor( pLB1 );
  60.   IDMHandler::enableDragDropFor( pLB2 );
  61.  
  62.   /*****************************************************************/
  63.   /* Run the demo                                                  */
  64.   /*                                                               */
  65.   /* Note:  Run 2 copies of the demo to show inter-process support.*/
  66.   /*****************************************************************/
  67.   pFrame->setDestroyOnClose( true );
  68.   pFrame->setFocus();
  69.   pFrame->show();
  70.  
  71.   IApplication::current().run();
  72. }
  73.