home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / tybc4 / commdlg3.cpp < prev    next >
C/C++ Source or Header  |  1997-07-29  |  4KB  |  185 lines

  1. /*
  2.   Program to test the Find and Replace common dialog boxes.
  3. */
  4.  
  5. #include <owl\applicat.h>
  6. #include <owl\framewin.h>
  7. #include <owl\findrepl.h>
  8. #include "commdlg3.h"
  9. #include <stdio.h>
  10. #include <string.h>
  11.  
  12. const int MaxStrLen = 31;
  13. const int MaxLongStrLen = 1024;
  14.  
  15. // declare the custom application class as
  16. // a subclass of TApplication
  17. class TWinApp : public TApplication
  18. {
  19. public:
  20.   TWinApp() : TApplication() {}
  21.  
  22. protected:
  23.   virtual void InitMainWindow();
  24. };
  25.  
  26. // expand the functionality of TWindow by
  27. // deriving class TMainWindow
  28. class TMainWindow : public TWindow
  29. {
  30. public:
  31.  
  32.   TMainWindow();
  33.  
  34. protected:
  35.  
  36.   TFindReplaceDialog::TData FRdata;
  37.   TFindDialog* pFindDlg;
  38.   TReplaceDialog* pReplaceDlg;
  39.  
  40.   // handle invoking the Find dialog box
  41.   void CMFind();
  42.  
  43.   // handle clicking the Find Next button
  44.   LRESULT EvFindMsg(WPARAM, LPARAM);
  45.  
  46.   // handle the Replace menu item
  47.   void CMReplace();
  48.  
  49.   // handle exiting the program
  50.   void CMExit();
  51.  
  52.   // handle closing the window
  53.   virtual BOOL CanClose();
  54.  
  55.   // write "TRUE" or "FALSE" in string
  56.   void BoolToStr(DWORD Flag, char* s);
  57.  
  58.   // declare the message map macro
  59.   DECLARE_RESPONSE_TABLE(TMainWindow);
  60.  
  61. };
  62.  
  63. DEFINE_RESPONSE_TABLE1(TMainWindow, TWindow)
  64.   EV_COMMAND(CM_FIND, CMFind),
  65.   EV_COMMAND(CM_REPLACE, CMReplace),
  66.   EV_COMMAND(CM_EXIT, CMExit),
  67.   EV_REGISTERED(FINDMSGSTRING, EvFindMsg),
  68. END_RESPONSE_TABLE;
  69.  
  70. TMainWindow::TMainWindow()
  71.     : TWindow(0, 0, 0)
  72. {
  73.   pFindDlg = NULL;
  74.   pReplaceDlg = NULL;
  75. }
  76.  
  77. void TMainWindow::CMFind()
  78. {
  79.   if (!pFindDlg && !pReplaceDlg) {
  80.      FRdata.Flags |= FR_DOWN;
  81.      pFindDlg = new TFindDialog(this, FRdata);
  82.      pFindDlg->Create();
  83.   }
  84. }
  85.  
  86. LRESULT TMainWindow::EvFindMsg(WPARAM, LPARAM lParam)
  87. {
  88.   char s[256];
  89.   char s2[11];
  90.   if (pFindDlg) {
  91.      pFindDlg->UpdateData(lParam);
  92.      // is the dialog box still opened
  93.      if (!(FRdata.Flags & FR_DIALOGTERM)) {
  94.         strcpy(s, "Find String: ");
  95.         strcat(s, FRdata.FindWhat);
  96.         strcat(s, "\nSearch Down: ");
  97.         BoolToStr(DWORD(FRdata.Flags & FR_DOWN), s2);
  98.         strcat(s, s2);
  99.         strcat(s, "Match Case: ");
  100.         BoolToStr(DWORD(FRdata.Flags & FR_MATCHCASE), s2);
  101.         strcat(s, s2);
  102.         strcat(s, "Whole Word: ");
  103.         BoolToStr(DWORD(FRdata.Flags & FR_WHOLEWORD), s2);
  104.         strcat(s, s2);
  105.         MessageBox(s, "Find Dialog Box Data",
  106.                       MB_OK | MB_ICONINFORMATION);
  107.      }
  108.      else
  109.         pFindDlg = NULL;
  110.   }
  111.  
  112.   if (pReplaceDlg) {
  113.      pReplaceDlg->UpdateData(lParam);
  114.      // is the dialog box still opened
  115.      if (!(FRdata.Flags & FR_DIALOGTERM)) {
  116.         strcpy(s, "Find String: ");
  117.         strcat(s, FRdata.FindWhat);
  118.         strcat(s, "\nReplace String: ");
  119.         strcat(s, FRdata.ReplaceWith);
  120.         strcat(s, "\nSearch Down: ");
  121.         BoolToStr(DWORD(FRdata.Flags & FR_DOWN), s2);
  122.         strcat(s, s2);
  123.         strcat(s, "Match Case: ");
  124.         BoolToStr(DWORD(FRdata.Flags & FR_MATCHCASE), s2);
  125.         strcat(s, s2);
  126.         strcat(s, "Whole Word: ");
  127.         BoolToStr(DWORD(FRdata.Flags & FR_WHOLEWORD), s2);
  128.         strcat(s, s2);
  129.         strcat(s, "Replace Button Clicked: ");
  130.         BoolToStr(DWORD(FRdata.Flags & FR_REPLACE), s2);
  131.         strcat(s, s2);
  132.         strcat(s, "Replace All Button Clicked: ");
  133.         BoolToStr(DWORD(FRdata.Flags & FR_REPLACEALL), s2);
  134.         strcat(s, s2);
  135.         MessageBox(s, "Replace Dialog Box Data",
  136.                       MB_OK | MB_ICONINFORMATION);
  137.      }
  138.      else
  139.         pReplaceDlg = NULL;
  140.   }
  141.   return 0;
  142. }
  143.  
  144. void TMainWindow::CMReplace()
  145. {
  146.   if (!pFindDlg && !pReplaceDlg) {
  147.      FRdata.Flags = FR_DOWN | FR_MATCHCASE | FR_WHOLEWORD;
  148.      pReplaceDlg = new TReplaceDialog(this, FRdata);
  149.      pReplaceDlg->Create();
  150.   }
  151. }
  152.  
  153. void TMainWindow::CMExit()
  154. {
  155.   Parent->SendMessage(WM_CLOSE);
  156. }
  157.  
  158. void TMainWindow::BoolToStr(DWORD Flag, char* s)
  159. {
  160.   strcpy(s, (Flag != 0) ? "TRUE\n" : "FALSE\n");
  161. }
  162.  
  163. BOOL TMainWindow::CanClose()
  164. {
  165.   return MessageBox("Want to close this application?",
  166.              "Query", MB_YESNO | MB_ICONQUESTION) == IDYES;
  167. }
  168.  
  169. void TWinApp::InitMainWindow()
  170. {
  171.   MainWindow = new TFrameWindow(0, "Simple Find/Replace Dialog Box Tester",
  172.                 new TMainWindow);
  173.   // load the menu resource
  174.   MainWindow->AssignMenu(TResId(IDM_MAINMENU));
  175.   // enable the keyboard handler
  176.   MainWindow->EnableKBHandler();
  177. }
  178.  
  179. int OwlMain(int /* argc */, char** /*argv[] */)
  180. {
  181.   TWinApp app;
  182.   return app.Run();
  183. }
  184.  
  185.