home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / tybc4 / xped3 / xpd3mdic.cpp < prev    next >
C/C++ Source or Header  |  1994-02-13  |  5KB  |  178 lines

  1. /*  Project xped3
  2.     
  3.     Copyright ⌐ 1993. All Rights Reserved.
  4.  
  5.     SUBSYSTEM:    xped3.exe Application
  6.     FILE:         xpd3mdic.cpp
  7.     AUTHOR:       
  8.  
  9.  
  10.     OVERVIEW
  11.     ========
  12.     Source file for implementation of xped3MDIClient (TMDIClient).      
  13. */
  14.  
  15.  
  16. #include <owl\owlpch.h>
  17. #pragma hdrstop
  18.  
  19. #include <dir.h>
  20.  
  21. #include "xped3app.h"
  22. #include "xpd3mdic.h"
  23. #include "xpd3mdi1.h"
  24.  
  25.  
  26. //{{xped3MDIClient Implementation}}
  27.  
  28.  
  29. //
  30. // Build a response table for all messages/commands handled
  31. // by xped3MDIClient derived from TMDIClient.
  32. //
  33. DEFINE_RESPONSE_TABLE1(xped3MDIClient, TMDIClient)
  34. //{{xped3MDIClientRSP_TBL_BEGIN}}
  35.     EV_COMMAND(CM_MDIFILENEW, CmFileNew),
  36.     EV_COMMAND(CM_MDIFILEOPEN, CmFileOpen),
  37. //{{xped3MDIClientRSP_TBL_END}}
  38. END_RESPONSE_TABLE;
  39.  
  40.  
  41. //////////////////////////////////////////////////////////
  42. // xped3MDIClient
  43. // ===========
  44. // Construction/Destruction handling.
  45.  xped3MDIClient::xped3MDIClient ()
  46.  : TMDIClient ()
  47. {
  48.     ChildCount = 0;
  49.  
  50.     // INSERT>> Your constructor code here.
  51.  
  52. }
  53.  
  54.  
  55.  xped3MDIClient::~xped3MDIClient ()
  56. {
  57.     Destroy();
  58.  
  59.     // INSERT>> Your destructor code here.
  60.  
  61. }
  62.  
  63.  
  64. //////////////////////////////////////////////////////////
  65. // xped3MDIClient
  66. // ===========
  67. // MDIClient site initialization.
  68. void xped3MDIClient::SetupWindow ()
  69. {
  70.     // Default SetUpWindow processing.
  71.     TMDIClient::SetupWindow ();
  72.  
  73.     // Common file file flags and filters for Open/Save As dialogs.  Filename and directory are
  74.     // computed in the member functions CmFileOpen, and CmFileSaveAs.
  75.     FileData.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
  76.     FileData.SetFilter("All Files (*.*)|*.*|");
  77.  
  78. }
  79.  
  80.  
  81. //////////////////////////////////////////////////////////
  82. // xped3MDIClient
  83. // ===========
  84. // Menu File New command
  85. void xped3MDIClient::CmFileNew ()
  86. {
  87.     char    title[255];
  88.  
  89.     // Generate a title for the MDI child window.
  90.     wsprintf(title, "%d", ChildCount++);
  91.  
  92.     xped3MDIChild* child = new xped3MDIChild(*this, title, 0);
  93.  
  94.     // Associate ICON w/ this child window.
  95.     child->SetIcon(GetApplication(), IDI_DOC);
  96.  
  97.     // If the current active MDI child is maximize then this one should be also.
  98.     xped3MDIChild *curChild = (xped3MDIChild *)GetActiveMDIChild();
  99.     if (curChild && (curChild->GetWindowLong(GWL_STYLE) & WS_MAXIMIZE))
  100.         child->Attr.Style |= WS_MAXIMIZE;
  101.  
  102.     child->Create();
  103. }
  104.  
  105.  
  106. void xped3MDIClient::OpenFile (const char *fileName)
  107. {
  108.     if (fileName)
  109.         lstrcpy(FileData.FileName, fileName);
  110.  
  111.     //
  112.     // Create a MDIChild window whose client is TEditFile.
  113.     //
  114.     xped3MDIChild* child = new xped3MDIChild(*this, "", new TEditFile(0, 0, 0, 0, 0, 0, 0, FileData.FileName));
  115.  
  116.     // Associate ICON w/ this child window.
  117.     child->SetIcon(GetApplication(), IDI_DOC);
  118.  
  119.     // If the current active MDI child is maximize then this one should be also.
  120.     xped3MDIChild *curChild = (xped3MDIChild *)GetActiveMDIChild();
  121.     if (curChild && (curChild->GetWindowLong(GWL_STYLE) & WS_MAXIMIZE))
  122.         child->Attr.Style |= WS_MAXIMIZE;
  123.  
  124.     child->Create();
  125.  
  126.     LoadTextFile();
  127. }
  128.  
  129.  
  130. //////////////////////////////////////////////////////////
  131. // xped3MDIClient
  132. // ===========
  133. // Menu File Open command
  134. void xped3MDIClient::CmFileOpen ()
  135. {
  136.     //
  137.     // Display standard Open dialog box to select a file name.
  138.     //
  139.     *FileData.FileName = 0;
  140.     if (TFileOpenDialog(this, FileData).Execute() == IDOK)
  141.         OpenFile();
  142. }
  143.  
  144.  
  145. // Used by ListBox client to read a text file into the list box.
  146. void xped3MDIClient::LoadTextFile ()
  147. {
  148.     char            buf[255+1];
  149.     ifstream        *inStream;
  150.  
  151.     xped3MDIChild  *curChild = (xped3MDIChild *)GetActiveMDIChild();
  152.     TListBox        *client = TYPESAFE_DOWNCAST(curChild->GetClientWindow(), TListBox);
  153.  
  154.     // Only work if the client class is a TListBox.
  155.     if (client) {
  156.         client->ClearList();
  157.         inStream = new ifstream(FileData.FileName);
  158.         while (inStream->good()) {
  159.             inStream->getline(buf, sizeof(buf) - 1);
  160.             if (inStream->good())
  161.                 client->AddString(buf);
  162.         }
  163.  
  164.         // Return an error message if we had a stream error and it wasn't the eof.
  165.         if (inStream->bad() && !inStream->eof()) {
  166.             string msgTemplate(*GetModule(), IDS_UNABLEREAD);
  167.             char*  msg = new char[MAXPATH + msgTemplate.length()];
  168.             wsprintf(msg, msgTemplate.c_str(), *FileData.FileName);
  169.             MessageBox(msg, GetApplication()->GetName(), MB_ICONEXCLAMATION | MB_OK);
  170.             delete msg;
  171.         }
  172.  
  173.         delete inStream;
  174.     }
  175. }
  176.  
  177.  
  178.