Udostępnij przez


InkDraw, metoda

CGuiPaper zachowuje również flagę m_bInking. InkStart ustawia true, aby zasygnalizować, że sekwencja rysunku jest w toku. Na przykład metoda InkDraw używa tej flagi, aby określić, czy ma ona malować i zapisywać dane pisma odręcznego.

Poniżej znajduje się metoda InkDraw z 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;
  }

Ta metoda nic nie robi, jeśli m_bInking jest FALSE. Jest to warunek, gdy użytkownik po prostu przenosi wskaźnik myszy nad oknem klienta bez naciśnięcia lewego przycisku myszy.

InkDraw wyraźnie ma podwójną odpowiedzialność. Wywołania Win32 MoveToEx i LineTo są wykonywane w celu rysowania obrazów liniowych na ekranie graficznego interfejsu użytkownika (przy użyciu uchwytu kontekstu urządzenia przechowywanego w m_hDC). Dane pisma odręcznego są również przekazywane do obiektu COPaper do rejestrowania przy użyciu metody InkDraw interfejsu IPaper. Gdy m_bInkSaving jest false, InkDraw maluje obraz liniowy, ale nie przechowuje danych w COPaper. Ten warunek jest używany podczas ponownego malowania.