home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c082_122 / 7.ddi / OWLDEMOS.ZIP / MLBXTTST.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-10  |  3.4 KB  |  123 lines

  1. // ObjectWindows - (C) Copyright 1992 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, HINSTANCE hInstance, HINSTANCE 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");
  39.   ListBoxData->AddString("Carol");
  40.   ListBoxData->AddString("Marina");
  41.   ListBoxData->AddString("Stanley");
  42.   ListBoxData->AddString("Lynn");
  43.   ListBoxData->AddString("Laura");
  44.   ListBoxData->AddString("Dan");
  45.   ListBoxData->AddString("Mike");
  46.   ListBoxData->AddString("Latesh");
  47.   ListBoxData->AddString("Craig", TRUE);
  48.   ListBoxData->AddString("Danny");
  49.   ListBoxData->AddString("Spencer");
  50.   ListBoxData->AddString("Liang-Jye");
  51.   ListBoxData->AddString("Bradford", TRUE);
  52.   ListBoxData->AddString("Tayloe");
  53.   ListBoxData->AddString("Daniel");
  54.   ListBoxData->AddString("Cecile");
  55.   ListBoxData->AddString("Ken");
  56.   ListBoxData->AddString("Keimpe", TRUE);
  57.   ListBoxData->AddString("Julie");
  58.   ListBoxData->AddString("Scott");
  59.   ListBoxData->AddString("Mike");
  60.   ListBoxData->AddString("Rick");
  61.   ListBoxData->AddString("Pete");
  62.   ListBoxData->AddString("Eric");
  63.   ListBoxData->AddString("Lee");
  64.   ListBoxData->AddString("Chopin");
  65.   ListBoxData->AddString("Eli");
  66.   ListBoxData->AddString("Pat");
  67.   ListBoxData->AddString("Charles");
  68.  
  69.   // could be done by AddString instead.
  70.   ListBoxData->SelectString("Eric");
  71.  
  72.   TransferBuffer = &ListBoxData;
  73.   EnableKBHandler(); // so focus goes to ListBox, see also lboxtest.cpp
  74. }
  75.  
  76. TLBoxWindow::~TLBoxWindow()
  77. {
  78.   delete ListBoxData;
  79. }
  80.  
  81. void TLBoxWindow::HandleListBoxMsg(RTMessage Msg)
  82. {
  83.   Pchar TheStr;
  84.   WORD Pos = 0, Length, NumSelected;
  85.  
  86.   if ( Msg.LP.Hi == LBN_SELCHANGE )
  87.   {
  88.     ListBox->Transfer(&ListBoxData, TF_GETDATA);
  89.     NumSelected = ListBoxData->SelCount;
  90.     if ( NumSelected )
  91.     {
  92.       TheStr = new char[NumSelected * 10];
  93.       for ( int I = 0; I < NumSelected; I++ )
  94.       {
  95.         Length = ListBoxData->GetSelStringLength(I);
  96.         ListBoxData->GetSelString((LPSTR)&TheStr[Pos], Length + 1, I);
  97.         Pos += Length;
  98.         if ( I < NumSelected - 1 )
  99.           TheStr[Pos++] = '\n';
  100.       }
  101.       MessageBox(HWindow, TheStr, "You have selected:", MB_OK);
  102.       delete TheStr;
  103.     }
  104.     else
  105.       MessageBox(HWindow, "<No items are selected>",
  106.                  "You have selected:", MB_OK);
  107.   }
  108. }
  109.  
  110. void TTestApp::InitMainWindow()
  111. {
  112.   MainWindow = new TLBoxWindow();
  113. }
  114.  
  115. int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  116.   LPSTR lpCmdLine, int nCmdShow)
  117. {
  118.   TTestApp TestApp("List Box Transfer Tester", hInstance, hPrevInstance,
  119.     lpCmdLine, nCmdShow);
  120.   TestApp.Run();
  121.   return TestApp.Status;
  122. }
  123.