TN024: Mensajes y recursos definidos por MFCTN024: MFC-Defined Messages and Resources

Nota

La nota técnica siguiente no se ha actualizado desde que se incluyó por primera vez en la documentación en línea.The following technical note has not been updated since it was first included in the online documentation. Como resultado, algunos procedimientos y temas podrían estar obsoletos o ser incorrectos.As a result, some procedures and topics might be out of date or incorrect. Para obtener información más reciente, se recomienda buscar el tema de interés en el índice de la documentación en línea.For the latest information, it is recommended that you search for the topic of interest in the online documentation index.

En esta nota se describen los mensajes internos de Windows y los formatos de recursos usados por MFC.This note describes the internal Windows messages and resource formats used by MFC. Esta información explica la implementación del marco de trabajo y le ayudará a depurar la aplicación.This information explains the implementation of the framework, and will assist you in debugging your application. En el caso de adventurous, aunque no se admite oficialmente toda esta información, puede usar parte de esta información para implementaciones avanzadas.For the adventurous, even though all this information is officially unsupported, you may use some of this information for advanced implementations.

Esta nota contiene detalles de la implementación privada de MFC; todo el contenido está sujeto a cambios en el futuro.This note contains MFC private implementation details; all the contents are subject to change in the future. Los mensajes de Windows privados de MFC solo tienen significado en el ámbito de una aplicación, pero cambiarán en el futuro para contener mensajes para todo el sistema.MFC private Windows messages have meaning in the scope of one application only but will change in the future to contain system-wide messages.

El intervalo de tipos de recursos y mensajes de Windows privados de MFC se ha reservado en el intervalo de "sistema" reservado por Microsoft Windows.The range of MFC private Windows messages and resource types are in the reserved "system" range set aside by Microsoft Windows. Actualmente no se usan todos los números de los intervalos y, en el futuro, se pueden usar nuevos números en el intervalo.Currently not all numbers in the ranges are used and, in the future, new numbers in the range may be used. Los números utilizados actualmente se pueden cambiar.The currently used numbers may be changed.

Los mensajes de Windows privados de MFC están en el intervalo 0x360->0x37F.MFC private Windows messages are in the range 0x360->0x37F.

Los tipos de recursos privados de MFC están en el intervalo 0xF0->0xFF.MFC private resource types are in the range 0xF0->0xFF.

Mensajes de Windows privados de MFCMFC Private Windows Messages

Estos mensajes de Windows se usan en lugar de las funciones virtuales de C++, donde se requiere un acoplamiento relativamente flexible entre los objetos de ventana y en los casos en los que una función virtual de C++ no sería adecuada.These Windows messages are used in place of C++ virtual functions where relatively loose coupling is required between window objects and where a C++ virtual function would not be appropriate.

Estos mensajes privados de Windows y las estructuras de parámetros asociadas se declaran en el encabezado privado de MFC ' AFXPRIV. H '.These private Windows messages and associated parameter structures are declared in the MFC private header 'AFXPRIV.H'. Tenga en cuenta que cualquier código que incluya este encabezado puede basarse en un comportamiento no documentado y probablemente se interrumpa en versiones futuras de MFC.Be warned that any of your code that includes this header may be relying on undocumented behavior and will likely break in future versions of MFC.

En el caso excepcional de que se necesite controlar uno de estos mensajes, se debe usar la macro ON_MESSAGE mapa de mensajes y controlar el mensaje en el formato LRESULT/WPARAM/LPARAM genérico.In the rare case of needing to handle one of these messages, you should use the ON_MESSAGE message map macro and handle the message in the generic LRESULT/WPARAM/LPARAM format.

WM_QUERYAFXWNDPROCWM_QUERYAFXWNDPROC

Este mensaje se envía a una ventana que se va a crear.This message is sent to a window that is being created. Esto se envía muy pronto en el proceso de creación como un método para determinar si WndProc es AfxWndProc. AfxWndProc devuelve 1.This is sent very early in the creation process as a method of determining if the WndProc is AfxWndProc. AfxWndProc returns 1.

Parámetros y valor devueltoParameters and return value DescripciónDescription
wParamwParam No se usaNot used
lParamlParam No se usaNot used
devuelvereturns 1 si se procesa mediante AfxWndProc1 if processed by AfxWndProc

WM_SIZEPARENTWM_SIZEPARENT

Este mensaje se envía mediante una ventana de marco a sus elementos secundarios inmediatos durante CFrameWnd::OnSize el cambio de tamaño (llama a CFrameWnd::RecalcLayout las llamadas CWnd::RepositionBars ) para cambiar la posición de las barras de control por la parte lateral del marco.This message is sent by a frame window to its immediate children during resizing (CFrameWnd::OnSize calls CFrameWnd::RecalcLayout which calls CWnd::RepositionBars) to reposition the control bars around the side of the frame. La estructura AFX_SIZEPARENTPARAMS contiene el rectángulo cliente disponible actual del elemento primario y un HDWP (que puede ser NULL) al que llamar DeferWindowPos para minimizar la repintado.The AFX_SIZEPARENTPARAMS structure contains the current available client rectangle of the parent and a HDWP (which may be NULL) with which to call DeferWindowPos to minimize repainting.

Parámetros y valor devueltoParameters and return value DescripciónDescription
wParamwParam No se usaNot used
lParamlParam Dirección de una estructura de AFX_SIZEPARENTPARAMSAddress of an AFX_SIZEPARENTPARAMS structure
devuelvereturns No se usa (0)Not used (0)

Si se omite el mensaje, indica que la ventana no participa en el diseño.Ignoring the message indicates that the window doesn't take part in the layout.

WM_SETMESSAGESTRINGWM_SETMESSAGESTRING

Este mensaje se envía a una ventana de marco para pedirle que actualice la línea de mensaje en la barra de estado.This message is sent to a frame window to ask it to update the message line in the status bar. Se puede especificar un identificador de cadena o un LPCSTR (pero no ambos).Either a string ID or a LPCSTR can be specified (but not both).

Parámetros y valor devueltoParameters and return value DescripciónDescription
wParamwParam IDENTIFICADOR de cadena (o cero)String ID (or zero)
lParamlParam LPCSTR para la cadena (o NULL)LPCSTR for the string (or NULL)
devuelvereturns No se usa (0)Not used (0)

WM_IDLEUPDATECMDUIWM_IDLEUPDATECMDUI

Este mensaje se envía en tiempo de inactividad para implementar la actualización en tiempo de inactividad de los controladores de la interfaz de usuario de Update-Command.This message is sent in idle time to implement the idle-time update of update-command UI handlers. Si la ventana (normalmente una barra de control) controla el mensaje, crea un CCmdUI objeto (o un objeto de una clase derivada) y llama a CCmdUI::DoUpdate para cada uno de los "elementos" en la ventana.If the window (usually a control bar) handles the message, it creates a CCmdUI object (or an object of a derived class) and call CCmdUI::DoUpdate for each of the "items" in the window. Esto, a su vez, comprobará si hay un controlador de ON_UPDATE_COMMAND_UI para los objetos de la cadena del controlador de comandos.This will in turn check for an ON_UPDATE_COMMAND_UI handler for the objects in the command-handler chain.

Parámetros y valor devueltoParameters and return value DescripciónDescription
wParamwParam BOOL bDisableIfNoHandlerBOOL bDisableIfNoHandler
lParamlParam No se usa (0)Not used (0)
devuelvereturns No se usa (0)Not used (0)

bDisableIfNoHandler es distinto de cero para deshabilitar el objeto de interfaz de usuario si no hay ningún ON_UPDATE_COMMAND_UI ni un controlador de ON_COMMAND.bDisableIfNoHandler is nonzero to disable the UI object if there is neither an ON_UPDATE_COMMAND_UI nor an ON_COMMAND handler.

WM_EXITHELPMODEWM_EXITHELPMODE

Este mensaje se envía a un CFrameWnd para salir del modo de ayuda contextual.This message is posted to a CFrameWnd that to exit context sensitive help mode. La recepción de este mensaje finaliza el bucle modal Iniciado por CFrameWnd::OnContextHelp .The receipt of this message terminates the modal loop started by CFrameWnd::OnContextHelp.

Parámetro y valor devueltoParameter and return value DescripciónDescription
wParamwParam No se usa (0)Not used (0)
lParamlParam No se usa (0)Not used (0)
devuelvereturns No se usaNot used

WM_INITIALUPDATEWM_INITIALUPDATE

La plantilla de documento envía este mensaje a todos los descendientes de una ventana de marco cuando es seguro realizar su actualización inicial.This message is sent by the document template to all descendants of a frame window when it is safe for them to do their initial update. Se asigna a una llamada a, CView::OnInitialUpdate pero se puede usar en otras CWnd clases derivadas de para otras actualizaciones de una captura.It maps to a call to CView::OnInitialUpdate but can be used in other CWnd-derived classes for other one-shot updating.

Parámetros y valor devueltoParameters and return value DescripciónDescription
wParamwParam No se usa (0)Not used (0)
lParamlParam No se usa (0)Not used (0)
devuelvereturns No se usa (0)Not used (0)

WM_RECALCPARENTWM_RECALCPARENT

Este mensaje se envía mediante una vista a su ventana primaria (obtenida a través de GetParent ) para forzar un recálculo del diseño (normalmente, el elemento primario llamará a RecalcLayout ).This message is sent by a view to its parent window (obtained via GetParent) to force a layout recalculation (usually, the parent will call RecalcLayout). Se utiliza en las aplicaciones de servidor OLE en las que es necesario que el marco aumente de tamaño a medida que aumenta el tamaño total de la vista.This is used in OLE server applications where it is necessary for the frame to grow in size as the view's total size grows.

Si la ventana primaria procesa este mensaje, debe devolver TRUE y rellenar el RECT pasado en lParam con el nuevo tamaño del área cliente.If the parent window processes this message it should return TRUE and fill the RECT passed in lParam with the new size of the client area. Se utiliza en CScrollView para controlar correctamente las barras de desplazamiento (colocar después en el exterior de la ventana cuando se agregan) cuando un objeto de servidor está activado en contexto.This is used in CScrollView to properly handle scrollbars (place then on the outside of the window when they are added) when a server object is in-place activated.

Parámetros y valor devueltoParameters and return value DescripciónDescription
wParamwParam No se usa (0)Not used (0)
lParamlParam LPRECT rectClient, puede ser NULLLPRECT rectClient, may be NULL
devuelvereturns TRUE si se devuelve un nuevo rectángulo de cliente; de lo contrario, FALSETRUE if new client rectangle returned, FALSE otherwise

WM_SIZECHILDWM_SIZECHILD

Este mensaje lo envía COleResizeBar a su ventana propietaria (a través de GetOwner ) cuando el usuario cambia el tamaño de la barra de redimensionamiento con los controladores de tamaño.This message is sent by COleResizeBar to its owner window (via GetOwner) when the user resizes the resize bar with the resize handles. COleIPFrameWnd responde a este mensaje intentando cambiar la posición de la ventana de marco cuando el usuario ha solicitado.COleIPFrameWnd responds to this message by attempting to reposition the frame window as the user has requested.

El nuevo rectángulo, dado en coordenadas de cliente en relación con la ventana de marco que contiene la barra de redimensionamiento, se señala por lParam.The new rectangle, given in client coordinates relative to the frame window which contains the resize bar, is pointed at by lParam.

Parámetros y valor devueltoParameters and return value DescripciónDescription
wParamwParam No se usa (0)Not used (0)
lParamlParam LPRECT rectNewLPRECT rectNew
devuelvereturns No se usa (0)Not used (0)

WM_DISABLEMODALWM_DISABLEMODAL

Este mensaje se envía a todas las ventanas emergentes que pertenecen a una ventana de marco que se está desactivando.This message is sent to all pop-up windows owned by a frame window that is being deactivated. La ventana marco utiliza el resultado para determinar si se va a deshabilitar o no la ventana emergente.The frame window uses the result to determine whether or not to disable the pop-up window.

Puede utilizar esto para realizar un procesamiento especial en la ventana emergente cuando el marco entra en un estado modal o para mantener deshabilitadas determinadas ventanas emergentes.You can use this to perform special processing in your pop-up window when the frame enters a modal state or to keep certain pop-up windows from getting disabled. La información sobre herramientas usa este mensaje para destruirse cuando la ventana de marco entra en un estado modal, por ejemplo.Tooltips use this message to destroy themselves when the frame window goes into a modal state, for example.

Parámetros y valor devueltoParameters and return value DescripciónDescription
wParamwParam No se usa (0)Not used (0)
lParamlParam No se usa (0)Not used (0)
devuelvereturns Distinto de cero para no deshabilitar la ventana, 0 indica que la ventana se deshabilitaráNon-zero to NOT disable the window, 0 indicates the window will be disabled

WM_FLOATSTATUSWM_FLOATSTATUS

Este mensaje se envía a todas las ventanas emergentes que pertenecen a una ventana de marco cuando el marco se activa o desactiva por otra ventana de marco de nivel superior.This message is sent to all pop-up windows owned by a frame window when the frame is either activated or deactivated by another top-level frame window. Lo usa la implementación de MFS_SYNCACTIVE en CMiniFrameWnd , para mantener la activación de estas ventanas emergentes sincronizadas con la activación de la ventana de marco de nivel superior.This is used by the implementation of MFS_SYNCACTIVE in CMiniFrameWnd, to keep the activation of these pop-up windows in sync with the activation of the top level frame window.

ParámetrosParameters DescripciónDescription
wParamwParam Es uno de los siguientes valores:Is one of the following values:

FS_SHOWFS_SHOW

FS_HIDEFS_HIDE

FS_ACTIVATEFS_ACTIVATE

FS_DEACTIVATEFS_DEACTIVATE

FS_ENABLEFS_DISABLEFS_ENABLEFS_DISABLE

FS_SYNCACTIVEFS_SYNCACTIVE
lParamlParam No se usa (0)Not used (0)

El valor devuelto debe ser distinto de cero si se establece FS_SYNCACTIVE y la ventana syncronizes su activación con el marco primario.The return value should be non-zero if FS_SYNCACTIVE is set and the window syncronizes its activation with the parent frame. CMiniFrameWnd Devuelve un valor distinto de cero cuando el estilo se establece en MFS_SYNCACTIVE.CMiniFrameWnd returns non-zero when the style is set to MFS_SYNCACTIVE.

Para obtener más información, vea la implementación de CMiniFrameWnd .For more information, see the implementation of CMiniFrameWnd.

WM_ACTIVATETOPLEVELWM_ACTIVATETOPLEVEL

Este mensaje se envía a una ventana de nivel superior cuando una ventana en su "grupo de nivel superior" se activa o desactiva.This message is sent to a top-level window when a window in its "top-level group" is either activated or deactivated. Una ventana forma parte de un grupo de nivel superior si se trata de una ventana de nivel superior (ningún elemento primario o propietario) o es propiedad de dicha ventana.A window is part of a top-level group if it is a top-level window (no parent or owner), or it is owned by such a window. Este mensaje es similar en uso a WM_ACTIVATEAPP, pero funciona en situaciones en las que las ventanas que pertenecen a procesos diferentes se mezclan en una sola jerarquía de ventana (común en aplicaciones OLE).This message is similar in use to WM_ACTIVATEAPP, but works in situations where windows belonging to different processes are mixed in a single window hierarchy (common in OLE applications).

WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODEWM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE

Estos mensajes se utilizan en la implementación de la ayuda contextual.These messages are used in the implementation of context-sensitive Help. Para obtener más información, consulte la Nota técnica 28 .Please refer to Technical Note 28 for more information.

Formatos de recursos privados de MFCMFC Private Resource Formats

Actualmente, MFC define dos formatos de recursos privados: RT_TOOLBAR y RT_DLGINIT.Currently, MFC defines two private resource formats: RT_TOOLBAR and RT_DLGINIT.

RT_TOOLBAR formato de recursosRT_TOOLBAR Resource Format

La barra de herramientas predeterminada proporcionada por AppWizard se basa en un RT_TOOLBAR recurso personalizado, que se presentó en MFC 4,0.The default toolbar supplied by AppWizard is based on an RT_TOOLBAR custom resource, which was introduced in MFC 4.0. Puede editar este recurso mediante el editor de la barra de herramientas.You can edit this resource using the Toolbar editor.

RT_DLGINIT formato de recursosRT_DLGINIT Resource Format

Se usa un formato de recursos privado de MFC para almacenar información adicional de inicialización del cuadro de diálogo.One MFC private resource format is used to store extra dialog initialization information. Esto incluye las cadenas iniciales almacenadas en un cuadro combinado.This includes the initial strings stored in a combo box. El formato de este recurso no está diseñado para editarse manualmente, pero se controla mediante Visual C++.The format of this resource is not designed to be manually edited, but is handled by Visual C++.

Visual C++ y este recurso RT_DLGINIT no son necesarios para usar las características relacionadas de MFC, ya que la API es alternativa al uso de la información del recurso.Visual C++ and this RT_DLGINIT resource are not required to use the related features of MFC since there are API alternative to using the information in the resource. El uso de Visual C++ facilita la escritura, el mantenimiento y la traducción de la aplicación a largo plazo.Using Visual C++ makes it much easier to write, maintain, and translate your application in the long run.

La estructura básica de un recurso RT_DLGINIT es la siguiente:The basic structure of a RT_DLGINIT resource is as follows:

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

Una sección repetida contiene el identificador de control al que se va a enviar el mensaje, el número de mensaje que se va a enviar (un mensaje normal de Windows) y una longitud variable de los datos.A repeated section contains the control ID to send the message to, the Message # to send (a normal Windows message) and a variable length of data. El mensaje de Windows se envía de la forma siguiente:The Windows message is sent in a form:

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

Se trata de un formato muy general, que permite cualquier mensaje de Windows y contenido de datos.This is a very general format, allowing any Windows messages and data content. El editor de recursos de Visual C++ y MFC solo admiten un subconjunto limitado de mensajes de Windows: CB_ADDSTRING para las opciones de lista iniciales de los cuadros combinados (los datos son una cadena de texto).The Visual C++ resource editor and MFC only support a limited subset of Windows messages: CB_ADDSTRING for the initial list-choices for combo boxes (the data is a text string).

Consulte tambiénSee also

Notas técnicas por númeroTechnical Notes by Number
Notas técnicas por categoríaTechnical Notes by Category