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에 저장하지 않습니다. 이 조건은 다시 칠하는 동안 사용됩니다.