home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / peeper.pak / PEEPER.H < prev    next >
C/C++ Source or Header  |  1997-07-23  |  3KB  |  120 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows - (C) Copyright 1991, 1993 by Borland International
  3. //
  4. //   Peeper is a program that allows the user to select some windows and
  5. //   perform one or more actions on those windows.  Actions include:
  6. //      . Changing the window text (caption).
  7. //      . Sending messages.
  8. //
  9. //   The windows that are selected are put into a list which can be cleared
  10. //   at any time to start over.
  11. //
  12. //   To choose a window click on the 'Peep!' button and when the mouse if over
  13. //   a window that you want to choose, click the left mouse button.  To stop
  14. //   'peeping' click the right mouse button.  You can't peep Peeper.
  15. //----------------------------------------------------------------------------
  16. #if !defined(__PEEPER_H)
  17. #define __PEEPER_H
  18.  
  19. #include <owl\applicat.h>
  20. #include <owl\dialog.h>
  21. #include <classlib\vectimp.h>
  22. #include "peeper.rh"
  23.  
  24. //
  25. // global functions used with ForEach():
  26. //
  27. void SendWMSetText(HWND& hWnd, void* p);
  28. void SendSysMessage(HWND& hWnd, void* p);
  29. void SendWMMessage(HWND& hWnd, void* p);
  30.  
  31. //////////////////////////////////////////////////////////////////////
  32.  
  33. //
  34. // Handles the 'peeping' process by capturing, tracking and releasing
  35. // the mouse.
  36. //
  37. class TClientWindow : public TWindow {
  38.   public:
  39.     TClientWindow() : TWindow(0, "") {}
  40.  
  41.   protected:
  42.     void  DisplayWinInfo();
  43.     void  EvLButtonDown(UINT mod_keys, TPoint& point);
  44.     void  EvRButtonDown(UINT mod_keys, TPoint& point);
  45.  
  46.   DECLARE_RESPONSE_TABLE(TClientWindow);
  47. };
  48.  
  49. //////////////////////////////////////////////////////////////////////
  50.  
  51. // Transfer buffer for the messages dialog.
  52. struct MessagesTB {
  53.    MessagesTB()
  54.    {
  55.       MaxCB = MinCB = PaintCB = RestoreCB = PasteCB = CloseCB = FALSE;
  56.    }
  57.  
  58.    BOOL  MaxCB, MinCB, PaintCB, RestoreCB, PasteCB, CloseCB;
  59. };
  60.  
  61. //
  62. // Dialog that contains checkboxs that reprsent the messages the user wants
  63. // to send to the selected windows.
  64. //
  65. class TMessagesDialog : public TDialog {
  66.   public:
  67.     TMessagesDialog(TWindow* parent, MessagesTB* mtb)
  68.       : TDialog(parent, IDD_MESSAGES)
  69.     {
  70.       MaximizeCB = new TCheckBox(this, IDC_MAXIMIZE);
  71.       MinimizeCB = new TCheckBox(this, IDC_MINIMIZE);
  72.       PaintCB = new TCheckBox(this, IDC_PAINT);
  73.       RestoreCB = new TCheckBox(this, IDC_RESTORE);
  74.       PasteCB = new TCheckBox(this, IDC_PASTE);
  75.       CloseCB = new TCheckBox(this, IDC_CLOSE);
  76.       SetTransferBuffer(mtb);
  77.     }
  78.  
  79.   private:
  80.     TCheckBox*  MaximizeCB;
  81.     TCheckBox*  MinimizeCB;
  82.     TCheckBox*  PaintCB;
  83.     TCheckBox*  RestoreCB;
  84.     TCheckBox*  PasteCB;
  85.     TCheckBox*  CloseCB;
  86. };
  87.  
  88. //////////////////////////////////////////////////////////////////////
  89.  
  90. //
  91. // Peeper application. Handles most of the messages.
  92. //
  93. class TPeeper : public TApplication {
  94.   public:
  95.     TPeeper() : TApplication("Peeper") {}
  96.     ~TPeeper() { delete WindowList; }
  97.     
  98.     void  InitMainWindow();
  99.  
  100.   private:
  101.     TWindow*           Client;
  102.     TStatic*           SelWinText;
  103.     TListBox*          SelectedWindows;
  104.     TControlBar*       Actions;
  105.     TMessageBar*       StatusLine;
  106.     TCVectorImp<HWND>* WindowList;
  107.  
  108.     void  CmPeeping();
  109.     void  CmChangeCaption();
  110.     void  CmClearWindowList();
  111.     void  CmSendMessage();
  112.     void  CmHelp();
  113.  
  114.     friend class TClientWindow;
  115.  
  116.   DECLARE_RESPONSE_TABLE(TPeeper);
  117. };
  118.  
  119. #endif
  120.