Partilhar via


Serviços CWinApp especial

Além de executar o loop de mensagem e dando a oportunidade para inicializar o aplicativo e limpar após, CWinApp fornece vários outros serviços.

Registro do shell

Por padrão, o Assistente de aplicativo do MFC torna possível para o usuário abrir arquivos de dados que criou o aplicativo, clicando duas vezes no arquivo Explorer ou Gerenciador de arquivos.Se seu aplicativo é um aplicativo MDI e especificar uma extensão para os arquivos de seu aplicativo cria, o Assistente de aplicativo do MFC adiciona chamadas para o RegisterShellFileTypes e EnableShellOpen funções de membro CWinApp para o InitInstance substituição grava para você.

RegisterShellFileTypesRegistra tipos de documento do aplicativo com o File Explorer ou Gerenciador de arquivos.A função adiciona entradas ao banco de dados de registro Windows mantém.As entradas de registrar cada tipo de documento, associar uma extensão de arquivo com o tipo de arquivo, especifique uma linha de comando para abrir o aplicativo e especificar um comando de dynamic data exchange (DDE) para abrir um documento desse tipo.

EnableShellOpenconclui o processo, permitindo que seu aplicativo receber comandos DDE de File Explorer ou Gerenciador de arquivos para abrir o arquivo escolhido pelo usuário.

Esse suporte de registro automático em CWinApp elimina a necessidade de enviar um arquivo. reg com seu aplicativo ou para fazer o trabalho de instalação especial.

Se você deseja inicializar GDI+ para seu aplicativo (chamando GdiplusStartup no seu InitInstance função), ter que suprimir o segmento de plano de fundo GDI+.

Você pode fazer isso definindo o SuppressBackgroundThread membro de GdiplusStartupInput estrutura para TRUE.Quando a supressão GDI+ fundo thread, o NotificationHook e NotificationUnhook chamadas (consulte GdiplusStartupOutput) deve ser feita apenas anterior para entrar e sair do loop de mensagem do aplicativo.Portanto, um bom lugar para chamar GdiplusStartup e as funções de notificação de gancho seria em substituição a função virtual CWinApp::Run, como mostrado abaixo:

int CMyWinApp::Run()
{
   GdiplusStartupInput gdiSI;
   GdiplusStartupOutput gdiSO;
   ULONG_PTR gdiToken;
   ULONG_PTR gdiHookToken;

   gdiSI.SuppressBackgroundThread = TRUE;
   GdiplusStartup(&gdiToken,&gdiSI,&gdiSO);
   gdiSO.NotificationHook(&gdiHookToken);
   int nRet = CWinApp::Run();

   gdiSO.NotificationUnhook(gdiHookToken);
   GdiplusShutdown(gdiToken);

   return nRet;
}

Se você não suprimir o plano de fundo segmento GDI+, comandos DDE podem ser emitidos prematuramente para o aplicativo antes de sua janela principal foi criada.Os comandos DDE emitidos pelo shell podem ser prematuramente anulados, resultando em mensagens de erro.

Gerenciador de arquivos arrastar e soltar

Arquivos podem ser arrastados da janela de exibição de arquivo no Gerenciador de arquivos ou Gerenciador de arquivos para uma janela em seu aplicativo.Por exemplo, você pode habilitar um ou mais arquivos ser arrastado para a janela principal do aplicativo MDI, onde o aplicativo pode recuperar os nomes de arquivos e janelas filho MDI para esses arquivos.

Para habilitar o arquivo arrastar e soltar em seu aplicativo, o Assistente de aplicativo do MFC grava uma chamada para o CWnd função de membro DragAcceptFiles para a sua janela de quadro principal no seu InitInstance.Você pode remover a chamada se não desejar implementar o recurso de arrastar e soltar.

ObservaçãoObservação

Você também pode implementar mais gerais recursos de arrastar e soltar — arrastar dados entre ou dentro de documentos — com OLE.Para obter informações, consulte o artigo arrastar e soltar (OLE).

Manter o controle de mais documentos usados recentemente

Como o usuário abre e fecha arquivos, o objeto de aplicativo controla de quatro arquivos usados mais recentemente.Os nomes desses arquivos são adicionados ao menu Arquivo e atualizados quando eles mudam.O framework armazena esses nomes de arquivo no registro ou no arquivo. ini com o mesmo nome de seu projeto e lê a partir do arquivo quando seu aplicativo é iniciado.O InitInstance substituir o que o Assistente de aplicativo do MFC cria para você inclui uma chamada para o CWinApp função de membro LoadStdProfileSettings, que carrega informações do registro ou arquivo. ini, incluindo mais recentemente usado nomes de arquivo.

Essas entradas são armazenadas como segue:

  • Windows NT, Windows 2000 e posterior, o valor é armazenado em uma chave do registro.

  • No Windows 3. x, o valor é armazenado nos arquivos WIN.Arquivo INI.

  • No Windows 95 e posterior, o valor é armazenado em uma versão em cache do WIN.INI.

Consulte também

Conceitos

CWinApp: A classe de aplicativo