home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0040 - 0049 / ibm0040-0049 / ibm0040.tar / ibm0040 / BCPPOWL1.ZIP / OWLDEMOS.ZIP / MLBXTTST.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1991-08-28  |  3.3 KB  |  120 lines

  1. // ObjectWindows - (C) Copyright 1991 by Borland International
  2.  
  3. #include <owl.h>
  4. #include <listbox.h>
  5.  
  6. const WORD ID_LISTBOX = 101;
  7.  
  8. class TTestApp : public TApplication
  9. {
  10. public:
  11.   TTestApp(LPSTR AName, HANDLE hInstance, HANDLE hPrevInstance,
  12.     LPSTR lpCmdLine, int nCmdShow) 
  13.     : TApplication(AName, hInstance, hPrevInstance, lpCmdLine, nCmdShow) {};
  14.   virtual void InitMainWindow();
  15. };
  16.  
  17. class TLBoxWindow : public TWindow
  18. {
  19. public:
  20.   TListBox *ListBox;
  21.   PTListBoxData ListBoxData;
  22.  
  23.   TLBoxWindow();
  24.   ~TLBoxWindow();
  25.   virtual void HandleListBoxMsg(RTMessage Msg) =
  26.     [ID_FIRST + ID_LISTBOX];
  27. };
  28.  
  29. TLBoxWindow::TLBoxWindow() : TWindow(NULL, "Multiple-Selection List Box Transfer Tester")
  30. {
  31.   ListBox = new TListBox(this, ID_LISTBOX, 20, 20, 340, 300);
  32.   ListBox->Attr.Style |= LBS_MULTIPLESEL;
  33.   ListBoxData = new TListBoxData();
  34.   ListBox->EnableTransfer();
  35.  
  36.   ListBoxData->AddString("Nancy");
  37.   ListBoxData->AddString("Kathy");
  38.   ListBoxData->AddString("Robert",TRUE);
  39.   ListBoxData->AddString("Carol");
  40.   ListBoxData->AddString("Marina");
  41.   ListBoxData->AddString("Stanley");
  42.   ListBoxData->AddString("Lynn",TRUE);
  43.   ListBoxData->AddString("Laura");
  44.   ListBoxData->AddString("Dan",TRUE);
  45.   ListBoxData->AddString("Mike");
  46.   ListBoxData->AddString("Latesh");
  47.   ListBoxData->AddString("Danny");
  48.   ListBoxData->AddString("Spencer");
  49.   ListBoxData->AddString("Liang-Jye");
  50.   ListBoxData->AddString("Tayloe");
  51.   ListBoxData->AddString("Daniel");
  52.   ListBoxData->AddString("Cecile");
  53.   ListBoxData->AddString("Ken");
  54.   ListBoxData->AddString("Julie");
  55.   ListBoxData->AddString("Scott");
  56.   ListBoxData->AddString("Mike");
  57.   ListBoxData->AddString("Rick");
  58.   ListBoxData->AddString("Pete");
  59.   ListBoxData->AddString("Eric");
  60.   ListBoxData->AddString("Lee");
  61.   ListBoxData->AddString("Chopin");
  62.   ListBoxData->AddString("Eli");
  63.   ListBoxData->AddString("Pat");
  64.   ListBoxData->AddString("Charles");
  65.  
  66.   // could be done by AddString instead.
  67.   ListBoxData->SelectString("Eric"); 
  68.  
  69.   TransferBuffer = &ListBoxData;
  70.   EnableKBHandler(); // so focus goes to ListBox, see also lboxtest.cpp
  71. }
  72.  
  73. TLBoxWindow::~TLBoxWindow()
  74. {
  75.   delete ListBoxData;
  76. }
  77.  
  78. void TLBoxWindow::HandleListBoxMsg(RTMessage Msg)
  79. {
  80.   LPSTR TheStr;
  81.   WORD Pos = 0, Length, NumSelected;
  82.  
  83.   if ( Msg.LP.Hi == LBN_SELCHANGE )
  84.   {
  85.     ListBox->Transfer(&ListBoxData, TF_GETDATA);
  86.     NumSelected = ListBoxData->SelCount;
  87.     if ( NumSelected )
  88.     {
  89.       TheStr = new char[NumSelected * 10];
  90.       for ( int I = 0; I < NumSelected; I++ )
  91.       {
  92.         Length = ListBoxData->GetSelStringLength(I);
  93.         ListBoxData->GetSelString((LPSTR)&TheStr[Pos], Length + 1, I);
  94.         Pos += Length;
  95.         if ( I < NumSelected - 1 )
  96.           TheStr[Pos++] = '\n';
  97.       }
  98.       MessageBox(HWindow, TheStr, "You have selected:", MB_OK);
  99.       delete TheStr;
  100.     }
  101.     else
  102.       MessageBox(HWindow, "<No items are selected>", 
  103.                  "You have selected:", MB_OK);
  104.   }
  105. }
  106.  
  107. void TTestApp::InitMainWindow()
  108. {
  109.   MainWindow = new TLBoxWindow();
  110. }
  111.  
  112. int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
  113.   LPSTR lpCmdLine, int nCmdShow)
  114. {
  115.   TTestApp TestApp("List Box Transfer Tester", hInstance, hPrevInstance,
  116.     lpCmdLine, nCmdShow);
  117.   TestApp.Run();
  118.   return TestApp.Status;
  119. }
  120.