Déclaration de la classe CGuiPaper

Voici la déclaration de la classe CGuiPaper à partir de GUIPAPER. H.

class CGuiPaper
  {
    public:
      CGuiPaper(void);
      ~CGuiPaper(void);
      BOOL Init(HINSTANCE hInst, HWND hWnd, TCHAR* pszCmdLineFile);
      HRESULT DrawOn(void);
      HRESULT DrawOff(void);
      HRESULT ClearWin(void);
      HRESULT PaintWin(void);
      HRESULT Erase(void);
      HRESULT Resize(WORD wWidth, WORD wHeight);
      HRESULT InkWidth(SHORT nInkWidth);
      HRESULT InkColor(COLORREF crInkColor);
      HRESULT InkSaving(BOOL bInkSaving);
      HRESULT InkStart(SHORT nX, SHORT nY);
      HRESULT InkDraw(SHORT nX, SHORT nY);
      HRESULT InkStop(SHORT nX, SHORT nY);
      HRESULT ConnectPaperSink(void);
      HRESULT DisconnectPaperSink(void);
      HRESULT Load(void);
      HRESULT Save(void);
      int     AskSave(void);
      HRESULT Open(void);
      HRESULT SaveAs(void);
      COLORREF PickColor(void);

    private:
      HINSTANCE  m_hInst;
      HWND       m_hWnd;
      HDC        m_hDC;
      RECT       m_WinRect;
      IPaper*    m_pIPaper;
      SHORT      m_nLockKey;
      HPEN       m_hPen;
      SHORT      m_nInkWidth;
      COLORREF   m_crInkColor;
      BOOL       m_bInkSaving;
      BOOL       m_bInking;
      BOOL       m_bPainting;
      POINT      m_OldPos;
      IUnknown*  m_pCOPaperSink;
      DWORD      m_dwPaperSink;
      BOOL       m_bDirty;
      CPapFile*    m_pPapFile;
      OPENFILENAME m_ofnFile;
      TCHAR        m_szFileFilter[MAX_PATH];
      TCHAR        m_szFileName[MAX_PATH];
      TCHAR        m_szFileTitle[MAX_PATH];
      CHOOSECOLOR  m_ChooseColor;
      COLORREF     m_acrCustColors[16];

      IConnectionPoint* GetConnectionPoint(REFIID riid);
  };

CGuiPaper conserve les propriétés de l’interface graphique utilisateur actuelles pour le papier dessiné. Les membres m _ crInkColor, m _ crInkWidth et m _ WinRect contiennent des valeurs pour la couleur d’encre actuelle, la largeur de l’encre et le rectangle de dessin. Le membre _ HWND de m stocke le descripteur dans la fenêtre où la peinture est effectuée.

La peinture réelle des images s’effectue à l’aide d’un handle vers un contexte de périphérique situé dans le membre m _ HDC. Un handle vers le stylet de dessin actuel est conservé dans le membre m _ hPen. Le stylet est détruit et recréé lorsque sa couleur ou sa largeur est modifiée par l’utilisateur.

Les membres m _ pCOPaperSink et m _ dwPaperSink contiennent les valeurs nécessaires à la connexion au colivre pour recevoir des notifications entrantes via l’interface IPaperSink . Le membre m _ bDirty contient un indicateur qui indique que l’utilisateur a modifié le dessin et qu’il ne reflète plus les données stockées dans son fichier.

Le membre m _ pIPaper contient le pointeur d’interface principal vers l’objet du codocument. Toutes les fonctionnalités du colivre sont accessibles via ce pointeur.

Le membre m _ nLockKey est utilisé pour prendre en charge un modèle de verrouillage client qui est utilisé avec plusieurs clients pour permettre à un client d’accéder de façon exclusive à un objet de codocument partagé. Le codocument affecte m _ nLockKey lors d’un appel IPaper::Lock et est transmis en tant que paramètre par le client lors d’appels ultérieurs au codocument. Le colivreur effectue le travail dans ces appels uniquement si la clé de verrouillage transmise correspond à la dernière remise de la clé à un client par le biais du colivre.

Le membre m _ pPapFile contient un pointeur vers un objet CPapFile . Il s’agit d’un objet C++ qui encapsule les opérations de chargement et d’enregistrement sur un fichier composé de stockage structuré. CPapFile fonctionne avec l’objet du coarticle basé sur le serveur sous-jacent pour charger et enregistrer les données de dessin du plan.