InkDraw-Methode

CGuiPaper behält auch ein m _ bInking-Flag bei. InkStart legt ihn auf TRUE fest, um zu signalisieren, dass eine Zeichnungssequenz ausgeführt wird. Beispielsweise verwendet die InkDraw-Methode dieses Flag, um zu bestimmen, ob sie Ink-Daten zeichnen und speichern soll.

Im Folgenden finden Sie die InkDraw-Methode von GUIPAPER. Cpp.

HRESULT CGuiPaper::InkDraw(
                       SHORT nX,
                       SHORT nY)
  {
    if (m_bInking)
    {
      // Start this ink line at previous old position.
      MoveToEx(m_hDC, m_OldPos.x, m_OldPos.y, NULL);

      // Assign new old position and draw the new line.
      LineTo(m_hDC, m_OldPos.x = nX, m_OldPos.y = nY);

      // Ask the Paper object to save this data.
      if (m_bInkSaving)
        m_pIPaper->InkDraw(m_nLockKey, nX, nY);
    }

    return NOERROR;
  }

Diese Methode führt nichts aus, wenn m _ bInking FALSE ist. Dies ist die Bedingung, wenn der Benutzer einfach den Mauszeiger über das Clientfenster bewegt, ohne die linke Maustaste zu drücken.

InkDraw hat eindeutig eine doppelte Verantwortung. Die Win32-Aufrufe MoveToEx und LineTo werden zum Zeichnen von Linienbildern auf dem GUI-Bildschirm (mithilfe des Gerätekontexthandlers in m _ hDC) vorgenommen. Die Ink-Daten werden auch zur Aufzeichnung mithilfe der InkDraw-Methode der IPaper-Schnittstelle an das COPaper-Objekt übergeben. Wenn m _ bInkSaving FALSE ist, zeichnet InkDraw das Linienbild, aber die Daten werden nicht in COPaper gespeichert. Diese Bedingung wird während des Neupaintings verwendet.