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).