TN024: Mensagens MFC-definido e recursos

Esta anotação descreve as mensagens do Windows internas e formatos de recursos usados pelo MFC. Essas informações explica a implementação do framework e ajudarão em Depurando seu aplicativo. Para os aventureiros, apesar de toda esta informação não é oficialmente suportada, você pode usar algumas dessas informações para implementações avançadas.

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

Os tipos de recurso e intervalo do MFC particulares mensagens do Windows estão no intervalo reservado "sistema" reservados pelo Microsoft Windows. Atualmente nem todos os números nos intervalos são usados e, no futuro, novos números no intervalo podem ser usados. Os números atualmente em uso podem ser alterados.

Windows particulares MFC mensa&gens estão no intervalo 0x360-gt; 0x37F.

Recurso particular MFC tipos de são o 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 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'. Esteja avisado que nenhum código que inclui este cabeçalho pode ser depender comportamento não documentado e será provável quebra no futuro versões do MFC.

No caso raro de que necessitam lidar com uma dessas mensagens, você deve usar a macro de mapa de mensagem ON_MESSAGE e manipular a mensagem no Formatarar LRESULT/WPARAM/LPARAM genérico.

WM_QUERYAFXWNDPROC

Esta mensagem é enviada para uma janela que está sendo criada. Este é 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 do quadro para seus filhos imediatos durante o redimensionamento (OnSize chamadas CFrameWnd:: RecalcLayout que chama CWnd:: RepositionBars) para reposicionar as barras de Controlarar ao redor do lado do quadro. A estrutura AFX_SIZEPARENTPARAMS contém o Retangular de cliente disponível atual de pai e um HDWP (que pode ser NULL) com o qual chamada DeferWindowPos para minimizar o redesenho.

wParam Não usado
lParam Endereço de uma estrutura AFX_SIZEPARENTPARAMS
retorna Não usado (0)

Ignorando a mensagem indica que a janela não toma parte no layout.

WM_SETMESSAGESTRING

Esta mensagem é enviada para uma janela do quadro para pedir-lhe para atualizar a linha de mensagem na barra de status. É possível especificar um ID de Cadeia de caracteres ou um LPCSTR (mas não ambos).

wParam Cadeia de caracteres ID (ou zero)
lParam LPCSTR para a Cadeia de caracteres (ou NULL)
retorna Não usado (0)

WM_IDLEUPDATECMDUI

Esta mensagem é enviada em tempo ocioso para implementar a actualização de tempo de inatividade de manipuladores de interface do usuário de comando de atualização. Se a janela (normalmente uma barra de Controlarar) manipula a mensagem, ele cria um objeto de CCmdUI (ou um objeto de uma classe derivada) e chamar CCmdUI::DoUpdate para cada um dos "itens" na janela. Isto, por sua vez irá marcar um manipulador de ON_UPDATE_COMMAND_UI para os 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 houver nem um ON_UPDATE_COMMAND_UI um manipulador de ON_COMMAND.

WM_COMMANDHELP

Esta mensagem é enviada para um CFrameWnd que para sair contextual ajuda modo. O recebimento desta 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 a todos os descendentes de uma janela do quadro quando ele é seguro para fazer sua atualização inicial. Ele mapeia para uma chamada para CView:: OnInitialUpdate mas pode ser usado em outros CWnd-derivadas de classes para outros atualização One-Shot.

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 um recálculo de layout (geralmente, o pai chamará RecalcLayout). Isso é usado em aplicativos de servidor OLE onde é necessário para o quadro a crescer em tamanho à medida que cresce de tamanho total do Exibir.

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

wParam Não usado (0)
lParam LPRECT rectClient, pode ser NULL
retorna TRUE se o novo cliente Retangular retornado, FALSO caso contrário

WM_SIZECHILD

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

O novo Retangular, no cliente coordenadas relativo para a janela do quadro que contém a barra de redimensionar, é 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 de pop-up propriedade de 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 isso para executar processamento especial na janela de pop-up quando o quadro entra em um Estado de janela restrito ou para manter certas janelas pop-up de ficar 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 de pop-up propriedade de uma janela do quadro quando o quadro é ativado ou desativado por outra janela de nível superior do quadro. Isso é usado pela implementação do MFS_SYNCACTIVE no CMiniFrameWnd, para manter em sincronia com a ativação da janela do quadro de nível superior, a ativação dessas janelas pop-up.

wParam É um dos seguintes valores:
FS_SHOW
FS_HIDE
FS_ACTIVATE
FS_DEACTIVATE
FS_ENABLE
FS_DISABLE
FS_SYNCACTIVE
lParam Não usado (0)

O valor de retorno deve ser diferente de zero se FS_SYNCACTIVE estiver definido e a janela syncronizes sua ativação com o quadro de pai. CMiniFrameWnd retorna diferente de 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 "grupo de alto nível" é ativada ou desactivada. Uma janela é parte de um grupo de nível superior se ele for uma janela alto nível (sem pai ou proprietário), ou é possuído por uma janela. Esta mensagem é semelhante em uso ao WM_ACTIVATEAPP, mas funciona em situações onde janelas que pertencem a diferentes processos são misturadas em uma hierarquia única janela (comum em aplicativos OLE).

WM_QUERY3DCONTROLS

Esta mensagem é enviada durante a criação da janela para determinar se a janela deve ser subclasse por CTL3D32.DLL. por controles 3D padrão são habilitado para CControlBar, CDialog, CPropertySheet e CFormView.

wParam Não usado (0)
lParam Não usado (0)
retorna Difere&nte de zero para subclasse com CTL3D.nbsp; O valor de retorno é usado para a chamada para Ctl3dSubclassDlgEx.

WM_COMMANDHELP WM_EXITHELPMODE, WM_HELPHITTEST,

Essas mensagens são usadas na aplicação da ajuda sensível ao contexto. Consulte 28 anotação técnica para obter mais informações.

Formatos de recursos do MFC particular

Há atualmente somente um MFC recurso particular formato definido, RT_DLGINIT.

Formatarar de recurso RT_DLGINIT

Um formato de recurso particular MFC é usado para armazenar informações de inicialização de caixa 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++.

O Visual C++ e este recurso RT_DLGINIT não são necessários para usar os recursos relacionados do MFC, uma vez que não há alternativa de API para usar as informações no recurso. Usando o Visual C++ torna muito mais fácil de gravar, manter e traduzir sua aplicação a longo prazo.

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

+---------------+nbsp;                   \
| Controlar ID |   UI&NT |
+---------------+                    |
| Mensagem # |   UINT |
+---------------+                    |
|length de dados |   DWORD |
+---------------+                    | Repetido
|   Dados |   Comprimento variável |   para cada controle
|     ...      |   e formato |   e a mensagem
+---------------+                    /
|     0         |   BYTE
+---------------+

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

SendDlgItemMessage (lt;ID do controle >, < mensagem #, > 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 lista-escolhas iniciais para caixas de combinação (os dados são uma Cadeia de caracteres de texto).

Técnico anotações por número |nbsp; &Notas técnicas por categoria

Index