home *** CD-ROM | disk | FTP | other *** search
/ Total C++ 2 / TOTALCTWO.iso / borland / notify.pak / NOTIFY.CPP < prev    next >
C/C++ Source or Header  |  1997-05-06  |  5KB  |  218 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows
  3. // Copyright (c) 1991, 1995 by Borland International, All Rights Reserved
  4. //----------------------------------------------------------------------------
  5. #include <owl/pch.h>
  6. #include <owl/applicat.h>
  7. #include <owl/dialog.h>
  8. #include <owl/framewin.h>
  9. #include <owl/button.h>
  10. #include <owl/menu.h>
  11. #include <owl/static.h>
  12. #include <stdio.h>
  13. #include "notify.h"
  14.  
  15. //
  16. // class TBeepButton
  17. // ~~~~~ ~~~~~~~~~~~
  18. // Make a button that beeps when pressed.
  19. //
  20. class TBeepButton : public TButton {
  21.   public:
  22.     TBeepButton(TWindow* parent, int resId)
  23.     :
  24.       TButton(parent, resId)
  25.     {
  26.     }
  27.  
  28.     // child id notification handled at the child
  29.     //
  30.     void BNClicked();  // BN_CLICKED
  31.  
  32.   DECLARE_RESPONSE_TABLE(TBeepButton);
  33. };
  34.  
  35. DEFINE_RESPONSE_TABLE1(TBeepButton, TButton)
  36.   EV_NOTIFY_AT_CHILD(BN_CLICKED, BNClicked),
  37. END_RESPONSE_TABLE;
  38.  
  39. void
  40. TBeepButton::BNClicked()
  41. {
  42.   MessageBeep(0);
  43.   DefaultProcessing();  // pass it along to parent.
  44. }
  45.  
  46. //
  47. // class TTestButton
  48. // ~~~~~ ~~~~~~~~~~~
  49. // Button that sends parent it's own notification code.
  50. //
  51. class TTestButton : public TButton {
  52.   public:
  53.     TTestButton(TWindow* parent, int resId)
  54.     :
  55.       TButton(parent, resId)
  56.     {
  57.     }
  58.  
  59.     // child id notification handled at the child
  60.     //
  61.     void BNClicked();  // BN_CLICKED
  62.  
  63.     static uint BN_USER_MSG1;       // notification code.
  64.  
  65.   DECLARE_RESPONSE_TABLE(TTestButton);
  66. };
  67.  
  68. DEFINE_RESPONSE_TABLE1(TTestButton, TButton)
  69.   EV_NOTIFY_AT_CHILD(BN_CLICKED, BNClicked),
  70. END_RESPONSE_TABLE;
  71.  
  72. uint TTestButton::BN_USER_MSG1 = 400;
  73.  
  74. //
  75. // One method of notifying the parent of an event.
  76. //
  77. void
  78. TTestButton::BNClicked()
  79. {
  80.   Parent->SendNotification(Attr.Id, BN_USER_MSG1, *this);
  81. }
  82.  
  83.  
  84. //
  85. // class TBeepDialog
  86. // ~~~~~ ~~~~~~~~~~~
  87. class TBeepDialog : public TDialog {
  88.   public:
  89.     TBeepDialog(TWindow* parent, TResId resId);
  90.  
  91.     void    HandleButtonMsg();      // ID_BUTTON  push button command
  92.     void    HandleButton1();        // ID_BUTTON1 push button command
  93.     void    HandleButton2(WPARAM);  // ID_BUTTON2 push button command
  94.     void    HandleButton3(WPARAM);  // ID_BUTTON3 push button command
  95.     void    HandleButton4();        // ID_BUTTON4 push button command
  96.  
  97.     int           NumClicks;        // number of times BeepButton was pressed.
  98.     TBeepButton*  BeepButton;       // Different buttons...
  99.     TButton*      Button1;
  100.     TTestButton*  Button2;
  101.     TButton*      Button3;
  102.     TButton*      Button4;
  103.     TStatic*      Static;
  104.  
  105.   DECLARE_RESPONSE_TABLE(TBeepDialog);
  106. };
  107.  
  108. DEFINE_RESPONSE_TABLE1(TBeepDialog, TDialog)
  109.   EV_BN_CLICKED(ID_BUTTON, HandleButtonMsg),
  110.   EV_COMMAND(ID_BUTTON4, HandleButton4),
  111.   EV_CHILD_NOTIFY(ID_BUTTON1, BN_CLICKED, HandleButton1),
  112.   EV_CHILD_NOTIFY_AND_CODE(ID_BUTTON2, TTestButton::BN_USER_MSG1, HandleButton2),
  113.   EV_CHILD_NOTIFY_ALL_CODES(ID_BUTTON3, HandleButton3),
  114. END_RESPONSE_TABLE;
  115.  
  116. TBeepDialog::TBeepDialog(TWindow* parent, TResId resId)
  117. :
  118.   TDialog(parent, resId)
  119. {
  120.   NumClicks = 0;
  121.   BeepButton = new TBeepButton(this, ID_BUTTON);
  122.   Button1 = new TButton(this, ID_BUTTON1);
  123.   Button2 = new TTestButton(this, ID_BUTTON2);
  124.   Button3 = new TButton(this, ID_BUTTON3);
  125.   Button4 = new TButton(this, ID_BUTTON4);
  126.   Static = new TStatic(this, ID_STATIC);
  127. }
  128.  
  129. //
  130. // Handle BN_CLICKED from 'BeepButton'.  Display the number of times it has
  131. // been pressed.
  132. //
  133. void
  134. TBeepDialog::HandleButtonMsg()
  135. {
  136.   char text[6];
  137.   sprintf(text, "%d", ++NumClicks);
  138.   Static->SetText(text);
  139. }
  140.  
  141. //
  142. // Handle BN_CLICKED from 'Button1'.
  143. //
  144. void
  145. TBeepDialog::HandleButton1()
  146. {
  147.   MessageBox("Button1", "Pressed!", MB_OK);
  148. }
  149.  
  150. //
  151. // Handle BN_USER_MSG1 from 'Button2'.
  152. //
  153. void
  154. TBeepDialog::HandleButton2(WPARAM)
  155. {
  156.   MessageBox("Button2", "Pressed!", MB_OK);
  157. }
  158.  
  159. //
  160. // Handle BN_CLICKED from 'Button3'.
  161. //
  162. void
  163. TBeepDialog::HandleButton3(WPARAM)
  164. {
  165.   MessageBox("Button3", "Pressed!", MB_OK);
  166. }
  167.  
  168. //
  169. // Handle BN_CLICKED from 'Button4'.
  170. //
  171. void
  172. TBeepDialog::HandleButton4()
  173. {
  174.   MessageBox("Button4", "Pressed!", MB_OK);
  175. }
  176.  
  177.  
  178. //
  179. // class TTestApp
  180. // ~~~~~ ~~~~~~~~
  181.  
  182. class TTestApp : public TApplication {
  183.   public:
  184.     TTestApp()
  185.     :
  186.       TApplication()
  187.     {
  188.     }
  189.  
  190.     void InitMainWindow()
  191.     {
  192.       TFrameWindow* frame = new TFrameWindow(0, "Notification Tester");
  193.       frame->AssignMenu(IDM_COMMANDS);
  194.       SetMainWindow(frame);
  195.     }
  196.     void CmTest();  // CM_TEST  menu command handler
  197.  
  198.   DECLARE_RESPONSE_TABLE(TTestApp);
  199. };
  200.  
  201. DEFINE_RESPONSE_TABLE1(TTestApp, TApplication)
  202.   EV_COMMAND(CM_TEST, CmTest),
  203. END_RESPONSE_TABLE;
  204.  
  205. void
  206. TTestApp::CmTest()
  207. {
  208. //  (new TBeepDialog(MainWindow, IDD_TEST))->Create();
  209.   TBeepDialog(MainWindow, IDD_TEST).Execute();
  210. }
  211.  
  212. int
  213. OwlMain(int /*argc*/, char* /*argv*/ [])
  214. {
  215.   TTestApp app;
  216.   return app.Run();
  217. }
  218.