Criar e executar o exemplo de StoClien
O StoClien trabalha em cooperação com um objeto COPaper em um servidor COM para obter o armazenamento persistente de desenhos em arquivos compostos COM. Para obter mais informações sobre o uso de fluxos do COPaper no arquivo composto fornecido ao COPaper por StoClien, consulte Exemplo e STOSERVE.HTM do StoServe . A construção do COPaper e sua interface IPaper também são abordadas na amostra StoServe .
Tour de código
Os principais tópicos abordados neste tour de código são:
- Como o CGuiPaper encapsula o comportamento da GUI do papel de desenho eletrônico do StoClien
- Como o StoClien captura e exibe a atividade de desenho interativa
- Como o objeto CGuiPaper usa COPaper para registrar dados de desenho
- Como uma conexão IPaperSink é usada no repositório
- Como os métodos CPapFile Load e Save usam o armazenamento estruturado em arquivos compostos
Como a classe CGuiBall usada nos exemplos FRECLIEN e CONCLIEN encapsulava o comportamento de uma bola quicando, StoClien usa uma classe CGuiPaper C++ para encapsular os dados e o comportamento da GUI do papel de desenho eletrônico.
A tabela a seguir lista os arquivos pertinentes ao exemplo de StoClien .
Arquivos | Descrição |
---|---|
STOCLIEN.TXT | Breve descrição de exemplo. |
MAKEFILE | O makefile genérico para criar o exemplo de código. |
STOCLIEN. H | O arquivo de inclusão para o aplicativo StoClien . Contém declarações de classe, protótipos de função e identificadores de recursos. |
STOCLIEN. CPP | O arquivo de implementação main para STOCLIEN.EXE. Tem implementação de WinMain e CMainWindow, bem como a expedição do menu main. |
STOCLIEN. RC | O arquivo de definição de recurso de aplicativo. |
STOCLIEN. ICO | O recurso de ícone do aplicativo. |
STOCLIEN. PAP | Um arquivo de desenho de papel padrão para o aplicativo. |
LÁPIS. CUR | Uma imagem de lápis para o cursor da janela do cliente. |
PIA. H | A declaração de classe para a classe de objeto COM COPaperSink. |
PIA. CPP | Arquivo de implementação para a classe de objeto COM COPaperSink. |
PAPFILE. H | A declaração de classe para a classe CPapFile C++. |
PAPFILE. CPP | Arquivo de implementação para a classe CPapFile C++. |
GUIPAPER. H | A declaração de classe para a classe CGuiPaper C++. |
GUIPAPER. CPP | Arquivo de implementação para a classe CGuiPaper C++. |
STOCLIEN. DSP | Arquivo do Projeto do Microsoft Visual Studio. |
arquivos compostos
O StoClien depende do COPaper para registrar dados de desenho. Ele também depende do COPaper para armazenar os dados em um arquivo composto. No entanto, em uma divisão típica de trabalho entre o cliente COM e o servidor, o StoClien compartilha parte da responsabilidade pelo armazenamento de arquivos. Essa divisão de mão-de-obra é importante em aplicativos COM em que o cliente é um contêiner e o servidor é um objeto inserido. Nessa organização, o cliente é responsável por criar ou abrir um arquivo de armazenamento estruturado, enquanto o objeto de servidor é responsável por usar esse armazenamento para suas próprias finalidades de armazenamento de dados. Isso pode envolver o objeto de servidor criando sub-armazenamentos no armazenamento que é fornecido a ele. Geralmente, envolve o objeto de servidor que cria objetos de fluxo no armazenamento. O uso de fluxos de armazenamento pelo COPaper é detalhado no exemplo de StoClien .
A interface IStorage é usada pelo objeto de cliente e servidor para executar operações de arquivo. A implementação de arquivos compostos da arquitetura de Armazenamento Estruturado é usada. As funções de serviço padrão são usadas para operações em arquivos compostos. Por exemplo, a função StgCreateDocfile cria inicialmente um arquivo composto e retorna um ponteiro IStorage que pode ser usado para manipular o arquivo. Essa função específica é chamada no StoClien. A interface IStorage obtida é passada como um parâmetro para COPaper para seu uso. O objeto COPaper não cria nem abre arquivos compostos por conta própria: ele usa as interfaces IStorage e IStream para trabalhar em arquivos compostos que são fornecidos a ele.
Essas interfaces IStorage e IStream não são implementadas no StoClien ou no StoServe. Eles são implementados dentro das bibliotecas COM. Quando um ponteiro para uma dessas interfaces é obtido, seus métodos são essencialmente usados como um conjunto de serviços para operar em um arquivo composto.