Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
CGuiPaper zachowuje również flagę m_bInking. InkStart ustawia true, aby zasygnalizować, że sekwencja rysunku jest w toku. Na przykład metoda InkDraw używa tej flagi, aby określić, czy ma ona malować i zapisywać dane pisma odręcznego.
Poniżej znajduje się metoda InkDraw z 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;
}
Ta metoda nic nie robi, jeśli m_bInking jest FALSE. Jest to warunek, gdy użytkownik po prostu przenosi wskaźnik myszy nad oknem klienta bez naciśnięcia lewego przycisku myszy.
InkDraw wyraźnie ma podwójną odpowiedzialność. Wywołania Win32 MoveToEx i LineTo są wykonywane w celu rysowania obrazów liniowych na ekranie graficznego interfejsu użytkownika (przy użyciu uchwytu kontekstu urządzenia przechowywanego w m_hDC). Dane pisma odręcznego są również przekazywane do obiektu COPaper do rejestrowania przy użyciu metody InkDraw interfejsu IPaper. Gdy m_bInkSaving jest false, InkDraw maluje obraz liniowy, ale nie przechowuje danych w COPaper. Ten warunek jest używany podczas ponownego malowania.