TN024: Mensagens MFC-definido e recursos

ObservaçãoObservação

A seguinte nota técnica não foi atualizada desde que foi incluída pela primeira vez na documentação online.Como resultado, alguns procedimentos e tópicos podem estar desatualizado ou incorreto.As informações mais recentes, é recomendável que você procure o tópico de interesse no índice de documentação on-line.

Esta nota descreve os formatos de recurso usados pelo MFC e mensagens internas do Windows.Essa informação explica a implementação do framework e irá ajudá-lo a depurar seu aplicativo.Para sentir, embora todas essas informações não são oficialmente suportadas, você pode usar algumas dessas informações para implementações avançadas.

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

Intervalo do MFC particulares mensagens de Windows e tipos de recurso estão no intervalo reservado "sistema" reservados 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 Windows particulares MFC estão no intervalo 0x360 - > 0x37F.

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

Mensagens do Windows particulares MFC

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

Essas mensagens do Windows particulares e estruturas de parâmetro associado são declaradas no cabeçalho MFC particular ' AFXPRIV.H'.Ser avisado de que qualquer código que inclui este cabeçalho pode ser depender 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 mapa de mensagem e manipular a mensagem no formato WPARAM/LRESULT/LPARAM genérico.

WM_QUERYAFXWNDPROC

Esta mensagem é enviada para uma janela que está sendo criada.Isso é enviado muito cedo no processo de criação como um método para determinar se o WndProc é AfxWndProc.AfxWndProc retorna 1.

wParam

Não usado

lParam

Não usado

Retorna

1 se processadas pelo AfxWndProc

WM_SIZEPARENT

Esta mensagem é enviada por uma janela de quadro para seus filhos imediatos durante o redimensionamento (CFrameWnd::OnSize chamadas CFrameWnd::RecalcLayout quais chamadas CWnd::RepositionBars) para reposicionar as barras de controle ao redor do lado do quadro.O AFX_SIZEPARENTPARAMS estrutura contém o retângulo de cliente disponível atual de pai e um HDWP (que pode ser nulo) com o qual a chamada 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 fazem parte do layout.

WM_SETMESSAGESTRING

Esta mensagem é enviada para uma janela de quadro pedir a ele para atualizar a linha de mensagem na barra de status.Um ID de string ou um LPCSTR pode ser especificada (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

Esta mensagem é enviada em tempo ocioso para implementar a atualização do tempo de inatividade dos manipuladores de UI do comando update.Se a janela (geralmente uma barra de controle) manipula a mensagem, ele cria um CCmdUI objeto (ou um objeto de uma classe derivada) e chamar CCmdUI::DoUpdate para cada um dos "itens" na janela.Isso por sua vez irá verificar um ON_UPDATE_COMMAND_UI manipulador de objetos na cadeia de manipulador de comando.

wParam

BDisableIfNoHandler BOOL

lParam

Não usado (0)

Retorna

Não usado (0)

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

WM_EXITHELPMODE

Esta mensagem é enviada para um CFrameWnd que sair contextual ajuda modo.O recebimento dessa mensagem encerra o loop modal 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 do quadro quando ele é seguro fazer a atualização inicial.Ele mapeia para uma chamada para CView::OnInitialUpdate , mas pode ser usado em outros CWnd-derivadas de classes para outros única atualização.

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 (obtido por meio de GetParent) para forçar um recálculo de layout (normalmente, o pai chamará RecalcLayout).Isso é usado em aplicativos de servidor OLE onde é necessário para o quadro a crescer em tamanho à medida que aumenta de tamanho total do modo de exibição.

Se a janela pai processa esta mensagem deve retornar TRUE e preencher o RECT passado lParam com o novo tamanho da área cliente.Isso é usado em CScrollView manipular adequadamente scrollbars (lugar no fora da janela quando forem adicionados) quando um objeto de servidor é ativado no lugar.

wParam

Não usado (0)

lParam

LPRECT rectClient, pode ser NULL

Retorna

Retângulo TRUE se o novo cliente retornado, FALSO caso contrário

WM_SIZECHILD

Esta mensagem é enviada por COleResizeBar a sua janela do proprietário (via GetOwner) quando o usuário redimensionar a barra de redimensionamento com as alças de redimensionamento.COleIPFrameWndresponde a essa mensagem tentando reposicionar a janela do quadro, como o usuário solicitou.

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

wParam

Não usado (0)

lParam

RectNew LPRECT

Retorna

Não usado (0)

WM_DISABLEMODAL

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

Você pode usar para executar processamento especial na janela de pop-up quando o quadro entra em um estado de janela restrito ou manter determinadas janelas pop-up obter desativado.Dicas de ferramentas usam esta mensagem para destruir próprios quando a janela do quadro entra em um estado de janela restrito, por exemplo.

wParam

Não usado (0)

lParam

Não usado (0)

Retorna

Diferente de zero para não desativar a janela, 0 indica que a janela será desabilitada

WM_FLOATSTATUS

Esta mensagem é enviada para todas as janelas pop-up que pertence a uma janela do quadro quando o quadro é ativado ou desativado por outra janela de quadro de nível superior.Isso é usado pela implementação do MFS_SYNCACTIVE em 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 de retorno deve ser diferente de zero se FS_SYNCACTIVE é o conjunto e sincroniza a janela sua ativação com o quadro pai.CMiniFrameWndRetorna diferente de zero quando o estilo for 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 "grupo de nível superior" está ativada ou desativada.Uma janela é parte de um grupo de nível superior, se for uma janela de nível superior (nenhum pai ou proprietário) ou pertence a tal janela.Esta mensagem é semelhante em uso WM_ACTIVATEAPP, , mas funciona em situações onde windows pertencentes a processos diferentes são misturados em uma hierarquia de janela única (comuns em aplicativos OLE).

WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE

Essas mensagens são usadas na implementação da Ajuda contextual.Consulte técnico Observação 28 para obter mais informações.

Formatos de recurso particular MFC

Atualmente, a MFC define dois formatos de recurso particular: RT_TOOLBAR e RT_DLGINIT.

RT_TOOLBAR recurso formato

A barra de ferramentas padrão fornecida pelo AppWizard se baseia em um RT_TOOLBAR recursos personalizados, que foi introduzido no MFC 4.0.Você pode editar esse 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 de diálogo extra.Isso inclui as seqüências 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++.

Visual C++ e isso RT_DLGINIT recursos não são necessários para usar os recursos relacionados do MFC, já que há alternativa API usando as 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 a ID 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>);

Este é 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 só oferecem suporte 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 texto).

Consulte também

Outros recursos

Notas técnicas por número

Notas técnicas por categoria