다음을 통해 공유


구조체 - StoServe

COPaper는 펜 색, 너비 및 좌표를 INKDATA 구조로 패키지하고 메모리에서 관리하는 동적으로 할당된 배열에 저장합니다.

INKDATA 구조체

다음은 PAPER.H의 INKDATA 구조체에 대한 선언입니다.

// The types of Ink Data.
#define INKTYPE_NONE  0
#define INKTYPE_START 1
#define INKTYPE_DRAW  2
#define INKTYPE_STOP  3

  // The Ink Data structure.
  typedef struct _INKDATA
  {
    SHORT nType;            // Ink Type.
    SHORT nX;               // X-coordinate of ink point.
    SHORT nY;               // Y-coordinate of ink point.
    SHORT nWidth;           // Ink line width in pixels.
    COLORREF crColor;       // Ink color.
  } INKDATA;

이러한 INKDATA 패킷의 동적 배열은 IPaper 구현 클래스의 멤버인 m_paInkData 가리킬 수 있습니다. 배열은 초기 할당을 사용하여 IPaper::InitPaper 메서드 내에 만들어집니다. 자세한 내용은 InitPaper 메서드 및 PAPER.H에서 CImpIPaper 구현의 프라이빗 NextSlot 유틸리티 메서드를 참조하세요. InkStart, InkDrawInkStop 메서드는 NextSlot을 사용하여 배열에서 새 슬롯을 가져옵니다. 필요에 따라 NextSlot에 의해 배열이 동적으로 확장됩니다.

클라이언트는 IPaper::Erase 메서드를 호출하여 현재 드로잉을 지웁다. 이 메서드는 배열을 다시 할당하지 않습니다. 모든 현재 잉크 데이터를 INKTYPE_NONE 표시하고 배열의 데이터 끝 인덱스를 0으로 다시 설정합니다.

클라이언트는 IPaper::Lock 호출하고 Unlock 메서드를 호출하여 그리기용 COPaper의 소유권을 관리합니다. 이러한 메서드는 공유 COPaper에 보관된 드로잉에 대한 여러 클라이언트 간의 액세스를 구성하기 위해 제공됩니다.

PAPER_PROPERTIES 구조체

클라이언트는 IPaper::Resize 메서드를 호출하여 사용자가 현재 그리기 용지 사각형의 크기를 조정했음을 COPaper에 알립니다. 이 좌표 데이터는 모든 용지 데이터가 복합 파일에 저장될 때 잉크 데이터와 함께 저장되는 PAPER_PROPERTIES 구조로 유지됩니다.

다음은 PAPER.H의 PAPER_PROPERTIES 선언입니다.

#define PAPER_TITLE_SIZE 64
  typedef struct _PAPER_PROPERTIES
  {
    LONG lInkDataVersion;
    LONG lInkArraySize;
    COLORREF crWinColor;
    RECT WinRect;
    WCHAR wszTitle[PAPER_TITLE_SIZE];
    WCHAR wszAuthor[PAPER_TITLE_SIZE];
    WCHAR wszReserved1[PAPER_TITLE_SIZE];
    WCHAR wszReserved2[PAPER_TITLE_SIZE];
  } PAPER_PROPERTIES;

PAPER_PROPERTIES 구조는 DllPaper 구성 요소가 진화함에 따라 언제든지 새 잉크 데이터 형식을 추가할 수 있도록 설계되었습니다. IPaper 인터페이스는 DllPaper 구성 요소의 후속 버전이 동일한 IPaper 인터페이스를 구현하는 동안 다른 잉크 데이터 형식을 저장할 수 있을 만큼 일반적입니다. IPaper 메서드는 특정 잉크 데이터 형식에 의존하지 않으므로 다른 잉크 데이터 형식을 지원하는 DllPaper 구성 요소의 새 버전은 이 동일한 인터페이스를 사용할 수 있습니다.

복합 파일에 저장된 용지 속성은 잉크 데이터 배열의 현재 크기를 기록합니다. 그런 다음 파일에서 읽은 잉크 데이터를 수용하기 위해 적절한 배열 크기를 할당할 수 있습니다.

PAPER_PROPERTIES 구조는 용지 표면의 그리기 사각형 크기와 배경 창 색도 저장합니다.

StoServe/StoClien 샘플에는 사용되지 않지만 드로잉 제목과 작성자 이름도 저장할 수 있습니다.

복합 파일에 액세스하는 데 사용되는 IStorage 인터페이스가 이 정보를 관리하므로 생성 날짜 및 마지막으로 수정된 날짜는 이러한 문서 속성에 포함되지 않습니다.