다음을 통해 공유


InkDraw 메서드

또한 CGuiPaper는 m_bInking 플래그를 유지합니다. InkStart 는 그리기 시퀀스가 처리 중임을 알리기 위해 TRUE 로 설정합니다. 예를 들어 InkDraw 메서드는 이 플래그를 사용하여 잉크 데이터를 그리고 저장해야 하는지 여부를 결정합니다.

다음은 GUIPAPER의 InkDraw 메서드입니다. 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;
  }

m_bInking FALSE이면 이 메서드는 아무 것도 수행하지 않습니다. 사용자가 마우스 왼쪽 단추를 누르지 않고 클라이언트 창 위로 마우스를 이동하는 경우의 조건입니다.

InkDraw는 분명히 이중 책임이 있습니다. Win32 MoveToEx 및 LineTo 호출은 GUI 화면에 선 이미지를 그리기 위해 이루어집니다(m_hDC 유지된 디바이스 컨텍스트 핸들 사용). 또한 잉크 데이터는 IPaper 인터페이스의 InkDraw 메서드를 사용하여 기록하기 위해 COPaper 개체에 전달됩니다. m_bInkSaving FALSE이면 InkDraw는 선 이미지를 그리지만 데이터를 COPaper에 저장하지 않습니다. 이 조건은 다시 칠하는 동안 사용됩니다.