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 调用是使用保存在 m_hDC) 中的设备上下文句柄 (在 GUI 屏幕上绘制线条图像。 墨迹数据还会传递到 COPaper 对象,以便使用 IPaper 接口的 InkDraw 方法进行录制。 当m_bInkSaving为 FALSE 时,InkDraw 绘制线条图像,但不将数据存储在 COPaper 中。 此条件在重绘期间使用。