Compartir a través de


InkDraw (método)

CGuiPaper también mantiene una marca de m_bInking. InkStart lo establece en TRUE para indicar que una secuencia de dibujo está en proceso. Por ejemplo, el método InkDraw usa esta marca para determinar si debe pintar y guardar datos de entrada de lápiz.

A continuación se muestra el método InkDraw de 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;
  }

Este método no hace nada si m_bInking es FALSE. Esta es la condición cuando el usuario simplemente mueve el mouse sobre la ventana del cliente sin presionar el botón izquierdo del mouse.

InkDraw tiene claramente una doble responsabilidad. Las llamadas a Win32 MoveToEx y LineTo se realizan para dibujar imágenes de línea en la pantalla de la GUI (con el identificador de contexto del dispositivo guardado en m_hDC). Los datos de entrada de lápiz también se pasan al objeto COPaper para la grabación mediante el método InkDraw de IPaper interfaz. Cuando m_bInkSaving es FALSE, InkDraw pinta la imagen de línea, pero no almacena los datos en COPaper. Esta condición se usa durante la reintentos.