GUITEXT.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:6k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /*+==========================================================================
  2.   File:      GUITEXT.H
  3.   Summary:   Include file for the CGuiText C++ class. A GuiText is a C++
  4.              object that encapsulates and displays edited text in a
  5.              separate window. The text is edited in a standard Win32
  6.              multi-line edit control which is a child window occupying
  7.              the entire client area of a separate window. The separate
  8.              window is based on APPUTIL's CVirWindow. CGuiText is derived
  9.              from CVirWindow and extends it.
  10.              GuiText is anchored to the Windows GUI (Graphical User
  11.              Interface) environment. This GuiText object relies on a text
  12.              object that is instantiated as a COM object (a COTextPage) in
  13.              a separate In-process server, PERTEXT, to store the page's
  14.              text data.
  15.              For a comprehensive tutorial code tour of GUITEXT's contents
  16.              and offerings see the tutorial PERCLIEN.HTM file. For
  17.              more specific technical details on the internal workings see
  18.              the comments dispersed throughout the GUITEXT source code.
  19.   Classes:   CGuiText.
  20.   Origin:    5-25-97: atrent - Editor inheritance from GUIPAPER.H in the
  21.              STOCLIEN source.
  22. ----------------------------------------------------------------------------
  23.   This file is part of the Microsoft COM Tutorial Code Samples.
  24.   Copyright (C) Microsoft Corporation, 1997.  All rights reserved.
  25.   This source code is intended only as a supplement to Microsoft
  26.   Development Tools and/or on-line documentation.  See these other
  27.   materials for detailed information regarding Microsoft code samples.
  28.   THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  29.   KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  30.   IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  31.   PARTICULAR PURPOSE.
  32. ==========================================================================+*/
  33. #if !defined(GUITEXT_H)
  34. #define GUITEXT_H
  35. #if defined(__cplusplus)
  36. /*C+C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C
  37.   Class:    CGuiText
  38.   Summary:  Class to encapsulate the displayable Graphical User Interface
  39.             (GUI) for functioning text edit control objects in separate
  40.             windows. Such a window has its own menu and window procedure.
  41.             CGuiText is derived from APPUTIL's CVirWindow and thus
  42.             inherits all the features and benefits of CVirWindow.
  43.   Methods:  CGuiText
  44.               Constructor.
  45.             ~CGuiText
  46.               Destructor.
  47.             HRESULT OpenWin(
  48.                       IStorage* pIStorage_Root,
  49.                       WCHAR* pwszPageTitle,
  50.                       WCHAR* pwszDataName);
  51.               Get CGuiText started. Create Window. Make subordinate objects.
  52.             HRESULT TopWin(void);
  53.               Bring the CGuiText window to the on-screen top.
  54.             HRESULT ResizeWin(WORD wWidth, WORD wHeight);
  55.               Resize the current CGuiText window. Pass to edit control too.
  56.             HRESULT Renumber(INT iPage);
  57.               Re-assign the current dynamic page number of this page.
  58.             HRESULT ReleasePage(void);
  59.               Release the root storage held by this text page.
  60.             HRESULT RestorePage(IStorage* pIStorage_Root);
  61.               Restore the root storage for a new compound file.
  62.             HRESULT Close();
  63.               Close this page & window.
  64.             HRESULT Save(void);
  65.               Use COTextPage's IPersistStreamInit to save the text page.
  66.             INT AskSave(void);
  67.               If text changed ask user if save. Save text user says yes.
  68.             HRESULT Delete(void);
  69.               Delete the stored text page. Close page if open in window.
  70. C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C-C*/
  71. class CGuiText : public CVirWindow
  72. {
  73.   public:
  74.     // Constructor and Destructor override those in CVirWindow.
  75.     CGuiText(HINSTANCE hInst, HWND hWndApp, INT iPage);
  76.     ~CGuiText(void);
  77.     // The public CGuiText methods that extend CVirWindow.
  78.     HRESULT OpenWin(
  79.               IStorage* pIStorage_Root,
  80.               WCHAR* pwszPageTitle,
  81.               WCHAR* pwszDataName);
  82.     HRESULT TopWin(void);
  83.     HRESULT ResizeWin(WORD wWidth, WORD wHeight);
  84.     HRESULT Renumber(INT iPage);
  85.     HRESULT ReleasePage(void);
  86.     HRESULT RestorePage(IStorage* pIStorage_Root);
  87.     HRESULT Close();
  88.     HRESULT Save(void);
  89.     INT     AskSave(void);
  90.     HRESULT Delete(void);
  91.   protected:
  92.     LRESULT WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
  93.   private:
  94.     // Private methods.
  95.     HRESULT Clear(void);
  96.     HRESULT Load(void);
  97.     IConnectionPoint* GetConnectionPoint(REFIID riid);
  98.     HRESULT ConnectSink(void);
  99.     HRESULT DisconnectSink(void);
  100.     HRESULT InitEditMenu(HMENU hEditMenu);
  101.     LRESULT DoCommand(WPARAM wParam, LPARAM lParam);
  102.     // Private data members.
  103.     HWND m_hWndApp;              // Handle of the parent app window.
  104.     RECT m_WinRect;              // GuiText Window position rectangle.
  105.     HWND m_hWndEdit;             // Text edit control window handle.
  106.     CTextWin* m_pTextWin;        // Text edit control window C++ object.
  107.     IStorage* m_pIStorage_Root;  // IStorage on the root storage.
  108.     ITextPage* m_pITextPage;     // ITextPage on the COTextPage COM object.
  109.     INT m_iPage;                 // Page Number of this text page.
  110.     CLSID m_CidTextPage;         // The Class ID for COTextPage objects.
  111.     WCHAR m_wszDataName[PAGE_NAME_SIZE]; // Page DataName.
  112.     IUnknown* m_pCOTextPageSink; // Interface to TextPageSink COM object.
  113.     DWORD m_dwTextPageSink;      // Sink connection key.
  114.     BOOL m_bChanged;             // Was textwin data changed?
  115. };
  116. #endif // __cplusplus
  117. #endif // GUITEXT.H