次の方法で共有


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 にはデータを格納しません。 この条件は、再描画中に使用されます。