Compartilhar via


TN024: Mensagens e recursos definidos pelo MFC

Observação:

A seguinte nota técnica não foi atualizada desde que foi incluída pela primeira vez na documentação online.sistema autônomo resultado, alguns procedimentos e tópicos podem estar desatualizado ou incorreto.Para obter informações mais recentes, é recomendável que você procurar o tópico de interesse no índice de documentação online.

Esta nota descreve as mensagens internas do Windows e formatos de recurso usados pelo MFC.Essas informações explica a implementação da estrutura e ajudarão a depurar o aplicativo.Para adventurous, embora todas essas informações seja oficialmente sem suporte, você pode usar algumas dessas informações para implementações avançadas.

Esta nota contém MFC particular detalhes de implementação; tudo o Sumário está sujeitos a alterações no futuro.Mensagens do MFC particular Windows têm significado no escopo de um aplicativo só mas serão alterada no futuro para conter todo o sistema mensagens.

Intervalo de MFC particular Windows mensagens e tipos de recurso estão no intervalo reservado "sistema" separe pelo Microsoft Windows.No momento nem todos os números nos intervalos são usados e, no futuro, novos números no intervalo podem ser usados.Os números usados no momento podem ser alterados.

Mensagens do MFC particular Windows estão no intervalo 0x360-> 0x37F.

Tipos de recurso particular MFC estão no intervalo 0xF0-> 0xFF.

Mensagens de particular Windows MFC

Essas mensagens do Windows são usadas no lugar de funções virtuais do C++ onde relativamente menos rigidez é necessária entre os objetos de janela e em que uma função virtual C++ não seria apropriada.

Essas mensagens particulares do Windows e estruturas de parâmetro associado são declaradas no cabeçalho privado do MFC 'AFXPRIV.H'.Ser avisado de que qualquer código que inclui esse cabeçalho podem ser confiam em comportamento não documentado e será provavelmente quebrará em futuras versões do MFC.

No caso raro de necessidade de lidar com uma dessas mensagens, você deve usar o ON_MESSAGE macro de MAP de mensagens e manipular a mensagem no formato LRESULT/WPARAM/LPARAM genérico.

WM_QUERYAFXWNDPROC

Esta mensagem é enviada para uma janela que está sendo criada.This is sent very early in the creation process as a method of determining if the WndProc is AfxWndProc. AfxWndProc returns 1.

wParam

Não usado

lParam

Não usado

Retorna

1 se processado por AfxWndProc

WM_SIZEPARENT

Esta mensagem é enviada por uma janela de quadro para seus filhos imediatos durante o redimensionamento (CFrameWnd::OnSize calls CFrameWnd::RecalcLayout quais chamadas CWnd::RepositionBars) para reposicionar as barras de controle ao redor do lado do quadro. The AFX_SIZEPARENTPARAMS estrutura contém o retângulo de cliente disponível corrente de pai e uma HDWP (que pode ser nulo) com o qual telefonar DeferWindowPos para minimizar o redesenho.

wParam

Não usado

lParam

Endereço de um AFX_SIZEPARENTPARAMS estrutura

Retorna

Não usado (0)

Ignorando a mensagem indica que a janela não fazer parte de layout.

WM_SETMESSAGESTRING

Esta mensagem é enviada para uma janela do quadro pedir para atualizar a linha de mensagem na BAR de status.Tanto um ID de string ou um LPCSTR pode ser especificado (mas não ambos).

wParam

String de ID (ou zero)

lParam

LPCSTR para a seqüência de caracteres (ou nulo)

Retorna

Não usado (0)

WM_IDLEUPDATECMDUI

Essa mensagem é enviada no time de inatividade para implementar a atualização de time ocioso de manipuladores UI do comando de atualização.Se a janela (geralmente uma BAR de controle) manipula a mensagem, ele cria um CCmdUI objeto (ou um objeto de uma classe derivada) e telefonar CCmdUI::DoUpdate para cada um dos "itens" na janela.Isso por sua vez verificará se há um ON_UPDATE_COMMAND_UI manipulador para os objetos na cadeia de manipulador de comandos.

wParam

BDisableIfNoHandler BOOL

lParam

Não usado (0)

Retorna

Não usado (0)

bDisableIfNoHandler é diferente de zero para desabilitar o objeto de interface do usuário se não houver nenhuma um ON_UPDATE_COMMAND_UI nem uma ON_COMMAND manipulador.

WM_EXITHELPMODE

Esta mensagem é lançada um CFrameWnd que para sair do modo de ajuda sensível ao contexto. O recebimento desta mensagem é encerrado no loop modal de iniciado por CFrameWnd::OnContextHelp.

wParam

Não usado (0)

lParam

Não usado (0)

Retorna

Não usado

WM_INITIALUPDATE

Esta mensagem é enviada pelo modelo de documento para todos os descendentes de uma janela de quadro quando é seguro para que eles possam fazer a atualização inicial.Ele mapeia para uma telefonar para CView::OnInitialUpdate mas pode ser usado em outros CWnd-classes para a outra atualização one-shot derivadas.

wParam

Não usado (0)

lParam

Não usado (0)

Retorna

Não usado (0)

WM_RECALCPARENT

Esta mensagem é enviada por um modo de exibição para sua janela pai (obtida por meio de GetParent) para forçar o recálculo layout (normalmente, o pai chamará RecalcLayout). Isso é usado em aplicativos de servidor OLE em que é necessário para o quadro a crescer em dimensionar sistema autônomo aumenta de dimensionar total do modo de exibição.

Se a janela pai processar esta mensagem deve retornar verdadeiro e preencher RECT passado lParam com o novo dimensionar da área de cliente.Isso é usado em CScrollView para manipular adequadamente as barras de rolagem (local, em seguida, no lado de fora da janela quando forem adicionados) quando um objeto de servidor é ativado no local.

wParam

Não usado (0)

lParam

LPRECT rectClient, pode ser nulo

Retorna

VERDADEIRO se o novo cliente retângulo retornado, FALSO caso contrário

WM_SIZECHILD

Esta mensagem é enviada por COleResizeBar para sua janela do proprietário (via GetOwner) quando o usuário redimensionar a BAR de redimensionamento com as alças de redimensionamento. COleIPFrameWnd responde a essa mensagem tentando reposicionar a janela do quadro sistema autônomo o usuário tenha solicitado.

O novo retângulo fornecido em coordenadas do cliente em relação à janela do quadro que contém a BAR de redimensionar é apontado pelo lParam.

wParam

Não usado (0)

lParam

LPRECT rectNew

Retorna

Não usado (0)

WM_DISABLEMODAL

Esta mensagem é enviada para todas as janelas pop-up pertencentes a uma janela do quadro que está sendo desativada.A janela do quadro usa o resultado para determinar se deve ou não desabilitar a janela pop-up.

Você pode usar para realizar processamento especial na sua janela de pop-up quando o quadro entra em um estado de janela restrito ou para impedir que determinadas janelas pop-up obtendo desabilitado.Dicas de ferramenta use essa mensagem para destruir próprios quando a janela do quadro fica em estado de janela restrito, por exemplo.

wParam

Não usado (0)

lParam

Não usado (0)

Retorna

Diferente de zero para NÃO desabilitar da janela, 0 indica que a janela será desabilitado

WM_FLOATSTATUS

Esta mensagem é enviada para todas as janelas pop-up pertencentes a uma janela de quadro quando o quadro é ativado ou desativado por outra janela do quadro de nível superior.Isso é usado pela implementação de MFS_SYNCACTIVE in CMiniFrameWnd, para manter a ativação dessas janelas pop-up em sincronia com a ativação da janela do quadro de nível superior.

wParam

É um dos seguintes valores:

FS_SHOW

FS_HIDE

FS_ACTIVATE

FS_DEACTIVATE

FS_ENABLEFS_DISABLE

FS_SYNCACTIVE

lParam

Não usado (0)

O valor retornado deve ser diferente de zero se FS_SYNCACTIVE é o conjunto e syncronizes janela sua ativação com o quadro pai.CMiniFrameWnd Retorna zero quando o estilo é definido como MFS_SYNCACTIVE.

Para obter mais informações, consulte a implementação de CMiniFrameWnd.

WM_ACTIVATETOPLEVEL

Esta mensagem é enviada para uma janela de nível superior quando uma janela no seu "agrupar de nível superior" está ativada ou desativada.Uma janela é parte de um agrupar de nível superior, se for uma janela de nível superior (nenhum pai ou proprietário) ou ele é de propriedade como uma janela.Esta mensagem é semelhante em uso ao WM_ACTIVATEAPP,, mas funciona em situações onde as janelas que pertencem a diferentes processos estão misturadas em uma hierarquia de janela única (comuns em aplicativos OLE).

WM_EXITHELPMODE WM_COMMANDHELP, WM_HELPHITTEST,

Essas mensagens são usadas na implementação de ajuda contextual.Consulte o Observação técnica 28 para obter mais informações.

MFC particular recurso formatos

Atualmente, o MFC define dois formatos de recurso particular: RT_TOOLBAR and RT_DLGINIT.

Formato de recurso RT_TOOLBAR

A barra de ferramentas padrão fornecida pelo AppWizard baseia-se em um RT_TOOLBAR recurso personalizado, que foi introduzido no MFC 4.0.Você pode edição este recurso usando o editor de barra de ferramentas.

Formato de recurso RT_DLGINIT

Um formato de recurso particular MFC é usado para armazenar informações de inicialização do diálogo extra.Isso inclui as seqüências de caracteres iniciais armazenadas em uma caixa de combinação.O formato deste recurso não foi projetado para ser editado manualmente, mas é tratado pelo Visual C++.

O Visual C++ e este RT_DLGINIT recursos não são necessários para usar os recursos relacionados do MFC, já que há API alternativa ao uso de informações do recurso.Usando o Visual C++ torna muito mais fácil escrever, manter e converter seu aplicativo a longo prazo.

A estrutura básica de um RT_DLGINIT recurso é o seguinte:

+---------------+                    \
| Control ID    |   UINT             |
+---------------+                    |
| Message #     |   UINT             |
+---------------+                    |
|length of data |   DWORD            |
+---------------+                    |   Repeated
|   Data        |   Variable Length  |   for each control
|   ...         |   and Format       |   and message
+---------------+                    /
|     0         |   BYTE
+---------------+

Uma seção repetida contém o identificador de controle para enviar a mensagem, a mensagem # para enviar (uma mensagem normal do Windows) e um comprimento variável de dados.A mensagem Windows é enviada em um formulário:

SendDlgItemMessage(<Control ID>, <Message #>, 0, &<Data>);

Isso é um formato muito geral, permitindo que qualquer mensagens do Windows e o conteúdo dos dados.O editor de recursos do Visual C++ e MFC suportam apenas um subconjunto limitado de mensagens do Windows: CB_ADDSTRING para as opções de lista iniciais para caixas de combinação (os dados são uma seqüência de caracteres de texto).

Consulte também

Outros recursos

Notas técnicas por número

Notas técnicas por categoria