TN024: Mensagens MFC-definido e recursos
Observaçã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).