Freigeben über


InkDraw-Methode

CGuiPaper behält auch eine m_bInking Kennzeichnung bei. InkStart- legt sie auf TRUE- fest, um zu signalisieren, dass eine Zeichnungssequenz verarbeitet wird. Die InkDraw-Methode verwendet z. B. dieses Flag, um zu bestimmen, ob sie Freihanddaten zeichnen und speichern soll.

Nachfolgend sehen 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 die Maus über das Clientfenster bewegt, ohne die linke Maustaste zu drücken.

InkDraw hat eine doppelte Verantwortung. Die Win32 MoveToEx- und LineTo-Aufrufe werden ausgeführt, um Linienbilder auf dem GUI-Bildschirm zu zeichnen (mithilfe des in m_hDC gespeicherten Gerätekontextziehpunkts). Die Freihanddaten werden auch mithilfe der InkDraw-Methode des IPaper Schnittstelle an das COPaper-Objekt übergeben. Wenn m_bInkSaving FALSEist, zeichnet InkDraw das Linienbild, speichert die Daten jedoch nicht in COPaper. Diese Bedingung wird während der Aktualisierung verwendet.