Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
CGuiPaper mantiene anche un flag m_bInking. InkStart imposta su TRUE per segnalare che è in corso una sequenza di disegno. Ad esempio, il metodo InkDraw usa questo flag per determinare se deve disegnare e salvare i dati input penna.
Di seguito è riportato il metodo InkDraw di 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;
}
Questo metodo non esegue alcuna operazione se m_bInking è FALSE. Questa è la condizione quando l'utente sposta semplicemente il mouse sulla finestra client senza premere il pulsante sinistro del mouse.
InkDraw ha chiaramente una doppia responsabilità. Le chiamate Win32 MoveToEx e LineTo vengono effettuate per disegnare immagini di linee sullo schermo dell'interfaccia utente grafica (usando l'handle del contesto di dispositivo mantenuto in m_hDC). I dati dell'input penna vengono passati anche all'oggetto COPaper per la registrazione utilizzando il metodo InkDraw dell'interfaccia IPaper. Quando m_bInkSaving è FALSE, InkDraw disegna l'immagine della linea ma non archivia i dati in COPaper. Questa condizione viene utilizzata durante l'aggiornamento.