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 中。 重繪期間會使用此條件。