Clase CWnd
Proporciona la funcionalidad básica de todas las clases de ventana en la biblioteca MFC (Microsoft Foundation Class).
Sintaxis
class CWnd : public CCmdTarget
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CWnd::CWnd |
Construye un objeto CWnd . |
Métodos públicos
Nombre | Descripción |
---|---|
CWnd::accDoDefaultAction |
El marco llama a este método para realizar la acción predeterminada del objeto. |
CWnd::accHitTest |
El marco llama a este método para recuperar el elemento u objeto secundario situado en un punto dado de la pantalla. |
CWnd::accLocation |
El marco llama a este método para recuperar la ubicación actual del objeto especificado en la pantalla. |
CWnd::accNavigate |
El marco llama a este método para ir a otro elemento de la interfaz de usuario dentro de un contenedor y, si es posible, recuperar el objeto. |
CWnd::accSelect |
El marco llama a este método para modificar la selección o desplazar el foco de teclado del objeto especificado. |
CWnd::AnimateWindow |
Anima el objeto de ventana asociado. |
CWnd::ArrangeIconicWindows |
Organiza todas las ventanas secundarias (iconos) minimizadas. |
CWnd::Attach |
Asocia un identificador de Windows a un objeto CWnd . |
CWnd::BeginModalState |
Llame a esta función miembro para convertir una ventana marco en modal. |
CWnd::BeginPaint |
Prepara CWnd para pintar. |
CWnd::BindDefaultProperty |
Enlaza la propiedad enlazada simple predeterminada del objeto que llama, tal y como se indica en la biblioteca de tipos, a un cursor asociado con un control de origen de datos. |
CWnd::BindProperty |
Enlaza una propiedad enlazada del cursor en un control enlazado a datos a un control de origen de datos, y registra dicha relación con el administrador de enlaces de MFC. |
CWnd::BringWindowToTop |
Lleva CWnd al principio de una pila de ventanas superpuestas. |
CWnd::CalcWindowRect |
Se llama para calcular el rectángulo de la ventana a partir del rectángulo de cliente. |
CWnd::CancelToolTips |
Deshabilita el control de información sobre herramientas. |
CWnd::CenterWindow |
Centra una ventana con respecto a su elemento primario. |
CWnd::ChangeClipboardChain |
Quita CWnd de la cadena de visores del Portapapeles. |
CWnd::CheckDlgButton |
Pone o quita una marca de verificación al lado de un control de botón. |
CWnd::CheckRadioButton |
Selecciona el botón de radio especificado y quita la marca de verificación de los demás botones de radio en el grupo de botones especificado. |
CWnd::ChildWindowFromPoint |
Determina cuál de las ventanas secundarias (si las hay) contiene el punto especificado. |
CWnd::ClientToScreen |
Convierte a las coordenadas de cliente de un punto o rectángulo determinado en pantalla en las coordenadas de pantalla. |
CWnd::CloseWindow |
Minimiza la ventana. |
CWnd::ContinueModal |
Continúa el estado modal de una ventana. |
CWnd::Create |
Crea e inicializa la ventana secundaria asociada con el objeto CWnd . |
CWnd::CreateAccessibleProxy |
Crea a un proxy de Active Accessibility para el objeto especificado. |
CWnd::CreateCaret |
Crea una nueva forma para el símbolo de inserción y se hace con la propiedad de ese símbolo de inserción. |
CWnd::CreateControl |
Crea un control ActiveX que se va a representar en un programa MFC con un objeto CWnd . |
CWnd::CreateEx |
Crea una ventana de Windows superpuesta, emergente o secundaria y la asocia con un objeto CWnd . |
CWnd::CreateGrayCaret |
Crea un bloque de color gris para el símbolo de inserción y se hace con la propiedad de ese símbolo de inserción. |
CWnd::CreateSolidCaret |
Crea un bloque sólido para el símbolo de inserción y se hace con la propiedad de ese símbolo de inserción. |
CWnd::DeleteTempMap |
Clase llamada automáticamente por el controlador de tiempo de inactividad CWinApp que elimina los objetos CWnd temporales creados por FromHandle . |
CWnd::DestroyWindow |
Destruye la ventana de Windows asociada. |
CWnd::Detach |
Desasocia un identificador de Windows de un objeto CWnd y devuelve el identificador. |
CWnd::DlgDirList |
Rellena un cuadro de lista con una lista de archivos o directorios. |
CWnd::DlgDirListComboBox |
Rellena el cuadro de lista de un cuadro combinado con una lista de archivos o directorios. |
CWnd::DlgDirSelect |
Recupera la selección actual de un cuadro de lista. |
CWnd::DlgDirSelectComboBox |
Recupera la selección actual del cuadro de lista de un cuadro combinado. |
CWnd::DragAcceptFiles |
Indica que la ventana aceptará archivos arrastrados. |
CWnd::DragDetect |
Captura el mouse y realiza un seguimiento de su movimiento hasta que el usuario suelta el botón primario, presiona la tecla ESC o mueve el mouse fuera del rectángulo de arrastre alrededor del punto especificado. |
CWnd::DrawAnimatedRects |
Dibuja un rectángulo de trama de alambres y lo anima para señalar un icono abierto o una ventana minimizada o maximizada. |
CWnd::DrawCaption |
Dibuja una leyenda. |
CWnd::DrawMenuBar |
Vuelve a dibujar la barra de menús. |
CWnd::EnableActiveAccessibility |
Habilita las funciones de Active Accessibility definidas por el usuario. |
CWnd::EnableDynamicLayout |
Permite que la posición y el tamaño de las ventanas secundarias se ajusten dinámicamente cuando el usuario cambie el tamaño de la ventana. |
CWnd::EnableD2DSupport |
Habilita o deshabilita la compatibilidad de D2D de ventana. Llame a este método antes de que se inicialice la ventana principal. |
CWnd::EnableScrollBar |
Habilita o deshabilita una o ambas flechas de una barra de desplazamiento. |
CWnd::EnableScrollBarCtrl |
Habilita o deshabilita un control de barra de desplazamiento del mismo nivel. |
CWnd::EnableToolTips |
Habilita el control de información sobre herramientas. |
CWnd::EnableTrackingToolTips |
Habilita el control de información sobre herramientas en el modo de seguimiento. |
CWnd::EnableWindow |
Habilita o deshabilita la entrada de mouse y de teclado. |
CWnd::EndModalLoop |
Finaliza el estado modal de una ventana. |
CWnd::EndModalState |
Llame a esta función miembro para cambiar una ventana marco de modal a no modal. |
CWnd::EndPaint |
Marca el final de la pintura. |
CWnd::ExecuteDlgInit |
Inicia un recurso de cuadro de diálogo. |
CWnd::FilterToolTipMessage |
Recupera el título o el texto asociado a un control en un cuadro de diálogo. |
CWnd::FindWindow |
Devuelve el identificador de la ventana, que se reconoce por su nombre de ventana y su clase de ventana. |
CWnd::FindWindowEx |
Devuelve el identificador de la ventana, que se reconoce por su nombre de ventana y su clase de ventana. |
CWnd::FlashWindow |
Hace que la ventana parpadee una vez. |
CWnd::FlashWindowEx |
Hace que la ventana parpadee con una funcionalidad adicional. |
CWnd::FromHandle |
Devuelve un puntero a un objeto CWnd cuando se especifica un identificador a una ventana. Si un objeto CWnd no está asociado al identificador, se creará y asociará un objeto CWnd temporal. |
CWnd::FromHandlePermanent |
Devuelve un puntero a un objeto CWnd cuando se especifica un identificador a una ventana. |
CWnd::get_accChild |
El marco llama a este método para recuperar la dirección de una interfaz IDispatch del elemento secundario especificado. |
CWnd::get_accChildCount |
El marco llama a este método para recuperar el número de elementos secundarios que pertenecen a este objeto. |
CWnd::get_accDefaultAction |
El marco llama a este método para recuperar una cadena que describe la acción predeterminada del objeto. |
CWnd::get_accDescription |
El marco llama a este método para recuperar una cadena que describe la apariencia visual del objeto especificado. |
CWnd::get_accFocus |
El marco llama a este método para recuperar el objeto que tiene el foco de teclado. |
CWnd::get_accHelp |
El marco llama a este método para recuperar la cadena de propiedad Help de un objeto. |
CWnd::get_accHelpTopic |
El marco llama a este método para recuperar la ruta de acceso completa del archivo WinHelp asociado al objeto especificado y el identificador del tema correspondiente dentro de ese archivo. |
CWnd::get_accKeyboardShortcut |
El marco llama a este método para recuperar la tecla de método abreviado o la tecla de acceso del objeto especificado. |
CWnd::get_accName |
El marco llama a este método para recuperar el nombre del objeto especificado. |
CWnd::get_accParent |
El marco llama a este método para recuperar la interfaz IDispatch del elemento principal del objeto. |
CWnd::get_accRole |
El marco llama a este método para recuperar información que describe el rol del objeto especificado. |
CWnd::get_accSelection |
El marco llama a este método para recuperar el elemento secundario seleccionado de este objeto. |
CWnd::get_accState |
El marco llama a este método para recuperar el estado actual del objeto especificado. |
CWnd::get_accValue |
El marco llama a este método para recuperar el valor del objeto especificado. |
CWnd::GetActiveWindow |
Recupera la ventana activa. |
CWnd::GetAncestor |
Recupera el objeto de ventana antecesor de la ventana especificada. |
CWnd::GetCapture |
Recupera el objeto CWnd que tiene la captura del mouse. |
CWnd::GetCaretPos |
Recupera las coordenadas de cliente de la posición actual del cursor de inserción. |
CWnd::GetCheckedRadioButton |
Devuelve el identificador del botón de radio actualmente activado en un grupo de botones. |
CWnd::GetClientRect |
Obtiene las dimensiones del área cliente CWnd . |
CWnd::GetClipboardOwner |
Recupera un puntero al propietario actual del Portapapeles. |
CWnd::GetClipboardViewer |
Recupera un puntero a la primera ventana de la cadena de visores del Portapapeles. |
CWnd::GetControlUnknown |
Recupera un puntero a un control ActiveX desconocido. |
CWnd::GetDC |
Recupera un contexto de presentación del área cliente. |
CWnd::GetDCEx |
Recupera un contexto de presentación del área cliente y permite recortar mientras se dibuja. |
CWnd::GetDCRenderTarget |
Recupera el destino de representación (DC) del contexto de dispositivo de la ventana CWnd . |
CWnd::GetDescendantWindow |
Encuentra todas las ventanas descendientes y devuelve aquella con el identificador especificado. |
CWnd::GetDesktopWindow |
Recupera la ventana de escritorio de Windows. |
CWnd::GetDlgCtrlID |
Si el objeto CWnd es una ventana secundaria, la llamada a esta función devuelve su valor de identificador correspondiente. |
CWnd::GetDlgItem |
Recupera el control con el identificador especificado del cuadro de diálogo especificado. |
CWnd::GetDlgItemInt |
Convierte el texto de un control en el cuadro de diálogo determinado en un valor entero. |
CWnd::GetDlgItemText |
Recupera la leyenda o el texto asociado a un control. |
CWnd::GetDSCCursor |
Recupera un puntero al cursor subyacente que se define mediante las propiedades DataSource, UserName, Password y SQL de un control de origen de datos. |
CWnd::GetDynamicLayout |
Recupera un puntero al objeto del administrador de diseño dinámico. |
CWnd::GetExStyle |
Devuelve el estilo extendido de ventana. |
CWnd::GetFocus |
Recupera el objeto CWnd que tiene el foco de entrada actualmente. |
CWnd::GetFont |
Recupera la fuente actual. |
CWnd::GetForegroundWindow |
Devuelve un puntero a la ventana de primer plano (la ventana de nivel superior con la que el usuario está trabajando actualmente). |
CWnd::GetIcon |
Recupera el identificador de un icono. |
CWnd::GetLastActivePopup |
Determina cuál fue la ventana emergente propiedad de CWnd activa más recientemente. |
CWnd::GetLayeredWindowAttributes |
Recupera la clave de color de transparencia y opacidad de una ventana superpuesta. |
CWnd::GetMenu |
Recupera un puntero al menú especificado. |
CWnd::GetNextDlgGroupItem |
Busca el control siguiente (o anterior) dentro de un grupo de controles. |
CWnd::GetNextDlgTabItem |
Recupera el primer control con el estilo WS_TABSTOP que sigue (o precede) al control especificado. |
CWnd::GetNextWindow |
Devuelve la ventana siguiente (o anterior) en la lista del Administrador de ventanas. |
CWnd::GetOleControlSite |
Recupera el sitio personalizado del control ActiveX especificado. |
CWnd::GetOpenClipboardWindow |
Recupera un puntero a la ventana que tiene actualmente el Portapapeles abierto. |
CWnd::GetOwner |
Recupera un puntero al propietario de un objeto CWnd . |
CWnd::GetParent |
Recupera la ventana primaria de CWnd (si existe). |
CWnd::GetParentFrame |
Recupera la ventana marco primaria del objeto CWnd . |
CWnd::GetParentOwner |
Devuelve un puntero a la ventana primaria de una ventana secundaria. |
CWnd::GetProperty |
Recupera una propiedad de control ActiveX. |
CWnd::GetRenderTarget |
Obtiene un destino de presentación asociado a esta ventana. |
CWnd::GetSafeHwnd |
Devuelve m_hWnd , o NULL si el puntero de this es NULL. |
CWnd::GetSafeOwner |
Recupera el propietario seguro de la ventana especificada. |
CWnd::GetScrollBarCtrl |
Devuelve un control de barra de desplazamiento del mismo nivel. |
CWnd::GetScrollBarInfo |
Recupera información sobre la barra de desplazamiento especificada. |
CWnd::GetScrollInfo |
Recupera la información que la estructura SCROLLINFO mantiene sobre una barra de desplazamiento. |
CWnd::GetScrollLimit |
Recupera el límite de la barra de desplazamiento. |
CWnd::GetScrollPos |
Recupera la posición actual de un cuadro de desplazamiento. |
CWnd::GetScrollRange |
Copia las posiciones mínima y máxima actuales de la barra de desplazamiento especificada. |
CWnd::GetStyle |
Devuelve el estilo de ventana actual. |
CWnd::GetSystemMenu |
Permite a la aplicación tener acceso al menú de sistema para hacer copias y modificaciones. |
CWnd::GetTitleBarInfo |
Recupera información sobre la barra de título especificada. |
CWnd::GetTopLevelFrame |
Recupera la ventana marco de nivel superior de la ventana. |
CWnd::GetTopLevelOwner |
Recupera la ventana de nivel superior. |
CWnd::GetTopLevelParent |
Recupera el elemento principal de nivel superior de la ventana. |
CWnd::GetTopWindow |
Devuelve la primera ventana secundaria que pertenece al objeto CWnd . |
CWnd::GetUpdateRect |
Recupera las coordenadas del rectángulo más pequeño que contiene toda la región de actualización de CWnd . |
CWnd::GetUpdateRgn |
Recupera la región de actualización de CWnd . |
CWnd::GetWindow |
Devuelve la ventana con la relación especificada con esta ventana. |
CWnd::GetWindowContextHelpId |
Recupera el identificador de contexto de Ayuda. |
CWnd::GetWindowDC |
Recupera el contexto de presentación de toda la ventana, como la barra de título, los menús y las barras de desplazamiento. |
CWnd::GetWindowedChildCount |
Devuelve al número de ventanas secundarias asociadas. |
CWnd::GetWindowInfo |
Devuelve información sobre la ventana. |
CWnd::GetWindowlessChildCount |
Devuelve el número de ventanas secundarias asociadas sin ventanas. |
CWnd::GetWindowPlacement |
Recupera el estado de visualización y las posiciones normal (restaurada), minimizada y maximizada de una ventana. |
CWnd::GetWindowRect |
Obtiene las coordenadas de pantalla de CWnd . |
CWnd::GetWindowRgn |
Recupera una copia de la región de ventana de una ventana. |
CWnd::GetWindowText |
Devuelve el título de texto o de leyenda de la ventana (si lo hay). |
CWnd::GetWindowTextLength |
Devuelve la longitud del título de texto o de leyenda de la ventana. |
CWnd::HideCaret |
Quita el cursor de inserción de la presentación en pantalla para ocultarlo. |
CWnd::HiliteMenuItem |
Resalta un elemento de menú de nivel superior (barra de menús) o quita el resaltado de este. |
CWnd::HtmlHelp |
Se llama para iniciar la aplicación HTMLHelp. |
CWnd::Invalidate |
Invalida toda el área cliente. |
CWnd::InvalidateRect |
Invalida el área cliente dentro del rectángulo especificado agregando dicho rectángulo a la región de actualización actual. |
CWnd::InvalidateRgn |
Invalida el área cliente dentro de la región especificada agregando dicha región a la región de actualización actual. |
CWnd::InvokeHelper |
Invoca un método o una propiedad de control ActiveX. |
CWnd::IsChild |
Indica si CWnd es una ventana secundaria u otro descendiente directo de la ventana especificada. |
CWnd::IsD2DSupportEnabled |
Determina si la compatibilidad con D2D está habilitada. |
CWnd::IsDialogMessage |
Determina si el mensaje en cuestión está pensado para el cuadro de diálogo no modal y, si es así, lo procesa. |
CWnd::IsDlgButtonChecked |
Determina si un control de botón está seleccionado. |
CWnd::IsDynamicLayoutEnabled |
Determina si el diseño dinámico está habilitado en esta ventana. Si el diseño dinámico está habilitado, la posición y el tamaño de las ventanas secundarias pueden cambiar cuando el usuario cambie el tamaño de la ventana primaria. |
CWnd::IsIconic |
Determina si CWnd está minimizado (icono). |
CWnd::IsTouchWindow |
Especifica si CWnd es compatible con la entrada táctil. |
CWnd::IsWindowEnabled |
Determina si la ventana está habilitada para la entrada de mouse y de teclado. |
CWnd::IsWindowVisible |
Determina si la ventana está visible. |
CWnd::IsZoomed |
Determina si CWnd está maximizado. |
CWnd::KillTimer |
Elimina un cronómetro del sistema. |
CWnd::LockWindowUpdate |
No permite o vuelve a permitir que se dibuje en la ventana especificada. |
CWnd::MapWindowPoints |
Convierte (asigna) un conjunto de puntos del espacio de coordenadas de CWnd al espacio de coordenadas de otra ventana. |
CWnd::MessageBox |
Crea y muestra una ventana que contiene un mensaje y una leyenda proporcionados por la aplicación. |
CWnd::ModifyStyle |
Modifica el estilo de ventana actual. |
CWnd::ModifyStyleEx |
Modifica el estilo extendido de ventana. |
CWnd::MoveWindow |
Cambia la posición y las dimensiones de CWnd . |
CWnd::NotifyWinEvent |
Indica al sistema que se ha producido un evento predefinido. |
CWnd::OnAmbientProperty |
Implemente valores de propiedad ambiente. |
CWnd::OnDrawIconicThumbnailOrLivePreview |
El marco llama a este método cuando necesita obtener un mapa de bits para mostrarlo en la miniatura de pestañas de Windows 7 o en el cliente para ojear la aplicación. |
CWnd::OnHelp |
Controla la Ayuda de F1 de la aplicación (usando el contexto actual). |
CWnd::OnHelpFinder |
Controla los comandos ID_HELP_FINDER y ID_DEFAULT_HELP . |
CWnd::OnHelpIndex |
Controla el comando ID_HELP_INDEX y proporciona un tema de Ayuda predeterminado. |
CWnd::OnHelpUsing |
Controla el comando ID_HELP_USING . |
CWnd::OnToolHitTest |
Determina si un punto está en el rectángulo delimitador de la herramienta especificada y recupera información sobre dicha herramienta. |
CWnd::OpenClipboard |
Abre el Portapapeles. Otras aplicaciones no podrán modificar el Portapapeles hasta que se llame a la función CloseClipboard de Windows. |
CWnd::PaintWindowlessControls |
Dibuja controles sin ventanas en el contenedor del control. |
CWnd::PostMessage |
Pone un mensaje en la cola de la aplicación y vuelve sin esperar a que la ventana procese el mensaje. |
CWnd::PreCreateWindow |
Se llama antes de crear la ventana de Windows asociada a este objeto CWnd . |
CWnd::PreSubclassWindow |
Permite que ocurran otras asignaciones como subclase necesarias antes de llamar a SubclassWindow . |
CWnd::PreTranslateMessage |
Utilizado por CWinApp para filtrar los mensajes de ventana antes de enviarlos a las funciones de Windows TranslateMessage y DispatchMessage . |
CWnd::Print |
Dibuja la ventana actual en el contexto de dispositivo especificado. |
CWnd::PrintClient |
Dibuja cualquier ventana en el contexto de dispositivo especificado (normalmente, un contexto de dispositivo de impresora). |
CWnd::PrintWindow |
Copia una ventana visual en el contexto de dispositivo especificado (normalmente, un DC de impresora). |
CWnd::RedrawWindow |
Actualiza el rectángulo o la región especificados en el área cliente. |
CWnd::RegisterTouchWindow |
Registre la compatibilidad con entrada táctil de Windows de la ventana o anule ese registro. |
CWnd::ReleaseDC |
Libera los contextos de dispositivo de cliente y de ventana, de forma que están disponibles para que los usen otras aplicaciones. |
CWnd::RepositionBars |
Vuelve a colocar las barras de control en el área cliente. |
CWnd::RunModalLoop |
Recupera, convierte o envía mensajes relativos a una ventana que está en estado modal. |
CWnd::ScreenToClient |
Convierte las coordenadas de pantalla de un punto o rectángulo determinado en pantalla en las coordenadas de pantalla. |
CWnd::ScrollWindow |
Desplaza el contenido del área cliente. |
CWnd::ScrollWindowEx |
Desplaza el contenido del área cliente. Similar a ScrollWindow , con más características. |
CWnd::SendChildNotifyLastMsg |
Proporciona un mensaje de notificación a una ventana secundaria, desde la ventana primaria, de forma que la ventana secundaria pueda controlar una tarea. |
CWnd::SendDlgItemMessage |
Envía un mensaje al control especificado. |
CWnd::SendMessage |
Envía un mensaje al objeto CWnd y no vuelve hasta que el mensaje se ha procesado. |
CWnd::SendMessageToDescendants |
Envía un mensaje a todas las ventanas descendientes de la ventana. |
CWnd::SendNotifyMessage |
Envía el mensaje especificado a la ventana y vuelve tan pronto como sea posible, dependiendo de si el subproceso de llamada creó la ventana. |
CWnd::SetActiveWindow |
Activa la ventana. |
CWnd::SetCapture |
Hace que todas las entradas de mouse siguientes se envíen a CWnd . |
CWnd::SetCaretPos |
Mueve el cursor de inserción a la posición especificada. |
CWnd::SetClipboardViewer |
Agrega CWnd a la cadena de ventanas a las que se notifica cada vez que el contenido del Portapapeles cambia. |
CWnd::SetDlgCtrlID |
Establece el identificador de ventana o de control de la ventana (que puede ser cualquier ventana secundaria, no solo un control en un cuadro de diálogo). |
CWnd::SetDlgItemInt |
Establece el texto de un control en la cadena que representa un valor entero. |
CWnd::SetDlgItemText |
Establece la leyenda o el texto de un control en el cuadro de diálogo especificado. |
CWnd::SetFocus |
Reclama el foco de entrada. |
CWnd::SetFont |
Establece la fuente actual. |
CWnd::SetForegroundWindow |
Pone en primer plano el subproceso que creó la ventana y activa la ventana. |
CWnd::SetIcon |
Establece el identificador en un icono específico. |
CWnd::SetLayeredWindowAttributes |
Establece la clave de color de transparencia y opacidad de una ventana superpuesta. |
CWnd::SetMenu |
Establece el menú en el menú especificado. |
CWnd::SetOwner |
Cambia el propietario de un objeto CWnd . |
CWnd::SetParent |
Cambia la ventana primaria. |
CWnd::SetProperty |
Establece una propiedad de control ActiveX. |
CWnd::SetRedraw |
Permite o impide volver a dibujar los cambios en CWnd . |
CWnd::SetScrollInfo |
Establece la información acerca de la barra de desplazamiento. |
CWnd::SetScrollPos |
Establece la posición actual de un cuadro de desplazamiento y, si se especifica, vuelve a dibujar la barra de desplazamiento para reflejar la nueva posición. |
CWnd::SetScrollRange |
Establece los valores de posición mínimo y máximo de la barra de desplazamiento especificada. |
CWnd::SetTimer |
Instala un cronómetro del sistema que envía un mensaje WM_TIMER al activarse. |
CWnd::SetWindowContextHelpId |
Establece el identificador de contexto de Ayuda. |
CWnd::SetWindowPlacement |
Establece el estado de visualización y las posiciones normal (restaurada), minimizada y maximizada de una ventana. |
CWnd::SetWindowPos |
Cambia el tamaño, la posición y el orden de las ventanas secundarias, emergentes y de nivel superior. |
CWnd::SetWindowRgn |
Establece la región de una ventana. |
CWnd::SetWindowText |
Establece el título de texto o de leyenda de la ventana (si lo hay) en el texto especificado. |
CWnd::ShowCaret |
Muestra el cursor de intersección en pantalla en la posición del cursor de intersección. Ya en pantalla, el cursor de intersección comienza a parpadear automáticamente. |
CWnd::ShowOwnedPopups |
Muestra u oculta todas las ventanas emergentes propiedad de la ventana. |
CWnd::ShowScrollBar |
Muestra u oculta una barra de desplazamiento. |
CWnd::ShowWindow |
Muestra u oculta la ventana. |
CWnd::SubclassDlgItem |
Asocia un control de Windows a un objeto CWnd y le hace enrutar mensajes a través del mapa de mensajes de CWnd . |
CWnd::SubclassWindow |
Asocia una ventana a un objeto CWnd y le hace enrutar mensajes a través del mapa de mensajes de CWnd . |
CWnd::UnlockWindowUpdate |
Desbloquea una ventana que se bloqueó con CWnd::LockWindowUpdate . |
CWnd::UnsubclassWindow |
Desasocia una ventana de un objeto CWnd . |
CWnd::UpdateData |
Inicializa o recupera datos de un cuadro de diálogo. |
CWnd::UpdateDialogControls |
Llame a este método para actualizar el estado de los botones del cuadro de diálogo y de otros controles. |
CWnd::UpdateLayeredWindow |
Actualiza la posición, el tamaño, la forma, el contenido y la transparencia de una ventana superpuesta. |
CWnd::UpdateWindow |
Actualiza el área de cliente. |
CWnd::ValidateRect |
Valida el área cliente dentro del rectángulo especificado quitando dicho rectángulo de la región de actualización actual. |
CWnd::ValidateRgn |
Valida el área cliente dentro de la región especificada quitando dicha región de la región de actualización actual. |
CWnd::WindowFromPoint |
Identifica la ventana que contiene el punto especificado. |
CWnd::WinHelp |
Se llama para iniciar la aplicación WinHelp. |
Métodos protegidos
Nombre | Descripción |
---|---|
CWnd::Default |
Llama al procedimiento de ventana predeterminado, que proporciona el procesamiento predeterminado de los mensajes de ventana que una aplicación no procesa. |
CWnd::DefWindowProc |
Llama al procedimiento de ventana predeterminado, que proporciona el procesamiento predeterminado de los mensajes de ventana que una aplicación no procesa. |
CWnd::DoDataExchange |
Sirve para intercambiar y validar datos de cuadros de diálogo. Es llamado por el método UpdateData . |
CWnd::GetCurrentMessage |
Devuelve un puntero al mensaje que esta ventana está procesando actualmente. Solo es necesario llamarlo cuando se está en una función miembro de controlador de mensajes Message On . |
CWnd::InitDynamicLayout |
El marco llama a este método para inicializar el diseño dinámico de una ventana. |
CWnd::LoadDynamicLayoutResource |
Carga información de diseño dinámico desde el archivo de recursos. |
CWnd::OnActivate |
Se llama cuando CWnd se está activando o desactivando. |
CWnd::OnActivateApp |
Se llama cuando la aplicación está a punto de activarse o desactivarse. |
CWnd::OnAppCommand |
Se llama cuando el usuario genera un evento de comando de la aplicación. |
CWnd::OnAskCbFormatName |
Una aplicación de visor del Portapapeles llama a este método cuando un propietario del Portapapeles va a mostrar el contenido del Portapapeles. |
CWnd::OnCancelMode |
Se llama para permitir que CWnd cancele cualquier modo interno, como la captura del mouse. |
CWnd::OnCaptureChanged |
Envía un mensaje a la ventana que está perdiendo la captura del mouse. |
CWnd::OnChangeCbChain |
Notifica una ventana especificada se está quitando de la cadena. |
CWnd::OnChangeUIState |
Se llama cuando es necesario cambiar el estado de la interfaz de usuario. |
CWnd::OnChar |
Se llama cuando una pulsación de tecla se convierte en un carácter que no es del sistema. |
CWnd::OnCharToItem |
Lo llama un cuadro de lista secundario con el estilo LBS_WANTKEYBOARDINPUT como respuesta a un mensaje WM_CHAR . |
CWnd::OnChildActivate |
Se llama en relación con ventanas secundarias de interfaz múltiples documentos (MDI) cada vez que el tamaño o la posición de CWnd cambia o CWnd se activa. |
CWnd::OnChildNotify |
Una ventana primaria llama a este método para que un control notificado tenga la oportunidad de responder a la notificación de control. |
CWnd::OnClipboardUpdate |
Se llama cuando el contenido del Portapapeles cambia. |
CWnd::OnClose |
Se llama como una señal de que CWnd debe cerrarse. |
CWnd::OnColorizationColorChanged |
Se llama cuando cambia la directiva de representación en el área no cliente. |
CWnd::OnCommand |
Se llama cuando el usuario selecciona un comando. |
CWnd::OnCompacting |
Se llama cuando Windows detecta que la memoria del sistema es baja. |
CWnd::OnCompareItem |
Se llama para averiguar la posición relativa de un nuevo elemento en un cuadro de lista o un cuadro combinado secundario ordenado dibujado por el propietario. |
CWnd::OnCompositionChanged |
Se llama en relación con todas las ventanas de nivel superior cuando se habilita o deshabilita la composición del Administrador de ventanas de escritorio (DWM). |
CWnd::OnContextMenu |
Se llama cuando el usuario hace clic con el botón secundario del mouse en la ventana. |
CWnd::OnCopyData |
Copia datos de una aplicación a otra. |
CWnd::OnCreate |
Se llama como parte de la creación de una ventana. |
CWnd::OnCtlColor |
Se llama si CWnd es el elemento primario de un control cuando el control se va a dibujar. |
CWnd::OnDeadChar |
Se llama cuando una pulsación de tecla se convierte en un carácter inactivo que no es de sistema (por ejemplo, caracteres acentuados). |
CWnd::OnDeleteItem |
Se llama cuando se destruye un cuadro de lista o un cuadro combinado secundario dibujado por el propietario, o cuando se quitan elementos del control. |
CWnd::OnDestroy |
Se llama cuando CWnd se está destruyendo. |
CWnd::OnDestroyClipboard |
Se llama cuando el Portapapeles se vacía al llamar a la función EmptyClipboard de Windows. |
CWnd::OnDeviceChange |
Notifica a un controlador de dispositivo o aplicación de un cambio en la configuración de hardware de un dispositivo o del equipo. |
CWnd::OnDevModeChange |
Se llama en relación con todas las ventanas de nivel superior cuando el usuario cambia la configuración de modo de dispositivo. |
CWnd::OnDrawClipboard |
Se llama cuando el contenido del Portapapeles cambia. |
CWnd::OnDrawItem |
Se llama cuando es necesario dibujar un aspecto visual de un control de botón, un control de cuadro combinado, un control de cuadro de lista o un menú secundario dibujado por el propietario. |
CWnd::OnDropFiles |
Se llama cuando el usuario suelta el botón primario del mouse en una ventana que se ha registrado como destinataria de los archivos colocados. |
CWnd::OnEnable |
Se llama cuando CWnd se habilita o deshabilita. |
CWnd::OnEndSession |
Se llama cuando una sesión finaliza. |
CWnd::OnEnterIdle |
Se llama para informar al procedimiento de ventana principal de una aplicación de que un menú o un cuadro de diálogo modal está entrando en estado inactivo. |
CWnd::OnEnterMenuLoop |
Se llama cuando se ha entrado en un bucle modal de menú. |
CWnd::OnEnterSizeMove |
Se llama después de que la ventana afectada entre en un bucle modal de movimiento o de tamaño. |
CWnd::OnEraseBkgnd |
Se llama cuando es necesario borrar el fondo de la ventana. |
CWnd::OnExitMenuLoop |
Se llama cuando se ha salido de un bucle modal de menú. |
CWnd::OnExitSizeMove |
Se llama después de que la ventana afectada salga de un bucle modal de movimiento o de tamaño. |
CWnd::OnFontChange |
Se llama cuando el grupo de recursos de fuente cambia. |
CWnd::OnGetDlgCode |
Se llama en relación con un control para que el control pueda procesar por sí mismo las entradas de tecla de dirección y de tecla TAB. |
CWnd::OnGetMinMaxInfo |
Se llama siempre que Windows necesita conocer la posición o dimensiones maximizadas, o bien el tamaño de seguimiento mínimo o máximo. |
CWnd::OnHelpInfo |
El marco llama a este método cuando el usuario presiona la tecla F1. |
CWnd::OnHotKey |
Se llama cuando el usuario presiona una tecla de acceso rápido de todo el sistema. |
CWnd::OnHScroll |
Se llama cuando el usuario hace clic en la barra de desplazamiento horizontal de CWnd . |
CWnd::OnHScrollClipboard |
Se llama cuando un propietario de Portapapeles tiene que desplazarse por la imagen del Portapapeles, invalidar la sección correspondiente y actualizar los valores de la barra de desplazamiento. |
CWnd::OnIconEraseBkgnd |
Se llama cuando CWnd está minimizado (icono) y el fondo del icono se tiene que rellenar antes de pintar el icono. |
CWnd::OnInitMenu |
Se llama cuando un menú está a punto de activarse. |
CWnd::OnInitMenuPopup |
Se llama cuando un menú emergente está a punto de activarse. |
CWnd::OnInputDeviceChange |
Se llama cuando un dispositivo de E/S se agrega al sistema o se quita de él. |
CWnd::OnInputLangChange |
Se llama después de que el idioma de entrada de una aplicación cambie. |
CWnd::OnInputLangChangeRequest |
Se llama cuando el usuario elige un nuevo idioma de entrada. |
CWnd::OnKeyDown |
Se llama cuando se presiona una tecla que no es del sistema. |
CWnd::OnKeyUp |
Se llama cuando se suelta una tecla que no es del sistema. |
CWnd::OnKillFocus |
Se llama inmediatamente antes de que CWnd pierda el foco de entrada. |
CWnd::OnLButtonDblClk |
Se llama cuando el usuario hace doble clic con el botón primario del mouse. |
CWnd::OnLButtonDown |
Se llama cuando el usuario presiona el botón primario del mouse. |
CWnd::OnLButtonUp |
Se llama cuando el usuario suelta el botón primario del mouse. |
CWnd::OnMButtonDblClk |
Se llama cuando el usuario hace doble clic con el botón central del mouse. |
CWnd::OnMButtonDown |
Se llama cuando el usuario presiona el botón central del mouse. |
CWnd::OnMButtonUp |
Se llama cuando el usuario suelta el botón central del mouse. |
CWnd::OnMDIActivate |
Se llama lugar cuando una ventana secundaria MDI se activa o desactiva. |
CWnd::OnMeasureItem |
Se llama en relación con un cuadro combinado, un cuadro de lista o un elemento de menú secundario dibujado por el propietario cuando el control se crea. CWnd informa a Windows de las dimensiones del control. |
CWnd::OnMenuChar |
Se llama cuando el usuario presiona un carácter de acceso de menú que no coincide con ninguna de las teclas de acceso predefinidas en el menú actual. |
CWnd::OnMenuDrag |
Se llama cuando el usuario empieza a arrastrar un elemento de menú. |
CWnd::OnMenuGetObject |
Se llama cuando el cursor del mouse entra en un elemento de menú o se mueve desde el centro del elemento hasta el principio o el final del elemento. |
CWnd::OnMenuRButtonUp |
Se llama cuando el usuario suelta el botón secundario del mouse mientras el cursor se encuentra en un elemento de menú. |
CWnd::OnMenuSelect |
Se llama cuando el usuario selecciona un elemento de menú. |
CWnd::OnMouseActivate |
Se llama cuando el cursor está en una ventana inactiva y el usuario presiona un botón del mouse. |
CWnd::OnMouseHover |
Se llama cuando el cursor se sitúa sobre el área cliente de la ventana durante el período de tiempo especificado en una llamada anterior a TrackMouseEvent . |
CWnd::OnMouseHWheel |
Se llama cuando la rueda de desplazamiento horizontal del mouse está inclinada o girada. |
CWnd::OnMouseLeave |
Se llama cuando el cursor abandona el área cliente de la ventana especificada en una llamada anterior a TrackMouseEvent . |
CWnd::OnMouseMove |
Se llama cuando el cursor del mouse se mueve. |
CWnd::OnMouseWheel |
Se llama cuando un usuario gira la rueda del mouse. Usa el control de mensajes de Windows NT 4.0. |
CWnd::OnMove |
Se llama después de que la posición del objeto CWnd haya cambiado. |
CWnd::OnMoving |
Indica que un usuario está moviendo un objeto CWnd . |
CWnd::OnNcActivate |
Se llama cuando es necesario cambiar el área no cliente para indicar un estado activo o inactivo. |
CWnd::OnNcCalcSize |
Se llama cuando hay que calcular el tamaño y la posición del área cliente. |
CWnd::OnNcCreate |
Se llama antes de OnCreate cuando se está creando el área no cliente. |
CWnd::OnNcDestroy |
Se llama cuando el área no cliente se está destruyendo. |
CWnd::OnNcHitTest |
Windows llama a este método cada vez que el mouse se mueve si CWnd contiene el cursor o ha capturado la entrada del mouse con SetCapture . |
CWnd::OnNcLButtonDblClk |
Se llama cuando el usuario hace doble clic en el botón primario del mouse mientras el cursor se encuentra dentro de un área no cliente de CWnd . |
CWnd::OnNcLButtonDown |
Se llama cuando el usuario presiona el botón primario del mouse mientras el cursor se encuentra dentro de un área no cliente de CWnd . |
CWnd::OnNcLButtonUp |
Se llama cuando el usuario suelta el botón primario del mouse mientras el cursor se encuentra dentro de un área no cliente de CWnd . |
CWnd::OnNcMButtonDblClk |
Se llama cuando el usuario hace doble clic en el botón central del mouse mientras el cursor se encuentra dentro de un área no cliente de CWnd . |
CWnd::OnNcMButtonDown |
Se llama cuando el usuario presiona el botón central del mouse mientras el cursor se encuentra dentro de un área no cliente de CWnd . |
CWnd::OnNcMButtonUp |
Se llama cuando el usuario suelta el botón central del mouse mientras el cursor se encuentra dentro de un área no cliente de CWnd . |
CWnd::OnNcMouseHover |
Se llama cuando el cursor se sitúa sobre el área no cliente de la ventana durante el período de tiempo especificado en una llamada anterior a TrackMouseEvent . |
CWnd::OnNcMouseLeave |
El marco llama a esta función miembro cuando el cursor abandona el área no cliente de la ventana especificada en una llamada anterior a TrackMouseEvent . |
CWnd::OnNcMouseMove |
Se llama cuando el cursor se mueve dentro de un área no cliente de CWnd . |
CWnd::OnNcPaint |
Se llama cuando es necesario pintar el área no cliente. |
CWnd::OnNcRButtonDblClk |
Se llama cuando el usuario hace doble clic en el botón secundario del mouse mientras el cursor se encuentra dentro de un área no cliente de CWnd . |
CWnd::OnNcRButtonDown |
Se llama cuando el usuario presiona el botón secundario del mouse mientras el cursor se encuentra dentro de un área no cliente de CWnd . |
CWnd::OnNcRButtonUp |
Se llama cuando el usuario suelta el botón secundario del mouse mientras el cursor se encuentra dentro de un área no cliente de CWnd . |
CWnd::OnNcRenderingChanged |
Se llama cuando cambia la directiva de representación en el área no cliente. |
CWnd::OnNcXButtonDblClk |
Se llama cuando el usuario hace doble clic en XBUTTON1 o XBUTTON2 mientras el cursor se encuentra en el área no cliente de una ventana. |
CWnd::OnNcXButtonDown |
Se llama cuando el usuario presiona XBUTTON1 o XBUTTON2 del mouse mientras el cursor se encuentra en el área no cliente de una ventana. |
CWnd::OnNcXButtonUp |
Se llama cuando el usuario suelta XBUTTON1 o XBUTTON2 del mouse mientras el cursor se encuentra en el área no cliente de una ventana. |
CWnd::OnNextMenu |
Se llama cuando la tecla de dirección derecha o izquierda se usa para cambiar de la barra de menús al menú del sistema. |
CWnd::OnNotify |
El marco llama a este método para informar a una ventana primaria de que se ha producido un evento en uno de sus controles o de que el control necesita información. |
CWnd::OnNotifyFormat |
Se llama para averiguar si la ventana actual acepta estructuras ANSI o Unicode en el mensaje de notificación WM_NOTIFY . |
CWnd::OnPaint |
Se llama para volver a dibujar una parte de la ventana. |
CWnd::OnPaintClipboard |
Se llama cuando es necesario volver a pintar el área cliente del visor del Portapapeles. |
CWnd::OnPaletteChanged |
Se llama para permitir que las ventanas que usan una paleta de colores realicen sus paletas lógicas y actualicen sus áreas cliente. |
CWnd::OnPaletteIsChanging |
Informa a otras aplicaciones cuando una aplicación va a realizar su paleta lógica. |
CWnd::OnParentNotify |
Se llama cuando se crea o se destruye una ventana secundaria, o cuando el usuario hace clic en un botón del mouse mientras el cursor está sobre la ventana secundaria. |
CWnd::OnPowerBroadcast |
Se llama cuando se ocurre un evento de administración de energía. |
CWnd::OnQueryDragIcon |
Se llama cuando un objeto CWnd minimizado (icono) está a punto de ser arrastrado por el usuario. |
CWnd::OnQueryEndSession |
Se llama cuando el usuario decide finalizar la sesión de Windows. |
CWnd::OnQueryNewPalette |
Informa a CWnd de que está a punto de recibir el foco de entrada. |
CWnd::OnQueryOpen |
Se llama cuando el objeto CWnd es un icono y el usuario solicita que se abra. |
CWnd::OnQueryUIState |
Se llama para recuperar el estado de la interfaz de usuario de una ventana. |
CWnd::OnRawInput |
Se llama cuando la ventana actual obtiene una entrada sin procesar. |
CWnd::OnRButtonDblClk |
Se llama cuando el usuario hace doble clic con el botón secundario del mouse. |
CWnd::OnRButtonDown |
Se llama cuando el usuario presiona el botón secundario del mouse. |
CWnd::OnRButtonUp |
Se llama cuando el usuario suelta el botón secundario del mouse. |
CWnd::OnRenderAllFormats |
Se llama cuando la aplicación del propietario se está destruyendo y necesita representar todos los formatos. |
CWnd::OnRenderFormat |
Se llama en relación con el propietario del Portapapeles cuando es necesario representar un formato determinado con representación aplazada. |
CWnd::OnSessionChange |
Se llama para notificar a una aplicación de un cambio de estado de sesión. |
CWnd::OnSetCursor |
Se llama si no se captura la entrada de mouse y el mouse provoca un movimiento de cursor dentro de una ventana. |
CWnd::OnSetFocus |
Se llama después de que CWnd reciba el foco de entrada. |
CWnd::OnSettingChange |
Se llama cuando la función SystemParametersInfo de Win32 cambia una configuración de todo el sistema. |
CWnd::OnShowWindow |
Se llama cuando CWnd se oculta o se muestra. |
CWnd::OnSize |
Se llama después de que el tamaño de CWnd haya cambiado. |
CWnd::OnSizeClipboard |
Se llama cuando ha cambiado el tamaño del área cliente de la ventana del visor del Portapapeles. |
CWnd::OnSizing |
Indica que el usuario está cambiando el tamaño del rectángulo. |
CWnd::OnSpoolerStatus |
Se llama desde el Administrador de impresión cada vez que un trabajo se agrega a la cola del Administrador de impresión o se quita de ella. |
CWnd::OnStyleChanged |
Indica que la función de Windows SetWindowLong ha cambiado uno o varios estilos de ventana. |
CWnd::OnStyleChanging |
Indica que la función de Windows SetWindowLong va a cambiar uno o varios estilos de ventana. |
CWnd::OnSysChar |
Se llama cuando una pulsación de tecla se convierte en un carácter de sistema. |
CWnd::OnSysColorChange |
Se llama en relación con todas las ventanas de nivel superior cuando se realiza un cambio en la configuración de color del sistema. |
CWnd::OnSysCommand |
Se llama cuando el usuario selecciona un comando en el menú de sistema, o cuando el usuario selecciona el botón para maximizar o minimizar. |
CWnd::OnSysDeadChar |
Se llama cuando una pulsación de tecla se convierte en un carácter inactivo de sistema (por ejemplo, caracteres acentuados). |
CWnd::OnSysKeyDown |
Se llama cuando el usuario mantiene presionada la tecla ALT y, luego, presiona otra tecla. |
CWnd::OnSysKeyUp |
Se llama cuando el usuario suelta una tecla que se presionó mientras se presionaba la tecla ALT. |
CWnd::OnTCard |
Se llama cuando el usuario hace clic en un botón que se puede modificar. |
CWnd::OnTimeChange |
Se llama en relación con todas las ventanas de nivel superior después de cambiar la hora de sistema. |
CWnd::OnTimer |
Se llama después de cada intervalo especificado en SetTimer . |
CWnd::OnTouchInput |
Procese una única entrada de tecnología táctil de Windows. |
CWnd::OnTouchInputs |
Procese entradas de tecnología táctil de Windows. |
CWnd::OnUniChar |
Se llama cuando se presiona una tecla. Es decir, la ventana actual tiene el foco del teclado y la función TranslateMessage traduce un mensaje WM_KEYDOWN . |
CWnd::OnUnInitMenuPopup |
Se llama cuando se destruye un menú desplegable o submenú. |
CWnd::OnUpdateUIState |
Se llama para cambiar el estado de la interfaz de usuario de la ventana especificada y de todas sus ventanas secundarias. |
CWnd::OnUserChanged |
Se llama cuando el usuario inicia o cierra sesión. |
CWnd::OnVKeyToItem |
Un cuadro de lista propiedad de CWnd llama a esta función en respuesta a un mensaje WM_KEYDOWN . |
CWnd::OnVScroll |
Se llama cuando el usuario hace clic en la barra de desplazamiento vertical de la ventana. |
CWnd::OnVScrollClipboard |
Se llama cuando el propietario tiene que desplazarse por la imagen del Portapapeles, invalidar la sección correspondiente y actualizar los valores de la barra de desplazamiento. |
CWnd::OnWindowPosChanged |
Se llama cuando el tamaño, la posición o el orden Z ha cambiado como resultado de una llamada a SetWindowPos o a otra función de administración de ventanas. |
CWnd::OnWindowPosChanging |
Se llama cuando el tamaño, la posición o el orden Z va a cambiar como resultado de una llamada a SetWindowPos o a otra función de administración de ventanas. |
CWnd::OnWinIniChange |
Se llama en relación con todas las ventanas de nivel superior después de que cambie el archivo de inicialización de Windows, WIN.INI . |
CWnd::OnWndMsg |
Indica si se ha controlado un mensaje de ventana. |
CWnd::OnXButtonDblClk |
Se llama cuando el usuario hace doble clic en XBUTTON1 o XBUTTON2 mientras el cursor se encuentra en el área cliente de una ventana. |
CWnd::OnXButtonDown |
Se llama cuando el usuario presiona XBUTTON1 o XBUTTON2 mientras el cursor se encuentra en el área cliente de una ventana. |
CWnd::OnXButtonUp |
Se llama cuando el usuario suelta XBUTTON1 o XBUTTON2 mientras el cursor se encuentra en el área cliente de una ventana. |
CWnd::PostNcDestroy |
La función predeterminada OnNcDestroy llama a esta función virtual después de que se haya destruido la ventana. |
CWnd::ReflectChildNotify |
Función del asistente que refleja un mensaje a su origen. |
CWnd::ReflectLastMsg |
Refleja el último mensaje a la ventana secundaria. |
CWnd::ResizeDynamicLayout |
El marco llama a este método cuando el tamaño de la ventana cambia para ajustar el diseño de las ventanas secundarias, si el diseño dinámico está habilitado en esa ventana. |
CWnd::WindowProc |
Proporciona un procedimiento de ventana para un objeto CWnd . El valor predeterminado envía mensajes a través del mapa de mensajes. |
Operadores públicos
Nombre | Descripción |
---|---|
CWnd::operator HWND |
Llame para obtener un identificador de una ventana. |
CWnd::operator != |
Determina si una ventana no es la misma que la ventana cuyo identificador es m_hWnd . |
CWnd::operator == |
Determina si una ventana es la misma que la ventana cuyo identificador es m_hWnd . |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CWnd::m_hWnd |
Indica el HWND asociado a este CWnd . |
Comentarios
Un objeto CWnd
es distinto de una ventana de Windows, pero los dos están estrechamente vinculados. El constructor y destructor CWnd
crea o destruye un objeto CWnd
. La ventana de Windows, por su parte, es una estructura de datos interna de Windows que se crea con una función miembro Create
y se destruye con el destructor virtual CWnd
. La función DestroyWindow
destruye la ventana de Windows sin destruir el objeto.
La clase CWnd
y el mecanismo de mapa de mensajes ocultan la función WndProc
. Los mensajes de notificación entrantes de Windows se enrutan automáticamente a través del mapa de mensajes a las funciones miembro onMessage CWnd
adecuadas. Las funciones miembro OnMessage se invalidan para controlar un mensaje particular de un miembro en sus clases derivadas.
Con la clase CWnd
también se puede crear una ventana secundaria de Windows para la aplicación. Derive una clase de CWnd
y, luego, agregue variables miembro a esa clase derivada para almacenar datos específicos de la aplicación. Implemente funciones miembro de controlador de mensajes y un mapa de mensajes en la clase derivada para especificar qué ocurre cuando los mensajes se dirigen a la ventana.
Una ventana secundaria se crea en dos pasos. En primer lugar, llame al constructor CWnd
para construir el objeto CWnd
y, después, llame a la función miembro Create
para crear la ventana secundaria y asóciela al objeto CWnd
.
Cuando el usuario finalice la ventana secundaria, destruya el objeto CWnd
o llame a la función miembro DestroyWindow
para quitar la ventana y destruir sus estructuras de datos.
Dentro de la biblioteca MFC (Microsoft Foundation Class), se derivan más clases de CWnd
para proporcionar tipos de ventana específicos. Muchas de estas clases, incluidas CFrameWnd
, CMDIFrameWnd
, CMDIChildWnd
, CView
y CDialog
, están diseñadas para su posterior derivación. Las clases de control derivadas de CWnd
, como CButton
, se pueden usar directamente o bien emplearse para la posterior derivación de clases.
Para obtener más información sobre cómo usar CWnd
, consulte Frame Windows
y Objetos de ventana.
Jerarquía de herencia
CWnd
Requisitos
Encabezado: afxwin.h
CWnd::accDoDefaultAction
El marco llama a este método para realizar la acción predeterminada del objeto.
virtual HRESULT accDoDefaultAction(VARIANT varChild);
Parámetros
varChild
Especifica si la acción predeterminada que se va a invocar es la del objeto o de uno de los elementos secundarios del objeto. Este parámetro puede ser CHILDID_SELF (para realizar la acción predeterminada del objeto) o un Id. secundario (para realizar la acción predeterminada de uno de los elementos secundarios del objeto).
Valor devuelto
Devuelve S_OK si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::accDoDefaultAction de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
para realizar la acción predeterminada del objeto. Para obtener más información, consulte IAccessible::accDoDefaultAction de Windows SDK.
CWnd::accHitTest
El marco llama a este método para recuperar el elemento u objeto secundario situado en un punto dado de la pantalla.
virtual HRESULT accHitTest(
long xLeft,
long yTop,
VARIANT* pvarChild);
Parámetros
xLeft
La coordenada X del punto en el que se va a comprobar (en unidades de pantalla).
yTop
La coordenada Y del punto en el que se va a comprobar (en unidades de pantalla).
pvarChild
Recibe información que identifica el objeto en el punto especificado por xLeft
y yTop
. Consulte pvarID
en IAccessible::accHitTest
de Windows SDK.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::accHitTest
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
si tiene elementos de interfaz de usuario no en ventana (distintos de los controles ActiveX sin ventana, que controla MFC).
Para más información, consulte IAccessible::accHitTest
en Windows SDK.
CWnd::accLocation
El marco llama a este método para recuperar la ubicación actual del objeto especificado en la pantalla.
virtual HRESULT accLocation(
long* pxLeft,
long* pyTop,
long* pcxWidth,
long* pcyHeight,
VARIANT varChild);
Parámetros
pxLeft
Recibe la coordenada x de la esquina superior izquierda del objeto (en unidades de pantalla).
pyTop
Recibe la coordenada y de la esquina superior izquierda del objeto (en unidades de pantalla).
pcxWidth
Recibe el ancho del objeto (en unidades de pantalla).
pcyHeight
Recibe el alto del objeto (en unidades de pantalla).
varChild
Especifica si la ubicación que se debe recuperar es la del objeto o de uno de los elementos secundarios del objeto. Este parámetro puede ser CHILDID_SELF
(para obtener información sobre el objeto) o un Id. secundario (para obtener información sobre el elemento secundario del objeto).
Valor devuelto
Devuelve S_OK si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::accLocation
de Windows SDK.
Comentarios
Invalide esta función en la clase derivada de CWnd
si tiene elementos de interfaz de usuario no en ventana (distintos de los controles ActiveX sin ventana, que controla MFC).
Para más información, consulte IAccessible::accLocation
en Windows SDK.
CWnd::accNavigate
El marco llama a este método para ir a otro elemento de la interfaz de usuario dentro de un contenedor y, si es posible, recuperar el objeto.
virtual HRESULT accNavigate(
long navDir,
VARIANT varStart,
VARIANT* pvarEndUpAt);
Parámetros
navDir
Especifica la dirección para navegar. Consulte navDir
en IAccessible::accNavigate
de Windows SDK.
varStart
Especifica el objeto inicial. Consulte varStart
en IAccessible::accNavigate
de Windows SDK.
pvarEndUpAt
Recibe información sobre el objeto de interfaz de usuario de destino. Consulte pvarEnd
en IAccessible::accNavigate
de Windows SDK.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::accNavigate
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
si tiene elementos de interfaz de usuario no en ventana (distintos de los controles ActiveX sin ventana, que controla MFC).
Para más información, consulte IAccessible::accNavigate
en Windows SDK.
CWnd::accSelect
El marco llama a este método para modificar la selección o desplazar el foco de teclado del objeto especificado.
virtual HRESULT accSelect(
long flagsSelect,
VARIANT varChild);
Parámetros
flagsSelect
Especifica cómo cambiar la selección o el foco actuales. Consulte flagsSelect
en IAccessible::accSelect
de Windows SDK.
varChild
Especifica el objeto que se va a seleccionar. Este parámetro puede ser CHILDID_SELF
(para seleccionar el objeto), o bien, un Id. secundario (para seleccionar uno de los objetos secundarios del objeto).
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::accSelect
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
si tiene elementos de interfaz de usuario no en ventana (distintos de los controles ActiveX sin ventana, que controla MFC).
Para más información, consulte IAccessible::accSelect
en Windows SDK.
CWnd::AnimateWindow
Genera efectos especiales al mostrar u ocultar ventanas.
BOOL AnimateWindow(
DWORD dwTime,
DWORD dwFlags);
Parámetros
dwTime
Especifica cuánto tiempo se tarda en reproducir la animación, en milisegundos. Normalmente, una animación tarda 200 milisegundos en reproducirse.
dwFlags
Especifica el tipo de animación. Para obtener una lista completa de valores posibles, consulte AnimateWindow
.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, 0.
Comentarios
Esta función miembro emula la funcionalidad de la función AnimateWindow
, tal y como se describe en Windows SDK.
CWnd::ArrangeIconicWindows
Organiza todas las ventanas secundarias (iconos) minimizadas.
UINT ArrangeIconicWindows();
Valor devuelto
El alto de una fila de iconos si la función se ejecuta correctamente; de lo contrario, 0.
Comentarios
Esta función miembro también organiza iconos en la ventana de escritorio, que cubre toda la pantalla. La función miembro GetDesktopWindow
recupera un puntero al objeto de ventana de escritorio.
Para organizar ventanas secundarias MDI de icono en una ventana de cliente MDI, llame a CMDIFrameWnd::MDIIconArrange
.
Ejemplo
// arrange minimized MDI child windows
// called from menu item; CMdiChildFrame is derived from CMDIChildWnd
void CMdiChildFrame::OnActionArrangeIconicWindows()
{
UINT height = GetParent()->ArrangeIconicWindows();
TRACE(_T("height = %d\n"), height);
}
CWnd::Attach
Asocia una ventana de Windows a un objeto CWnd
.
BOOL Attach(HWND hWndNew);
Parámetros
hWndNew
Especifica un identificador para una ventana de Windows.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Ejemplo
En este ejemplo se muestra cómo usar Attach
y Detach
para asignar a la ventana de cliente MDI.
// Declare a CWnd member of CMainFrame
public:
CWnd m_wndMDIClient;
// detach MDI client window in CMainFrame destructor
m_wndMDIClient.Detach();
// In CMainFrame::OnCreate, attach MDI client window
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// attach MDI client window
if (m_wndMDIClient.Attach(m_hWndMDIClient) == 0)
{
TRACE(_T("Failed to attach MDIClient.\n"));
return -1; // fail to create
}
CWnd::BeginModalState
Llame a esta función miembro para convertir una ventana marco en modal.
virtual void BeginModalState();
CWnd::BeginPaint
Prepara CWnd
para pintar y rellena una estructura de datos PAINTSTRUCT
con información sobre la pintura.
CDC* BeginPaint(LPPAINTSTRUCT lpPaint);
Parámetros
lpPaint
Apunta a la estructura PAINTSTRUCT
que va a recibir información de pintura.
Valor devuelto
Identifica el contexto del dispositivo para CWnd
. El puntero puede ser temporal y no debe almacenarse más allá del ámbito de EndPaint
.
Comentarios
La estructura de pintura contiene una estructura de datos RECT
con el rectángulo lo más pequeño posible que encierre completamente la región de actualización y una marca que especifica si se ha borrado el fondo.
La región de actualización se establece mediante las funciones miembro Invalidate
, InvalidateRect
o InvalidateRgn
, así como por el sistema después de desplazarse por el área cliente, ajustar su tamaño o mover, crear o realizar cualquier otra operación que afecte al área cliente. Si la región de actualización está marcada para borrarla, BeginPaint
envía un mensaje WM_ONERASEBKGND
.
No llame a la función miembro BeginPaint
excepto en respuesta a un mensaje WM_PAINT
. Cada llamada a la función miembro BeginPaint
debe tener una llamada coincidente a la función miembro EndPaint
. Si el cursor de inserción está en el área que se va a pintar, la función miembro BeginPaint
oculta automáticamente el cursor de inserción para evitar que se borre.
Ejemplo
// Use BeginPaint and EndPaint when responding to WM_PAINT message
// An alternative method is to use CPaintDC in place of
// BeginPaint and EndPaint
void CMdiView::OnPaint()
{
PAINTSTRUCT ps;
CDC *pDC = BeginPaint(&ps);
pDC->Rectangle(CRect(0, 0, 100, 100));
EndPaint(&ps);
// Do not call CView::OnPaint() for painting messages
}
CWnd::BindDefaultProperty
Enlaza la propiedad enlazada simple predeterminada del objeto que realiza la llamada (por ejemplo, un control de edición), como se marca en la biblioteca de tipos, al cursor subyacente definido por las propiedades DataSource
, UserName
, Password
y SQL
del control de origen de datos.
void BindDefaultProperty(
DISPID dwDispID,
VARTYPE vtProp,
LPCTSTR szFieldName,
CWnd* pDSCWnd);
Parámetros
dwDispID
Especifica el DISPID
de una propiedad en un control enlazado a datos que se va a enlazar a un control de origen de datos.
vtProp
Especifica el tipo de la propiedad que se va a enlazar. Por ejemplo, VT_BSTR
, VT_VARIANT
, etc.
szFieldName
Especifica el nombre de la columna, en el cursor proporcionado por el control de origen de datos, al que se enlazará la propiedad.
pDSCWnd
Apunta a la ventana que hospeda el control de origen de datos al que se enlazará la propiedad. Llame a GetDlgItem
con el Id. de recurso de la ventana host del DCS para recuperar este puntero.
Comentarios
El objeto CWnd
en el que se llama a esta función debe ser un control enlazado a datos.
Ejemplo
BindDefaultProperty
puede usarse en el contexto siguiente:
BOOL CMyDlg::OnInitDialog()
{
CWnd *pDSC = GetDlgItem(IDC_DATASOURCE);
CWnd *pMyBound = GetDlgItem(IDC_MYBOUNDCTRL1);
pMyBound->BindDefaultProperty(0x1, VT_BSTR, _T("ContactFirstName"), pDSC);
return TRUE;
}
CWnd::BindProperty
Enlaza una propiedad enlazada del cursor en un control enlazado a datos (como un control de cuadrícula) a un control de origen de datos, y registra dicha relación con el administrador de enlaces de MFC.
void BindProperty(
DISPID dwDispId,
CWnd* pWndDSC);
Parámetros
dwDispId
Especifica el DISPID
de una propiedad en un control enlazado a datos que se va a enlazar a un control de origen de datos.
pWndDSC
Apunta a la ventana que hospeda el control de origen de datos al que se enlazará la propiedad. Llame a GetDlgItem
con el Id. de recurso de la ventana host del DCS para recuperar este puntero.
Comentarios
El objeto CWnd
en el que se llama a esta función debe ser un control enlazado a datos.
Ejemplo
BindProperty
puede usarse en el contexto siguiente:
BOOL CMyDlg::OnInitDialog()
{
CWnd *pDSC = GetDlgItem(IDC_DATASOURCE);
CWnd *pMyBound = GetDlgItem(IDC_MYBOUNDCTRL2);
pMyBound->BindProperty(0x1, pDSC);
return TRUE;
}
CWnd::BringWindowToTop
Lleva CWnd
al principio de una pila de ventanas superpuestas.
void BringWindowToTop();
Comentarios
Además, BringWindowToTop
activa las ventanas emergentes, de nivel superior y secundarias MDI. La función miembro BringWindowToTop
se debe usar para mostrar cualquier ventana que esté oculta total o parcialmente por alguna ventana superpuesta.
Esta función simplemente llama a la función BringWindowToTop
de Win32. Llame a la función SetWindowPos
para cambiar la posición de una ventana en el orden Z. La función BringWindowToTop
no cambia el estilo de ventana para convertirla en una ventana de nivel superior. Para obtener más información, consulte ¿Cuál es la diferencia entre HWND_TOP
y HWND_TOPMOST
Ejemplo
// Moves MDI child windows to the top when a mouse passes
// over it. CMdiView is derived from CView.
void CMdiView::OnMouseMove(UINT nFlags, CPoint point)
{
UNREFERENCED_PARAMETER(nFlags);
UNREFERENCED_PARAMETER(point);
GetParentFrame()->BringWindowToTop();
}
CWnd::CalcWindowRect
Calcula el rectángulo de ventana que puede contener el rectángulo de cliente especificado.
virtual void CalcWindowRect(
LPRECT lpClientRect,
UINT nAdjustType = adjustBorder);
Parámetros
lpClientRect
[entrada, salida] Un puntero a una estructura de rectángulo. En entrada, esta estructura contiene el rectángulo de cliente. Una vez finalizado el método, esta estructura contiene el rectángulo de ventana que puede contener el rectángulo de cliente especificado.
nAdjustType
[entrada] Use CWnd::adjustBorder
para calcular las coordenadas de ventana sin el estilo WS_EX_CLIENTEDGE
; de lo contrario, use CWnd::adjustOutside
.
Comentarios
El tamaño del rectángulo de ventana calculado no incluye espacio para una barra de menús.
Para conocer más restricciones de uso, consulte AdjustWindowRectEx
.
Ejemplo
// Uses CalcWindowRect to determine size for new CFrameWnd
// based on the size of the current view. The end result is a
// top level frame window of the same size as CMdiView's frame.
void CMdiView::OnMyCreateFrame()
{
CFrameWnd *pFrameWnd = new CFrameWnd;
CRect myRect;
GetClientRect(myRect);
pFrameWnd->Create(NULL, _T("My Frame"));
pFrameWnd->CalcWindowRect(&myRect, CWnd::adjustBorder);
pFrameWnd->MoveWindow(0, 0, myRect.Width(), myRect.Height());
pFrameWnd->ShowWindow(SW_SHOW);
}
CWnd::CancelToolTips
Llame a esta función miembro para quitar una sugerencia de herramientas de la pantalla si actualmente se muestra una sugerencia de herramientas.
static void PASCAL CancelToolTips(BOOL bKeys = FALSE);
Parámetros
bKeys
TRUE
para cancelar las sugerencias de herramientas cuando se presiona una tecla y establece el texto de la barra de estado en el valor predeterminado; de lo contrario, FALSE
.
Comentarios
Nota:
El uso de esta función miembro no tiene ningún efecto en las sugerencias de herramientas administradas por el código. Solo afecta al control de información sobre herramientas administrado por CWnd::EnableToolTips
.
Ejemplo
// In this example, tool tips were set up to
// pop up when the user moves the mouse
// over this edit control.
// If the mouse is moved to the upper left-hand
// corner, the tool tip would disappear because of
// calling CancelToolTips.
void CMyEdit::OnMouseMove(UINT nFlags, CPoint point)
{
CRect corner(0, 0, 10, 10);
if (corner.PtInRect(point))
CancelToolTips();
CEdit::OnMouseMove(nFlags, point);
}
CWnd::CenterWindow
Centra una ventana con respecto a su elemento primario.
void CenterWindow(CWnd* pAlternateOwner = NULL);
Parámetros
pAlternateOwner
Un puntero a una ventana alternativa relativa en la que se centrará (aparte de la ventana primaria).
Comentarios
Normalmente se llama desde CDialog::OnInitDialog
para centrar los cuadros de diálogo en relación con la ventana principal de la aplicación. De forma predeterminada, las ventanas secundarias de la función se centran en relación con sus ventanas primarias, y las ventanas emergentes se centran en relación con su propietario. Si la ventana emergente no es propiedad de ningún otro elemento, se centra en relación con la pantalla. Para centrar una ventana relativa a una ventana específica que no sea el propietario u el objeto primario, el parámetro pAlternateOwner
se puede establecer en una ventana válida. Para forzar el centrado en relación con la pantalla, pase el valor devuelto por CWnd::GetDesktopWindow
como pAlternateOwner
.
Ejemplo
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CenterWindow();
return TRUE;
}
CWnd::ChangeClipboardChain
Quita CWnd
de la cadena de visores del Portapapeles y convierte la ventana especificada por hWndNext
en el descendiente del antecesor CWnd
de la cadena.
BOOL ChangeClipboardChain(HWND hWndNext);
Parámetros
hWndNext
Identifica la ventana después de CWnd
en la cadena de visores del Portapapeles.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
CWnd::CheckDlgButton
Selecciona (coloca una marca de verificación junto a) o borra (quita una marca de verificación de) un botón, o cambia el estado de un botón de tres estados.
void CheckDlgButton(
int nIDButton,
UINT nCheck);
Parámetros
nIDButton
Especifica el botón que se va a modificar.
nCheck
Especifica la acción que se va a realizar. Si nCheck
no es cero, la función miembro CheckDlgButton
coloca una marca de verificación junto al botón; si es 0, se quita la marca de verificación. En el caso de los botones de tres estados, si nCheck
es 2, el estado del botón es indeterminado.
Comentarios
La función CheckDlgButton
envía un mensaje BM_SETCHECK
al botón especificado.
Ejemplo
// Sets 3 check buttons in various ways. Note BST_INDETERMINATE
// requires BS_3STATE or BS_AUTO3STATE in the button's style.
void CMyDlg::OnMarkButtons()
{
CheckDlgButton(IDC_CHECK1, BST_UNCHECKED); // 0
CheckDlgButton(IDC_CHECK2, BST_CHECKED); // 1
CheckDlgButton(IDC_CHECK3, BST_INDETERMINATE); // 2
}
CWnd::CheckRadioButton
Selecciona (agrega una marca de verificación a) un determinado botón de radio en un grupo y borra (quita una marca de verificación de) todos los demás botones de radio del grupo.
void CheckRadioButton(
int nIDFirstButton,
int nIDLastButton,
int nIDCheckButton);
Parámetros
nIDFirstButton
Especifica el identificador entero del primer botón de radio del grupo.
nIDLastButton
Especifica el identificador entero del último botón de radio del grupo.
nIDCheckButton
Especifica el identificador entero del botón de radio que se va a comprobar.
Comentarios
La función CheckRadioButton
envía un mensaje BM_SETCHECK
al botón especificado.
Ejemplo
// Of the 4 radio buttons, selects radio button 3.
void CMyDlg::OnMarkRadio()
{
CheckRadioButton(IDC_RADIO1, IDC_RADIO4, IDC_RADIO3);
}
CWnd::ChildWindowFromPoint
Determina cuál de las ventanas secundarias que pertenecen a CWnd
contiene el punto especificado (si es que alguna lo contiene).
CWnd* ChildWindowFromPoint(POINT point) const;
CWnd* ChildWindowFromPoint(
POINT point,
UINT nFlags) const;
Parámetros
point
Especifica las coordenadas de cliente del punto que se va a probar.
nflags
Especifica qué ventanas secundarias se omitirán. Este parámetro puede ser una combinación de los siguientes valores:
Valor | Significado |
---|---|
CWP_ALL |
No omitir ninguna ventana secundaria |
CWP_SKIPINVISIBLE |
Omitir las ventanas secundarias invisibles |
CWP_SKIPDISABLED |
Omitir las ventanas secundarias deshabilitadas |
CWP_SKIPTRANSPARENT |
Omitir las ventanas secundarias transparentes |
Valor devuelto
Identifica la ventana secundaria que contiene el punto. Es NULL
si el punto dado se encuentra fuera del área cliente. Si el punto está dentro del área cliente, pero no está incluido en ninguna ventana secundaria, se devuelve CWnd
.
Esta función miembro devolverá una ventana secundaria oculta o deshabilitada que contiene el punto especificado.
Más de una ventana puede contener el punto dado. Sin embargo, esta función solo devuelve el CWnd
* de la primera ventana encontrada que contiene el punto.
El CWnd
* que se devuelve puede ser temporal y no debe almacenarse para su uso posterior.
Ejemplo
void CMyDlg::OnFindCenterChild()
{
CRect rect;
GetClientRect(&rect);
CWnd* pWnd = ChildWindowFromPoint(
CPoint(rect.Width()/2, rect.Height()/2),
// Top left is always 0, 0.
CWP_SKIPINVISIBLE);
TRACE(_T("Center window is 0x%08x\n"), pWnd->m_hWnd);
}
CWnd::ClientToScreen
Convierte a las coordenadas de cliente de un punto o rectángulo determinado en pantalla en las coordenadas de pantalla.
void ClientToScreen(LPPOINT lpPoint) const; void ClientToScreen(LPRECT lpRect) const;
Parámetros
lpPoint
Apunta a una estructura POINT
u objeto CPoint
que contiene las coordenadas de cliente que se van a convertir.
lpRect
Apunta a una estructura RECT
u objeto CRect
que contiene las coordenadas de cliente que se van a convertir.
Comentarios
La función miembro ClientToScreen
usa las coordenadas de cliente en la estructura POINT
o RECT
el objeto CPoint
o CRect
al que apunta lpPoint
o lpRect
para calcular nuevas coordenadas de pantalla; a continuación, reemplaza las coordenadas de la estructura por las nuevas coordenadas. Las nuevas coordenadas de pantalla son relativas a la esquina superior izquierda de la pantalla del sistema.
La función miembro ClientToScreen
supone que el punto o rectángulo especificados está en coordenadas de cliente.
Ejemplo
// resize dialog to client's size
void CMyDlg::OnSizeToClient()
{
CRect myRect;
GetClientRect(&myRect);
ClientToScreen(myRect);
MoveWindow(myRect.left, myRect.top,
myRect.Width(), myRect.Height());
}
CWnd::CloseWindow
Minimiza la ventana.
void CloseWindow();
Comentarios
Esta función miembro emula la funcionalidad de la función CloseWindow
, tal y como se describe en Windows SDK.
CWnd::ContinueModal
Para determinar cuándo debe salir el estado modal, RunModalLoop
llama a esta función miembro.
virtual BOOL ContinueModal();
Valor devuelto
Distinto de cero si se va a continuar el bucle modal; 0 cuando se llama a EndModalLoop
.
Comentarios
De forma predeterminada, devuelve un valor distinto de cero hasta que se llama a EndModalLoop
.
CWnd::Create
Crea la ventana secundaria especificada y la asocia al objeto CWnd
.
virtual BOOL Create(
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle,
Const RECT& rect,
CWnd* pParentWnd,
UINT nID,
CCreateContext* pContext = NULL);
Parámetros
lpszClassName
[entrada] Un puntero a una cadena terminada en NULL que contiene el nombre de una clase de ventana del sistema registrada, o el nombre de una clase de ventana del sistema predefinida.
lpszWindowName
[entrada] Un puntero a una cadena terminada en NULL que contiene el nombre para mostrar de la ventana; de lo contrario, NULL
si no hay nombre para mostrar de la ventana.
dwStyle
[entrada] Combinación bit a bit (OR) de estilos de ventana. La opción WS_POPUP
no es un estilo válido.
rect
[entrada] Tamaño y ubicación de la ventana en relación con la esquina superior izquierda de la ventana primaria.
pParentWnd
[entrada] Un puntero a la ventana primaria.
nID
[entrada] El Id. de la ventana.
pContext
[entrada] Un puntero a una estructura CCreateContext
que se usa para personalizar la arquitectura de vista de documentos para la aplicación.
Valor devuelto
si el método es correcto; TRUE
, en caso contrario, FALSE
.
Comentarios
Advertencia
CWnd::PreCreateWindow
ahora asigna el miembro hMenu
de su parámetro CREATESTRUCT
al puntero this
si el menú es NULL
y el estilo contiene WS_CHILD
. Para obtener una funcionalidad adecuada, asegúrese de que el control de diálogo tiene un Id. que no sea NULL
.
Este cambio corrige un bloqueo en escenarios de interoperabilidad administrados o nativos. Una instrucción TRACE
en alertas CWnd::Create
al desarrollador del problema.
Use la función AfxRegisterWndClass
para registrar clases de ventana. Las clases de ventana definidas por el usuario están disponibles en el módulo donde están registradas.
Se llama al método CWnd::OnCreate
antes de que el método Create
devuelva un valor, y antes de que la ventana se haga visible.
Ejemplo
// Dynamically create static control using CWnd::Create,
// instead of with CStatic::Create, which doesn't
// need the "STATIC" class name.
void CMyDlg::OnCreateStatic()
{
// m_pWndStatic is a CWnd* member of CMyDlg
m_pWndStatic = new CWnd;
m_pWndStatic->Create(_T("STATIC"), _T("Hi"), WS_CHILD | WS_VISIBLE,
CRect(0, 0, 20, 20), this, 1234);
}
CWnd::CreateAccessibleProxy
Crea a un proxy de Active Accessibility para el objeto especificado.
virtual HRESULT CreateAccessibleProxy(
WPARAM wParam,
LPARAM lParam,
LRESULT* pResult);
Parámetros
wParam
Identifica el objeto al que tiene acceso el proxy de Active Accessibility. Puede ser uno de los siguientes valores
Valor | Significado |
---|---|
OBJID_CLIENT |
Hace referencia al área cliente de la ventana. |
lParam
Proporciona información adicional dependiente del mensaje.
pResult
Puntero a un LRESULT
que almacena el código de resultado.
Comentarios
Crea a un proxy de Active Accessibility para el objeto especificado.
CWnd::CreateCaret
Crea una nueva forma para el símbolo de inserción y se hace con la propiedad del cursor de inserción.
void CreateCaret(CBitmap* pBitmap);
Parámetros
pBitmap
Identifica el mapa de bits que define la forma del cursor de inserción.
Comentarios
El mapa de bits debe haber sido creado previamente por la función miembro CBitmap::CreateBitmap
, la función de Windows CreateDIBitmap
o la función miembro CBitmap::LoadBitmap
.
CreateCaret
destruye automáticamente la forma del cursor de inserción anterior, si existiera, independientemente de la ventana que posee el símbolo de inserción. Una vez creado, inicialmente, el cursor de inserción está oculto. Para mostrar el cursor de inserción, se debe llamar a la función miembro ShowCaret
.
El símbolo de inserción del sistema es un recurso compartido. CWnd
debe crear un cursor de inserción solo cuando tenga el foco de entrada o esté activo. Debe destruir el cursor de inserción antes de perder el foco de entrada o volverse inactivo.
Ejemplo
// Changes the caret of the edit control in this dialog box
void CMyDlg::OnChangeCaret()
{
m_pBitmapCaret = new CBitmap;
m_pBitmapCaret->LoadBitmap(IDB_HAPPY_BITMAP);
m_MyEdit.CreateCaret(m_pBitmapCaret);
m_MyEdit.ShowCaret();
}
CWnd::CreateControl
Use esta función miembro para crear un control ActiveX que se representará en el programa MFC mediante un objeto CWnd
.
BOOL CreateControl(
LPCTSTR pszClass,
LPCTSTR pszWindowName,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID,
CFile* pPersist = NULL,
BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL);
BOOL CreateControl(
REFCLSID clsid,
LPCTSTR pszWindowName,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID,
CFile* pPersist = NULL,
BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL);
BOOL CreateControl(
REFCLSID clsid,
LPCTSTR pszWindowName,
DWORD dwStyle,
const POINT* ppt,
const SIZE* psize,
CWnd* pParentWnd,
UINT nID,
CFile* pPersist = NULL,
BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL);
Parámetros
pszClass
Esta cadena puede contener el «nombre abreviado» de OLE (ProgID
) para la clase. Por ejemplo, "CIRC3.Circ3Ctrl.1"
. El nombre debe coincidir con el nombre registrado por el control. Como alternativa, la cadena puede contener la forma de cadena de un CLSID
, dentro de llaves. Por ejemplo, "{9DBAFCCF-592F-101B-85CE-00608CEC297B}"
. En cualquier caso, CreateControl
convierte la cadena en el Id. de clase correspondiente.
pszWindowName
Un puntero al texto que se mostrará en el control. Establece el valor de la propiedad Subtítulo o Texto del control (si existiera). Si NULL
, la propiedad Título o Texto del control no cambia.
dwStyle
Estilos de ventanas. Los estilos disponibles aparecen en Comentarios.
rect
Especifica el tamaño y la posición del control. Puede ser un objeto CRect
o una estructura RECT
.
ppt
Apunta a una estructura POINT
u objeto CPoint
que contiene la esquina superior izquierda del control.
pSize
Apunta a una estructura SIZE
u objeto CSize
que contiene el tamaño del control
*pParentWnd*
Especifica la ventana primaria del control. Este valor no debe ser NULL
.
nID
Especifica el id. del control.
pPersist
Un puntero a un CFile
que contiene el estado persistente del control. El valor predeterminado es NULL
, lo que indica que el control se inicializa por sí solo sin restaurar su estado desde ningún almacenamiento persistente. Si no es NULL
, debe ser un puntero a un objeto derivado de CFile
que contiene los datos persistentes del control en forma de una secuencia o un almacenamiento. Estos datos pueden haberse guardado en una activación anterior del cliente. El CFile
puede contener otros datos, pero debe tener su puntero de lectura y escritura establecido en el primer byte de datos persistentes en el momento de la llamada a CreateControl
.
bStorage
Indica si los datos de pPersist
deben interpretarse como datos IStorage
o IStream
. Si los datos de pPersist
son un almacenamiento, bStorage
debe ser TRUE
. Si los datos de pPersist
es una secuencia, bStorage
debe ser FALSE
. El valor predeterminado es FALSE
.
bstrLicKey
Datos de clave de licencia opcionales. Estos datos solo son necesarios para crear controles que requieran una clave de licencia en tiempo de ejecución. Si el control admite licencias, debe proporcionar una clave de licencia para que la creación del control se realice correctamente. El valor predeterminado es NULL
.
clsid
El Id. de clase único del control.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
CreateControl
es un análogo directo de la función CWnd::Create
, que crea la ventana para un CWnd
. CreateControl
crea un control ActiveX en lugar de una ventana normal.
Solo se admite un subconjunto de las marcas dwStyle
de Windows para CreateControl
:
WS_VISIBLE
Crea una ventana que está visible inicialmente. Obligatorio si desea que el control sea visible inmediatamente, como las ventanas normales.WS_DISABLED
Crea una ventana que está deshabilitada inicialmente. Una ventana deshabilitada no puede recibir la entrada del usuario. Se puede establecer si el control tiene una propiedad Habilitado.WS_BORDER
Crea una ventana con un borde de línea fina. Se puede establecer si el control tiene una propiedadBorderStyle
.WS_GROUP
Especifica el primer control de un grupo de controles. El usuario puede cambiar el foco del teclado desde un control del grupo al siguiente mediante las teclas de dirección. Todos los controles definidos con el estiloWS_GROUP
después del primer control pertenecen al mismo grupo. El siguiente control con el estiloWS_GROUP
finaliza el grupo e inicia el siguiente grupo.WS_TABSTOP
Especifica un control que puede recibir el foco del teclado cuando el usuario presiona la tecla TAB. Al presionar la tecla TAB, se cambia el foco del teclado al siguiente control del estiloWS_TABSTOP
.
Ejemplo
class CGenocx : public CWnd
{
protected:
DECLARE_DYNCREATE(CGenocx)
public:
CLSID const &GetClsid()
{
static CLSID const clsid = {0x20DD1B9E, 0x87C4, 0x11D1, {0x8B, 0xE3, 0x0, 0x0, 0xF8, 0x75, 0x4D, 0xA1}};
return clsid;
}
// This code is generated by the Control Wizard.
// It wraps the call to CreateControl in the call to Create.
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT &rect, CWnd *pParentWnd, UINT nID,
CCreateContext *pContext = NULL)
{
UNREFERENCED_PARAMETER(pContext);
UNREFERENCED_PARAMETER(lpszClassName);
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID);
}
// remainder of class declaration omitted...
CWnd::CreateEx
Crea la ventana especificada y la asocia al objeto CWnd
.
virtual BOOL CreateEx(
DWORD dwExStyle,
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU nIDorHMenu,
LPVOID lpParam = NULL);
virtual BOOL CreateEx(
DWORD dwExStyle,
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID,
LPVOID lpParam = NULL);
Parámetros
dwExStyle
Combinación bit a bit (OR) de estilos de ventana extendidos; de lo contrario, NULL
para el estilo de ventana extendido predeterminado.
lpszClassName
Un puntero a una cadena terminada en NULL que contiene el nombre de una clase de ventana del sistema registrada, o el nombre de una clase de ventana del sistema predefinida.
lpszWindowName
Un puntero a una cadena terminada en NULL que contiene el nombre para mostrar de la ventana; de lo contrario, NULL
si no hay nombre para mostrar de la ventana.
dwStyle
La combinación bit a bit (OR) de estilos de ventana; de lo contrario, NULL
para el estilo de ventana predeterminado.
x
La distancia horizontal inicial de la ventana desde el lado izquierdo de la pantalla o la ventana primaria.
y
La distancia vertical inicial de la ventana desde la parte superior de la pantalla o la ventana primaria.
nWidth
El ancho del objeto en píxeles.
nHeight
El alto de la ventana en píxeles.
hwndParent
Para una ventana secundaria, el identificador de la ventana primaria; de lo contrario, el identificador de la ventana de propietario si la ventana tiene un propietario.
nIDorHMenu
Para una ventana secundaria, el Id. de la ventana; de lo contrario, el Id. de un menú de la ventana.
lpParam
Un puntero a los datos de usuario que se pasan al método CWnd::OnCreate
en el campo lpCreateParams
.
rect
El tamaño y la ubicación de la ventana en relación con la pantalla o la ventana primaria.
pParentWnd
Para una ventana secundaria, puntero a la ventana primaria; de lo contrario, puntero a la ventana de propietario si la ventana tiene un propietario.
nID
Para una ventana secundaria, el Id. de la ventana; de lo contrario, el Id. de un menú de la ventana.
Valor devuelto
si el método es correcto; TRUE
, en caso contrario, FALSE
.
Comentarios
Advertencia
CWnd::PreCreateWindow
ahora asigna el miembro hMenu
de su parámetro CREATESTRUCT
al puntero this
si el menú es NULL
y el estilo contiene WS_CHILD
. Para obtener una funcionalidad adecuada, asegúrese de que el control de diálogo tiene un Id. que no sea NULL
.
Este cambio corrige un bloqueo en escenarios de interoperabilidad administrados o nativos. Una instrucción TRACE
en alertas CWnd::Create
al desarrollador del problema.
El estilo de ventana extendido predeterminado es WS_EX_LEFT
. El estilo de ventana predeterminado es WS_OVERLAPPED
.
Use la función AfxRegisterWndClass
para registrar clases de ventana. Las clases de ventana definidas por el usuario están disponibles en el módulo donde están registradas.
Las dimensiones de las ventanas secundarias son relativas a la esquina superior izquierda del área cliente de la ventana primaria. Las dimensiones de las ventanas de nivel superior son relativas a la esquina superior izquierda de la pantalla.
Se llama al método CWnd::OnCreate
antes de que el método CreateEx
devuelva un valor, y antes de que la ventana se haga visible.
Ejemplo
void CMyDlg::OnCreateExtendedControl()
{
// m_pWndStaticEx is a CWnd* member of CMyDlg
m_pWndStaticEx = new CStatic;
m_pWndStaticEx->CreateEx(WS_EX_CLIENTEDGE, // Make a client edge label.
_T("STATIC"), _T("Hi"),
WS_CHILD | WS_TABSTOP | WS_VISIBLE,
5, 5, 30, 30, m_hWnd, (HMENU)2345);
}
CWnd::CreateGrayCaret
Crea un rectángulo gris para el símbolo de inserción y se hace con la propiedad de ese símbolo de inserción.
void CreateGrayCaret(
int nWidth,
int nHeight);
Parámetros
nWidth
Especifica el ancho del cursor de inserción (en unidades lógicas). Si este parámetro es 0, el ancho se establece en el ancho del borde de ventana definido por el sistema.
nHeight
Especifica el alto del cursor de inserción (en unidades lógicas). Si este parámetro es 0, el alto se establece en el alto del borde de ventana definido por el sistema.
Comentarios
La forma del cursor de inserción puede ser una línea o un bloque.
Los parámetros nWidth
y nHeight
especifican el ancho y alto del cursor de inserción (en unidades lógicas); el ancho y alto exactos (en píxeles) dependen del modo de asignación.
La función de Windows GetSystemMetrics
puede recuperar el ancho o alto del borde de ventana del sistema con los índices SM_CXBORDER
y SM_CYBORDER
. El uso del ancho o alto del borde de la ventana garantiza que el cursor de inserción esté visible en una pantalla de alta resolución.
La función miembro CreateGrayCaret
destruye automáticamente la forma del cursor de inserción anterior, si existiera, independientemente de la ventana de propietario del símbolo de inserción. Una vez creado, inicialmente, el cursor de inserción está oculto. Para mostrar el cursor de inserción, se debe llamar a la función miembro ShowCaret
.
El símbolo de inserción del sistema es un recurso compartido. CWnd
debe crear un cursor de inserción solo cuando tenga el foco de entrada o esté activo. Debe destruir el cursor de inserción antes de perder el foco de entrada o volverse inactivo.
Ejemplo
// Create a 5x10 gray caret in the edit control.
void CMyDlg::OnCreateGrayCaret()
{
m_MyEdit.CreateGrayCaret(5, 10);
m_MyEdit.ShowCaret();
}
CWnd::CreateSolidCaret
Crea un rectángulo gris para el símbolo de inserción y se hace con la propiedad del cursor de inserción.
void CreateSolidCaret(
int nWidth,
int nHeight);
Parámetros
nWidth
Especifica el ancho del cursor de inserción (en unidades lógicas). Si este parámetro es 0, el ancho se establece en el ancho del borde de ventana definido por el sistema.
nHeight
Especifica el alto del cursor de inserción (en unidades lógicas). Si este parámetro es 0, el alto se establece en el alto del borde de ventana definido por el sistema.
Comentarios
La forma del cursor de inserción puede ser una línea o un bloque.
Los parámetros nWidth
y nHeight
especifican el ancho y alto del cursor de inserción (en unidades lógicas); el ancho y alto exactos (en píxeles) dependen del modo de asignación.
La función de Windows GetSystemMetrics
puede recuperar el ancho o alto del borde de ventana del sistema con los índices SM_CXBORDER
y SM_CYBORDER
. El uso del ancho o alto del borde de la ventana garantiza que el cursor de inserción esté visible en una pantalla de alta resolución.
La función miembro CreateSolidCaret
destruye automáticamente la forma del cursor de inserción anterior, si existiera, independientemente de la ventana de propietario del símbolo de inserción. Una vez creado, inicialmente, el cursor de inserción está oculto. Para mostrar el cursor de inserción, se debe llamar a la función miembro ShowCaret
.
El símbolo de inserción del sistema es un recurso compartido. CWnd
debe crear un cursor de inserción solo cuando tenga el foco de entrada o esté activo. Debe destruir el cursor de inserción antes de perder el foco de entrada o volverse inactivo.
Ejemplo
// Create a 5x10 solid caret in the edit control.
void CMyDlg::OnCreateSolidCaret()
{
m_MyEdit.CreateSolidCaret(5, 10);
m_MyEdit.ShowCaret();
}
CWnd::CWnd
Construye un objeto CWnd
.
CWnd();
Comentarios
La ventana de Windows no se crea ni se asocia hasta que se llama a la función miembro CreateEx
o Create
.
CWnd::Default
Llama al procedimiento de ventana predeterminado.
LRESULT Default();
Valor devuelto
Depende del mensaje enviado.
Comentarios
El procedimiento de ventana predeterminado proporciona el procesamiento predeterminado de todos los mensajes de ventana que una aplicación no procesa. Esta función miembro garantiza que se procesen todos los mensajes.
Ejemplo
// This sample shows how to avoid any button handling in base class,
// if any, and call the default window procedure directly.
void CMyDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
UNREFERENCED_PARAMETER(nFlags);
UNREFERENCED_PARAMETER(point);
CWnd::Default();
}
CWnd::DefWindowProc
Llama al procedimiento de ventana predeterminado, que proporciona el procesamiento predeterminado de todos los mensajes de ventana que una aplicación no procesa.
virtual LRESULT DefWindowProc(
UINT message,
WPARAM wParam,
LPARAM lParam);
Parámetros
message
Especifica el mensaje de Windows que se va a procesar.
wParam
Proporciona información adicional dependiente del mensaje.
lParam
Proporciona información adicional dependiente del mensaje.
Valor devuelto
Depende del mensaje enviado.
Comentarios
Esta función miembro garantiza que se procesen todos los mensajes. Se la debe llamar con los mismos parámetros que los recibidos por el procedimiento de ventana.
CWnd::DeleteTempMap
Llamado automáticamente por el controlador de tiempo de inactividad del objeto CWinApp
.
static void PASCAL DeleteTempMap();
Comentarios
Elimina los objetos temporales CWnd
creados por la función miembro FromHandle
.
Ejemplo
// DeleteTempMap() is a static member and does not need
// to be called within the scope of an instantiated CWnd object.
CWnd::DeleteTempMap();
CWnd::DestroyWindow
Destruye la ventana de Windows asociada al objeto CWnd
.
virtual BOOL DestroyWindow();
Valor devuelto
Distinto de cero si se destruye la ventana; de lo contrario, 0.
Comentarios
La función miembro DestroyWindow
envía los mensajes correspondientes a la ventana para desactivarla y quitar el foco de entrada. También destruye el menú de la ventana, vacía la cola de aplicaciones, destruye los temporizadores pendientes, quita la propiedad del Portapapeles e interrumpe la cadena del visor de Portapapeles si CWnd
está en la parte superior de la cadena del visor. Envía mensajes WM_DESTROY
y WM_NCDESTROY
a la ventana. No destruye el objeto CWnd
.
DestroyWindow
es un marcador de posición para realizar la limpieza. Dado que DestroyWindow
es una función virtual, se muestra en cualquier clase derivada de CWnd
la Vista de clases. Pero incluso si se invalida esta función en la clase derivada de CWnd
, no se llama necesariamente a DestroyWindow
. Si no se llama a DestroyWindow
en el código MFC, si quiere que se la llame, tendrá que llamarla usted explícitamente en su propio código.
Supongamos, por ejemplo, que se ha invalidado DestroyWindow
en una clase derivada de CView
. Dado que el código fuente de MFC no llama a DestroyWindow
en ninguna de sus clases derivadas de CFrameWnd
, no se llamará al DestroyWindow
invalidado, a menos que lo llame usted explícitamente.
Si la ventana es el elemento primario de cualquier ventana, estas ventanas secundarias se destruirán automáticamente cuando se destruya la ventana primaria. La función miembro DestroyWindow
destruye primero las ventanas secundarias y, a continuación, la propia ventana.
La función miembro DestroyWindow
también destruye los cuadros de diálogo no modales creados por CDialog::Create
.
Si el CWnd
que se destruye es una ventana secundaria y no tiene el estilo WS_EX_NOPARENTNOTIFY
establecido, el mensaje WM_PARENTNOTIFY
se envía al elemento primario.
Ejemplo
// CModeless is a CDialog class representing a modeless dialog
// Destruction of the modeless dialog involves calling DestroyWindow in
// OnOK() & OnCancel() handlers
void CModeless::OnOK()
{
if (!UpdateData(TRUE))
{
TRACE(_T("UpdateData failed during dialog termination\n"));
// The UpdateData routine will set focus to correct item
return;
}
DestroyWindow();
}
void CModeless::OnCancel()
{
DestroyWindow();
}
CWnd::Detach
Desasocia un identificador de Windows de un objeto CWnd
y devuelve el identificador.
HWND Detach();
Valor devuelto
Un HWND
al objeto de Windows.
Ejemplo
Vea el ejemplo de CWnd::Attach
.
CWnd::DlgDirList
Rellena un cuadro de lista con una lista de archivos o directorios.
int DlgDirList(
LPTSTR lpPathSpec,
int nIDListBox,
int nIDStaticPath,
UINT nFileType);
Parámetros
lpPathSpec
Un puntero a una cadena terminada en NULL y que contiene la ruta de acceso o el nombre de archivo. DlgDirList
modifica esta cadena, que debe ser lo suficientemente larga como para contener las modificaciones. Para obtener más información, consulte la sección «Comentarios» más adelante.
nIDListBox
Especifica el identificador de un cuadro de lista. Si nIDListBox
es 0, DlgDirList
asume que no existe ningún cuadro de lista y no intenta rellenar uno.
nIDStaticPath
Especifica el identificador del control de texto estático usado para mostrar la unidad y el directorio actuales. Si nIDStaticPath
es 0, DlgDirList
asume que tal control de texto no está presente.
nFileType
Especifica los atributos de los archivos que se van a mostrar. Puede ser cualquier combinación de los valores siguientes:
DDL_READWRITE
Archivos de datos de lectura escritura sin atributos adicionales.DDL_READONLY
Archivos de sólo lectura.DDL_HIDDEN
Archivos ocultos.DDL_SYSTEM
Archivos de sistema.DDL_DIRECTORY
Directorios.DDL_ARCHIVE
Archivos.DDL_POSTMSGS
LB_DIR
bandera. Si se establece la marcaLB_DIR
, Windows coloca los mensajes generados porDlgDirList
en la cola de la aplicación; de lo contrario, se envían directamente al procedimiento de cuadro de diálogo.DDL_DRIVES
Unidades. Si se establece la marcaDDL_DRIVES
, la marcaDDL_EXCLUSIVE
se establece automáticamente. Por lo tanto, para crear una lista de directorios que incluya unidades y archivos, se debe llamar aDlgDirList
dos veces: una vez con la marcaDDL_DRIVES
establecida y la otra, con las marcas para el resto de la lista.DDL_EXCLUSIVE
Bit exclusivo. Si se establece el bit exclusivo, solo se muestran los archivos del tipo especificado; de lo contrario, se enumeran los archivos normales y los archivos del tipo especificado.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
DlgDirList
envía mensajes LB_RESETCONTENT
y LB_DIR
al cuadro de lista. Rellena el cuadro de lista especificado por nIDListBox
con los nombres de todos los archivos que coinciden con la ruta de acceso proporcionada por lpPathSpec
.
El parámetro lpPathSpec
tiene el siguiente formato:
[drive:] [ [\u]directory[\idirectory]...\u] [filename]
En este ejemplo, drive
es una letra de unidad, directory
es un nombre de directorio válido y filename
es un nombre de archivo válido que debe contener al menos un carácter comodín. Los caracteres comodín son el signo de interrogación (?), que significa coincidencia con cualquier carácter, y el asterisco (*), que significa coincidencia con cualquier número de caracteres.
Si se especifica una cadena de longitud 0 para lpPathSpec
, o si se especifica solo un nombre de directorio, pero no se incluye ninguna especificación de archivo, la cadena se cambiará a «*.*».
Si lpPathSpec
incluye una unidad o un nombre de directorio, la unidad y el directorio actuales se cambian a la unidad y directorio designados antes de rellenar el cuadro de lista. El control de texto identificado por nIDStaticPath
también se actualiza con el nuevo nombre de la unidad y/o directorio.
Una vez rellenado el cuadro de lista, lpPathSpec
se actualiza quitando la parte de unidad y/o directorio de la ruta de acceso.
Ejemplo
// If pDialog points to a CDialog object with a list box
// with the identifier IDC_DIRLIST, this call will populate
// the box with only the non-hidden subdirectories in the root
// directory of the C:\ drive.
TCHAR path[MAX_PATH];
_tcscpy_s(path, MAX_PATH, _T("C:\\"));
pDialog->DlgDirList(path, IDC_DIRLIST, 0, DDL_EXCLUSIVE | DDL_DIRECTORY);
CWnd::DlgDirListComboBox
Rellena el cuadro de lista de un cuadro combinado con una lista de archivos o directorios.
int DlgDirListComboBox(
LPTSTR lpPathSpec,
int nIDComboBox,
int nIDStaticPath,
UINT nFileType);
Parámetros
lpPathSpec
Un puntero a una cadena terminada en NULL y que contiene la ruta de acceso o el nombre de archivo. DlgDirListComboBox
modifica esta cadena, por lo que estos datos no deben estar en forma de literal de cadena. Consulte la siguiente sección «Comentarios».
nIDComboBox
Especifica el identificador de un cuadro combinado en un cuadro de diálogo. Si nIDComboBox
es 0, DlgDirListComboBox
asume que no existe ningún cuadro combinado o intenta rellenar uno.
nIDStaticPath
Especifica el identificador del control de texto estático usado para mostrar la unidad y el directorio actuales. Si nIDStaticPath
es 0, DlgDirListComboBox
asume que tal control de texto no está presente.
nFileType
Especifica los atributos de los archivos DOS que se van a mostrar. Puede ser cualquier combinación de los valores siguientes:
DDL_READWRITE
Archivos de datos de lectura escritura sin atributos adicionales.DDL_READONLY
Archivos de sólo lectura.DDL_HIDDEN
Archivos ocultos.DDL_SYSTEM
Archivos de sistema.DDL_DIRECTORY
Directorios.DDL_ARCHIVE
Archivos.DDL_POSTMSGS
CB_DIR
bandera. Si se establece la marcaCB_DIR
, Windows coloca los mensajes generados porDlgDirListComboBox
en la cola de la aplicación; de lo contrario, se envían directamente al procedimiento de cuadro de diálogo.DDL_DRIVES
Unidades. Si se establece la marcaDDL_DRIVES
, la marcaDDL_EXCLUSIVE
se establece automáticamente. Por lo tanto, para crear una lista de directorios que incluya unidades y archivos, se debe llamar aDlgDirListComboBox
dos veces: una vez con la marcaDDL_DRIVES
establecida y la otra, con las marcas para el resto de la lista.DDL_EXCLUSIVE
Bit exclusivo. Si se establece el bit exclusivo, solo se muestran los archivos del tipo especificado; de lo contrario, se enumeran los archivos normales y los archivos del tipo especificado.
Valor devuelto
Especifica el resultado de la función . Es distinto de cero si se ha realizado una lista, incluso si es una lista vacía. Un valor 0 devuelto implica que la cadena de entrada no contenía una ruta de búsqueda válida.
Comentarios
DlgDirListComboBox
envía mensajes CB_RESETCONTENT
y CB_DIR
al cuadro combinado. Rellena el cuadro de lista del cuadro combinado especificado por nIDComboBox
con los nombres de todos los archivos que coinciden con la ruta de acceso proporcionada por lpPathSpec
.
El parámetro lpPathSpec
tiene el siguiente formato:
[drive:] [ [\u]directory[\idirectory]...\u] [filename]
En este ejemplo, drive
es una letra de unidad, directory
es un nombre de directorio válido y filename
es un nombre de archivo válido que debe contener al menos un carácter comodín. Los caracteres comodín son el signo de interrogación (?), que significa coincidencia con cualquier carácter, y el asterisco (*), que significa coincidencia con cualquier número de caracteres.
Si se especifica una cadena de longitud cero para lpPathSpec
, se usará el directorio actual y lpPathSpec
no se modificará. Si se especifica solo un nombre de directorio, pero no se incluye ninguna especificación de archivo, la cadena se cambiará a «*.*».
Si lpPathSpec
incluye una unidad o un nombre de directorio, la unidad y el directorio actuales se cambian a la unidad y directorio designados antes de rellenar el cuadro de lista. El control de texto identificado por nIDStaticPath
también se actualiza con el nuevo nombre de la unidad y/o directorio.
Una vez rellenado el cuadro combinado, lpPathSpec
se actualiza quitando la parte de unidad y/o directorio de la ruta de acceso.
Ejemplo
// If pDialog points to a CDialog object with a combo box
// with the identifier IDC_DIRCOMBO, this call will populate
// the box with only the non-hidden subdirectories in the root
// directory of the C:\ drive.
TCHAR szPath[MAX_PATH];
_tcsncpy_s(szPath, MAX_PATH, _T("C:\\"), MAX_PATH);
pDialog->DlgDirListComboBox(szPath, IDC_DIRCOMBO, 0, DDL_EXCLUSIVE | DDL_DIRECTORY);
// Note that the first argument is a string and not a string
// literal. This is necessary because DlgDirListComboBox
// modifies the supplied string. Passing a string literal
// will result in an access violation.
CWnd::DlgDirSelect
Recupera la selección actual de un cuadro de lista.
BOOL DlgDirSelect(
LPTSTR lpString,
int nIDListBox);
Parámetros
lpString
Apunta a un búfer que va a recibir la selección actual en el cuadro de lista.
nIDListBox
Especifica el Id. entero de un cuadro de lista en el cuadro de diálogo.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Asume que la función miembro DlgDirList
ha rellenado el cuadro de lista y que la selección es una letra de unidad, un archivo o un nombre de directorio.
La función miembro DlgDirSelect
copia la selección en el búfer proporcionado por lpString
. Si no hay ninguna selección, lpString
no cambia.
DlgDirSelect
envía mensajes LB_GETCURSEL
y LB_GETTEXT
al cuadro de lista.
No permite que se devuelva más de un nombre de archivo desde un cuadro de lista. El cuadro de lista no debe ser un cuadro de lista de selección múltiple.
CWnd::DlgDirSelectComboBox
Recupera la selección actual del cuadro de lista de un cuadro combinado.
BOOL DlgDirSelectComboBox(
LPTSTR lpString,
int nIDComboBox);
Parámetros
lpString
Apunta a un búfer que va a recibir la ruta de acceso seleccionada.
nIDComboBox
Especifica el Id. entero de un cuadro combinado en el cuadro de diálogo.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Asume que la función miembro DlgDirListComboBox
ha rellenado el cuadro de lista y que la selección es una letra de unidad, un archivo o un nombre de directorio.
La función miembro DlgDirSelectComboBox
copia la selección al búfer proporcionado. Si no hay ninguna selección, no se cambia el contenido del búfer.
DlgDirSelectComboBox
envía mensajes CB_GETCURSEL
y CB_GETLBTEXT
al cuadro combinado.
No permite que se devuelva más de un nombre de archivo desde un cuadro combinado.
CWnd::DoDataExchange
Lo llama el marco para intercambiar y validar los datos de diálogo.
virtual void DoDataExchange(CDataExchange* pDX);
Parámetros
pDX
Puntero a un objeto CDataExchange
.
Comentarios
Nunca llame a esta función directamente. Es la función miembro UpdateData
quien la llama. Llame a UpdateData
para inicializar los controles de un cuadro de diálogo o recuperar datos de un cuadro de diálogo.
Al derivar una clase de diálogo específica de la aplicación de CDialog
, debe invalidar esta función miembro si desea usar el intercambio y la validación automáticos de datos del marco. El asistente para agregar variables escribirá una versión invalidada de esta función miembro que contenga la «asignación de datos» deseada de las llamadas a funciones globales de intercambio de datos de diálogo (DDX) y validación (DDV).
Para generar automáticamente una versión invalidada de esta función miembro, cree primero un recurso de diálogo con el editor de diálogos y, a continuación, derive una clase de diálogo específica de la aplicación. A continuación, use el asistente para agregar variables para asociar variables, datos e intervalos de validación con varios controles en el nuevo cuadro de diálogo. Después, el asistente escribe el DoDataExchange
invalidado, que contiene un mapa de datos. A continuación se muestra un bloque de código DDX/DDV de ejemplo generado por el asistente para agregar variables:
void CPenWidthsDlg::DoDataExchange(CDataExchange *pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_THINPENWIDTH, m_nThinWidth);
DDV_MinMaxInt(pDX, m_nThinWidth, 1, 20);
DDX_Text(pDX, IDC_THICKPENWIDTH, m_nThickWidth);
DDV_MinMaxInt(pDX, m_nThickWidth, 1, 20);
}
La función miembro DoDataExchange
invalidada debe preceder a las instrucciones de macro en el archivo de origen.
Para obtener más información sobre el intercambio y la validación de datos de cuadros de diálogo, consulte Mostrar y manipular datos en un formulario e Intercambio y validación de datos de diálogo. Para obtener una descripción de las macros de DDX_ y DDV_ generadas por el asistente para agregar variables, consulte Nota técnica 26.
CWnd::DragAcceptFiles
Llame a esta función miembro desde una ventana, mediante un puntero CWnd
, en la función CWinApp::InitInstance
de la aplicación para indicar que la ventana acepta archivos quitados del Administrador de archivos de Windows o del Explorador de archivos.
void DragAcceptFiles(BOOL bAccept = TRUE);
Parámetros
BAccept
Una marca que indica si se aceptan archivos arrastrados.
Comentarios
Solo la ventana que llama a DragAcceptFiles
con el parámetro bAccept
establecido en TRUE
se ha identificado como capaz de procesar el mensaje de Windows WM_DROPFILES
. Por ejemplo, en una aplicación MDI, si se usa el puntero de ventana CMDIFrameWnd
en la llamada de función DragAcceptFiles
, solo la ventana CMDIFrameWnd
obtiene el mensaje WM_DROPFILES
. Este mensaje no se envía a todas las ventanas CMDIChildWnd
abiertas. Para que una ventana CMDIChildWnd
reciba este mensaje, debe llamar a DragAcceptFiles
con el puntero de ventana CMDIChildWnd
.
Para dejar de recibir archivos arrastrados, llame a la función miembro con bAccept
establecido en FALSE
.
CWnd::DragDetect
Captura el mouse y realiza un seguimiento de su movimiento hasta que el usuario suelta el botón primario, presiona la tecla ESC o mueve el mouse fuera del rectángulo de arrastre alrededor del punto especificado.
BOOL DragDetect(POINT pt) const;
Parámetros
pt
La posición inicial del mouse en coordenadas de pantalla. La función determina las coordenadas del rectángulo de arrastre mediante este punto.
Valor devuelto
Si el usuario ha movido el mouse fuera del rectángulo de arrastre mientras mantenía presionado el botón izquierdo, el valor devuelto es distinto de cero.
Si el usuario no ha movido el mouse fuera del rectángulo de arrastre mientras mantenía presionado el botón izquierdo, el valor devuelto es cero.
Comentarios
Esta función miembro emula la funcionalidad de la función DragDetect
, tal y como se describe en Windows SDK.
CWnd::DrawAnimatedRects
Dibuja un rectángulo de trama de alambres y lo anima para señalar un icono abierto o una ventana minimizada o maximizada.
BOOL DrawAnimatedRects(
int idAni,
CONST RECT* lprcFrom,
CONST RECT* lprcTo);
Parámetros
idAni
Especifica el tipo de animación. Si se especifica IDANI_CAPTION
, el título de la ventana se animará desde la posición especificada por lprcFrom
a la posición especificada por lprcTo
. El efecto es similar a minimizar o maximizar una ventana.
lprcFrom
Un puntero a una estructura RECT
que especifica la ubicación y el tamaño del icono o la ventana minimizada.
lprcTo
Un puntero a una estructura RECT
que especifica la ubicación y el tamaño de la ventana restaurada
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, 0.
Comentarios
Esta función miembro emula la funcionalidad de la función DrawAnimatedRects
, tal y como se describe en Windows SDK.
CWnd::DrawCaption
Dibuja el título de una ventana.
BOOL DrawCaption(
CDC* pDC,
LPCRECT lprc,
UINT uFlags);
Parámetros
pDC
Puntero a un contexto de dispositivo. La función dibuja el título de la ventana en este contexto de dispositivo.
lprc
Un puntero a una estructura RECT
que especifica el rectángulo delimitador del título de la ventana.
uFlags
Especifica las opciones de dibujo. Para obtener una lista completa de los valores, consulte DrawCaption
.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, 0.
Comentarios
Esta función miembro emula la funcionalidad de la función DrawCaption
, tal y como se describe en Windows SDK.
CWnd::DrawMenuBar
Vuelve a dibujar la barra de menús.
void DrawMenuBar();
Comentarios
Si se cambia una barra de menú después de que Windows haya creado la ventana, llame a esta función para dibujar la barra de menú modificada.
Ejemplo
Vea el ejemplo de CWnd::GetMenu
.
CWnd::EnableActiveAccessibility
Habilita las funciones de Active Accessibility definidas por el usuario.
void EnableActiveAccessibility();
Comentarios
La compatibilidad predeterminada de MFC con Active Accessibility es suficiente para las ventanas y controles estándar, incluidos los controles ActiveX; sin embargo, si la clase derivada de CWnd
contiene elementos de la interfaz de usuario no en ventana, MFC no tiene ninguna manera de saber de ellos. En ese caso, debe invalidar las funciones miembro de Active Accessibility correspondientes en la clase, y debe llamar a EnableActiveAccessibility
en el constructor de la clase.
CWnd::EnableDynamicLayout
Habilita o deshabilita al administrador de diseño dinámico. Si el diseño dinámico está habilitado, la posición y el tamaño de las ventanas secundarias se pueden ajustar dinámicamente cuando el usuario cambie el tamaño de la ventana.
void EnableDynamicLayout(BOOL bEnable = TRUE);
Parámetros
bEnable
TRUE
para habilitar el diseño dinámico; FALSE
para deshabilitarlo.
Comentarios
Si desea habilitar el diseño dinámico, no puede limitarse a llamar a este método: también debe proporcionar información de diseño dinámico que especifique cómo responden los controles de la ventana a los cambios de tamaño. Puede especificar esta información en el editor de recursos o mediante programación para cada control. Consulte Diseño dinámico.
CWnd::EnableD2DSupport
Habilita o deshabilita la compatibilidad D2D de ventana. Llame a este método antes de que se inicialice la ventana principal.
void EnableD2DSupport(
BOOL bEnable = TRUE,
BOOL bUseDCRenderTarget = FALSE);
Parámetros
bEnable
Especifica si se debe activar o desactivar la compatibilidad D2D.
bUseDCRenderTarget
Especifica si se utiliza el destino de representación Contexto de dispositivo (DC), CDCRenderTarget
. En el caso de FALSE
, se utiliza CHwndRenderTarget
.
CWnd::EnableScrollBar
Habilita o deshabilita una o ambas flechas de una barra de desplazamiento.
BOOL EnableScrollBar(
int nSBFlags,
UINT nArrowFlags = ESB_ENABLE_BOTH);
Parámetros
nSBFlags
Especifica el tipo de barra de desplazamiento. Puede tener uno de los siguientes valores:
SB_BOTH
Habilita o deshabilita las flechas de las barras de desplazamiento horizontal y vertical asociadas a la ventana.SB_HORZ
Habilita o deshabilita las flechas de la barra de desplazamiento horizontal asociada a la ventana.SB_VERT
Habilita o deshabilita las flechas de la barra de desplazamiento vertical asociada a la ventana.
nArrowFlags
Especifica si las flechas de la barra de desplazamiento están habilitadas o deshabilitadas y qué flechas están habilitadas o deshabilitadas. Puede tener uno de los siguientes valores:
ESB_ENABLE_BOTH
Habilita ambas flechas en una barra de desplazamiento (predeterminado).ESB_DISABLE_LTUP
Deshabilita la flecha izquierda de una barra de desplazamiento horizontal o la flecha arriba de una barra de desplazamiento vertical.ESB_DISABLE_RTDN
Deshabilita la flecha derecha de una barra de desplazamiento horizontal o la flecha hacia abajo de una barra de desplazamiento vertical.ESB_DISABLE_BOTH
Deshabilita ambas flechas de una barra de desplazamiento.
Valor devuelto
Distinto de cero si las flechas están habilitadas o deshabilitadas según lo especificado. De lo contrario, es 0, lo que indica que las flechas ya están en el estado solicitado o que se ha producido un error.
CWnd::EnableScrollBarCtrl
Habilita o deshabilita la barra de desplazamiento de esta ventana.
void EnableScrollBarCtrl(
int nBar,
BOOL bEnable = TRUE);
Parámetros
nBar
El identificador de barra de desplazamiento.
bEnable
Especifica si la barra de desplazamiento se va a habilitar o deshabilitar.
Comentarios
Si la ventana tiene un control de barra de desplazamiento relacionado, se usa esa barra de desplazamiento; de lo contrario, se usa la propia barra de desplazamiento de la ventana.
CWnd::EnableToolTips
Habilita sugerencias de herramientas para la ventana especificada.
BOOL EnableToolTips(BOOL bEnable = TRUE);
Parámetros
bEnable
Especifica si el control de información sobre herramientas está habilitado o deshabilitado. TRUE
habilita el control; FALSE
deshabilita el control.
Valor devuelto
TRUE
si las sugerencias de herramientas están habilitadas; de lo contrario, FALSE
.
Comentarios
Invalide OnToolHitTest
para proporcionar la estructura o los structs TOOLINFO
para la ventana.
Nota:
Algunas ventanas, como CToolBar
, proporcionan una implementación integrada de OnToolHitTest
.
Consulte TOOLINFO
de Windows SDK para obtener más información sobre esta estructura.
Simplemente llamar a EnableToolTips
no es suficiente para mostrar sugerencias de herramientas para los controles secundarios, a menos que la ventana primaria se derive de CFrameWnd
. Esto se debe a que CFrameWnd
proporciona un controlador predeterminado para la notificación TTN_NEEDTEXT
. Si la ventana primaria no se deriva de CFrameWnd
, es decir, si es un cuadro de diálogo o una vista de formulario, las sugerencias de herramientas para los controles secundarios no se mostrarán correctamente, a menos que proporcione un controlador para la notificación de información sobre herramientas TTN_NEEDTEXT
. Consulte Sugerencias sobre herramientas.
Las sugerencias de herramientas predeterminadas para las ventanas proporcionadas por EnableToolTips
no tienen texto asociado a ellas. Para recuperar texto de la información sobre herramientas que se va a mostrar, la notificación TTN_NEEDTEXT
se envía a la ventana primaria del control de información sobre herramientas justo antes de que se muestre la ventana de información sobre herramientas. Si no hay ningún controlador para que este mensaje asigne algún valor al miembro pszText
de la estructura TOOLTIPTEXT
, no se mostrará ningún texto para la información sobre herramientas.
Ejemplo
// From message map for CMdiView, a CView-derived class
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, &CMdiView::OnToolTipNotify)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, &CMdiView::OnToolTipNotify)
void CMdiView::OnInitialUpdate()
{
CView::OnInitialUpdate();
m_Edit.Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
CRect(10, 10, 100, 100), this, IDC_TTEDIT);
EnableToolTips(TRUE); // enable tool tips for view
}
//Notification handler
BOOL CMdiView::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{
UNREFERENCED_PARAMETER(id);
UNREFERENCED_PARAMETER(pResult);
// need to handle both ANSI and UNICODE versions of the message
TOOLTIPTEXTA *pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW *pTTTW = (TOOLTIPTEXTW*)pNMHDR;
CStringA strTipText;
UINT_PTR nID = pNMHDR->idFrom;
if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
{
// idFrom is actually the HWND of the tool
nID = ::GetDlgCtrlID((HWND)nID);
}
if (nID != 0) // will be zero on a separator
strTipText.Format("Control ID = %d", nID);
if (pNMHDR->code == TTN_NEEDTEXTA)
{
strncpy_s(pTTTA->szText, sizeof(pTTTA->szText), strTipText,
strTipText.GetLength() + 1);
}
else
{
::MultiByteToWideChar(CP_ACP, 0, strTipText, strTipText.GetLength() + 1,
pTTTW->szText, sizeof(pTTTW->szText) / (sizeof pTTTW->szText[0]));
}
return TRUE; // message was handled
}
CWnd::EnableTrackingToolTips
Habilita o deshabilita la información sobre herramientas de seguimiento.
BOOL EnableTrackingToolTips(BOOL bEnable = TRUE);
Parámetros
bEnable
Especifica si las sugerencias de herramientas de seguimiento están habilitadas o deshabilitadas. Si este parámetro es TRUE
, se habilitarán las sugerencias de herramientas de seguimiento. Si este parámetro es FALSE
, se deshabilitarán las sugerencias de la herramienta de seguimiento.
Valor devuelto
Indica el estado antes de llamar a la función miembro EnableWindow
. El valor devuelto es distinto de cero si la ventana se ha deshabilitado previamente. El valor devuelto es 0 si la ventana se ha habilitado previamente o se ha producido un error.
Comentarios
Las sugerencias de herramientas de seguimiento son ventanas de información sobre herramientas que se pueden colocar dinámicamente en la pantalla. Al actualizar rápidamente la posición, la ventana de información sobre herramientas parece moverse suavemente, o «deslizarse». Esta funcionalidad puede ser útil si necesita que el texto de información sobre herramientas siga la posición del puntero a medida que se mueve.
CWnd::EnableWindow
Habilita o deshabilita la entrada de mouse y de teclado.
BOOL EnableWindow(BOOL bEnable = TRUE);
Parámetros
bEnable
Especifica si la ventana dada se va a habilitar o deshabilitar. Si este parámetro es TRUE
, se habilitará la ventana. Si este parámetro es FALSE
, se deshabilitará la ventana.
Valor devuelto
Indica el estado antes de llamar a la función miembro EnableWindow
. El valor devuelto es distinto de cero si la ventana se ha deshabilitado previamente. El valor devuelto es 0 si la ventana se ha habilitado previamente o se ha producido un error.
Comentarios
Cuando la entrada está deshabilitada, las entradas como los clics del mouse y las pulsaciones de tecla se ignoran. Cuando la entrada está habilitada, la ventana procesa toda la entrada.
Si el estado habilitado cambia, el mensaje WM_ENABLE
se envía antes de que esta función devuelva un valor.
Si está deshabilitado, todas las ventanas secundarias están deshabilitadas implícitamente, aunque no se envían mensajes WM_ENABLE
.
Para poder activar una ventana, se debe habilitarla antes. Por ejemplo, si una aplicación muestra un cuadro de diálogo no modal y ha deshabilitado su ventana principal, la ventana principal debe estar habilitada antes de que se destruya el cuadro de diálogo. De lo contrario, otra ventana obtendrá el foco de entrada y se activará. Si se deshabilita una ventana secundaria, Windows la ignora cuando intenta determinar qué ventana debe recibir mensajes del mouse.
De forma predeterminada, se habilita una ventana cuando se crea. Una aplicación puede especificar el estilo WS_DISABLED
en la función miembro Create
o CreateEx
para crear una ventana que está deshabilitada inicialmente. Una vez creada una ventana, una aplicación también puede usar la función miembro EnableWindow
para habilitar o deshabilitar la ventana.
Una aplicación puede usar esta función para habilitar o deshabilitar un control en un cuadro de diálogo. Un control deshabilitado no puede recibir el foco de entrada y ningún usuario puede acceder a él.
Ejemplo
//CMyFileDialog is a CFileDialog-derived class
//OnInitDialog is the handler for WM_INITDIALOG
BOOL CMyFileDialog::OnInitDialog()
{
CFileDialog::OnInitDialog();
CWnd *pWndParent = GetParent();
//make sure you add #include <dlgs.h> for IDs 'edt1' & 'stc3'
//disables the 'file name' edit and static control
//of the standard file open dialog
//get handle of 'file name' combobox control & disable it
CWnd *pWnd = pWndParent->GetDlgItem(cmb13);
pWnd->EnableWindow(FALSE);
//get handle of 'file name' static control & disable it
pWnd = pWndParent->GetDlgItem(stc3);
pWnd->EnableWindow(FALSE);
return TRUE;
}
CWnd::EndModalLoop
Finaliza una llamada a RunModalLoop
.
virtual void EndModalLoop(int nResult);
Parámetros
nResult
Contiene el valor que se va a devolver al autor de la llamada a RunModalLoop
.
Comentarios
El parámetro nResult
se propaga al valor devuelto de RunModalLoop
.
CWnd::EndModalState
Llame a esta función miembro para cambiar una ventana marco de modal a no modal.
virtual void EndModalState();
CWnd::EndPaint
Marca el final de la pintura en la ventana especificada.
void EndPaint(LPPAINTSTRUCT lpPaint);
Parámetros
lpPaint
Apunta a una estructura PAINTSTRUCT
que contiene la información de pintura recuperada por la función miembro BeginPaint
.
Comentarios
La función miembro EndPaint
es necesaria para cada llamada a la función miembro BeginPaint
, pero solo una vez que se haya completado la pintura.
Si la función miembro BeginPaint
oculta el cursor de inserción, EndPaint
restaura el cursor de inserción en la pantalla.
Ejemplo
Vea el ejemplo de CWnd::BeginPaint
.
CWnd::ExecuteDlgInit
Inicia un recurso de cuadro de diálogo.
BOOL ExecuteDlgInit(LPCTSTR lpszResourceName);
BOOL ExecuteDlgInit(LPVOID lpResource);
Parámetros
lpszResourceName
Un puntero a una cadena terminada en NULL que especifica el nombre del recurso.
lpResource
Un puntero a un recurso.
Valor devuelto
TRUE
si se ejecuta un recurso de diálogo; de lo contrario, FALSE
.
Comentarios
ExecuteDlgInit
usará recursos enlazados al módulo en ejecución o recursos de otros orígenes. Para ello, ExecuteDlgInit
busca un identificador de recursos mediante una llamada a AfxFindResourceHandle
. Si la aplicación MFC no usa el archivo DLL compartido (MFCx0[U][D].DLL), AfxFindResourceHandle
llama a AfxGetResourceHandle
, que devuelve el identificador de recursos actual para el ejecutable. Si la aplicación MFC usa MFCx0[U][D].DLL, AfxFindResourceHandle
recorre la lista de objetos CDynLinkLibrary
de archivos DLL de extensión compartida y MFC para buscar el identificador de recursos correcto.
CWnd::FilterToolTipMessage
Lo llama el marco para mostrar mensajes de información sobre herramientas.
void FilterToolTipMessage(MSG* pMsg);
Parámetros
pMsg
Un puntero al mensaje de información sobre herramientas.
Comentarios
En la mayoría de las aplicaciones MFC, el marco llama a este método desde PreTranslateMessage
y EnableToolTips
, y no es necesario que lo llame usted mismo.
Sin embargo, en determinadas aplicaciones, por ejemplo, algunos controles ActiveX, es posible que el marco no invoque estos métodos, y usted tendrá que llamar a FilterToolTipMessage
. Para obtener más información, consulte Métodos de creación de sugerencias de herramientas.
CWnd::FindWindow
Devuelve el nivel superior CWnd
cuya clase de ventana es determinada por lpszClassName
y cuyo nombre de ventana, o título, es determinado por lpszWindowName
.
static CWnd* PASCAL FindWindow(
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName);
Parámetros
lpszClassName
Apunta a una cadena terminada en NULL que especifica el nombre de clase de la ventana (una estructura WNDCLASS
). Si lpClassName
es NULL
, todos los nombres de clase coinciden.
lpszWindowName
Apunta a una cadena terminada en NULL que especifica el nombre de la ventana (el título de la ventana). Si lpWindowName
es NULL
, todos los nombres de ventana coinciden.
Valor devuelto
Identifica la ventana que tiene el nombre de clase y el nombre de la ventana especificados. Es NULL
si no se encuentra ninguna ventana de este tipo.
El CWnd
* que se devuelve puede ser temporal y no debe almacenarse para su uso posterior.
Comentarios
Esta función no busca ventanas secundarias.
Ejemplo
// activate an application with a window with a specific class name
BOOL CMyApp::FirstInstance()
{
CWnd *pWndPrev, *pWndChild;
// Determine if a window with the class name exists...
pWndPrev = CWnd::FindWindow(_T("MyNewClass"), NULL);
if (NULL != pWndPrev)
{
// If so, does it have any popups?
pWndChild = pWndPrev->GetLastActivePopup();
// If iconic, restore the main window
if (pWndPrev->IsIconic())
pWndPrev->ShowWindow(SW_RESTORE);
// Bring the main window or its popup to the foreground
pWndChild->SetForegroundWindow();
// and you are done activating the other application
return FALSE;
}
return TRUE;
}
CWnd::FindWindowEx
Recupera el objeto de ventana cuyo nombre de clase y nombre de ventana coinciden con las cadenas especificadas.
static CWnd* FindWindowEx(
HWND hwndParent,
HWND hwndChildAfter,
LPCTSTR lpszClass,
LPCTSTR lpszWindow);
Parámetros
hwndParent
El identificador de la ventana primaria cuyas ventanas secundarias se van a buscar.
hwndChildAfter
El identificador de una ventana secundaria. La búsqueda comienza con la siguiente ventana secundaria en el orden Z. La ventana secundaria debe ser una ventana secundaria directa de hwndParent
, y no simplemente una ventana descendiente.
lpszClass
Un puntero a una cadena terminada en NULL que especifica el nombre de clase o un átomo de clase creado por una llamada anterior al RegisterClass
o RegisterClassEx
.
lpszWindow
Apunta a una cadena terminada en NULL que especifica el nombre de la ventana (el título de la ventana). Si este parámetro es NULL
, todos los nombres de ventana coinciden.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un puntero al objeto de ventana que tiene los nombres de ventana y clase especificados. Si la función produce un error, el valor devuelto es NULL
.
Comentarios
Esta función miembro emula la funcionalidad de la función FindWindowEx
, tal y como se describe en Windows SDK.
CWnd::FlashWindow
Muestra un destello en la ventana una vez.
BOOL FlashWindow(BOOL bInvert);
Parámetros
bInvert
Especifica si CWnd
se va a mostrar un destello o se va a devolver a su estado original. El CWnd
muestra destellos en uno y otro estado si bInvert
es TRUE
. Si bInvert
es FALSE
, la ventana se devuelve a su estado original (activa o inactiva).
Valor devuelto
Distinto de cero si la ventana estaba activa antes de la llamada a la función miembro FlashWindow
; en caso contrario, 0.
Comentarios
Para los destellos sucesivos, cree un temporizador del sistema y llame repetidamente a FlashWindow
. Mostrar destellos en CWnd
significa cambiar la apariencia de su barra de título como si el CWnd
estuviera cambiando de estado inactivo a activo, o viceversa. (Una barra de título inactiva cambia a barra de título activa; una barra de título activa cambia a barra de título inactiva).
Normalmente, se muestra un destello en una ventana para informar al usuario de que requiere atención, pero que actualmente no tiene el foco de entrada.
El parámetro bInvert
debe ser FALSE
solo cuando la ventana obtenga el foco de entrada, y ya no mostrará destellos; debe ser TRUE
en llamadas sucesivas mientras espera a obtener el foco de entrada.
Esta función siempre devuelve valores distintos de cero para ventanas minimizadas. Si la ventana está minimizada, FlashWindow
mostrará un destello en el icono de la ventana; bInvert
se ignora en ventanas minimizadas.
Ejemplo
BOOL CPenWidthsDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// set timer to cause dialog to flash
SetTimer(1, 500, NULL);
return TRUE; // return TRUE unless you set the focus to a control
}
void CPenWidthsDlg::OnTimer(UINT_PTR nIDEvent)
{
// cause the dialog to flash
FlashWindow(TRUE);
CDialog::OnTimer(nIDEvent);
}
CWnd::FlashWindowEx
Muestra un destello en la ventana una vez.
BOOL FlashWindowEx(
DWORD dwFlags,
UINT uCount,
DWORD dwTimeout);
Parámetros
*dwFlags*
Especifica el estado de destello. Para obtener una lista completa de los valores, consulte FLASHWINFO
.
uCount
Especifica el número de veces que se va a haber destellos en la ventana.
dwTimeout
Especifica la velocidad, en milisegundos, a la que se producirán los destellos en la ventana. Si dwTimeout
es cero, la función usa la velocidad de parpadeo predeterminada del cursor.
Valor devuelto
El valor devuelto especifica el estado de la ventana antes de la llamada a la función FlashWindowEx
. Si el título de la ventana se ha dibujado como activo antes de la llamada, el valor devuelto es distinto de cero. De lo contrario, el valor devuelto es cero.
Comentarios
Este método emula la funcionalidad de la función FlashWindowEx
, tal y como se describe en Windows SDK.
CWnd::FromHandle
Devuelve un puntero a un objeto CWnd
cuando se especifica un identificador a una ventana. Si un objeto CWnd
no está asociado al identificador, se creará y asociará un objeto CWnd
temporal.
static CWnd* PASCAL FromHandle(HWND hWnd);
Parámetros
hWnd
Un HWND
de una ventana de Windows.
Valor devuelto
Devuelve un puntero a un objeto CWnd
cuando se especifica un identificador a una ventana. Si un objeto CWnd
no está asociado al identificador, se creará y asociará un objeto CWnd
temporal.
El puntero puede ser temporal y no se debe almacenar para su uso posterior.
CWnd::FromHandlePermanent
Devuelve un puntero a un objeto CWnd
cuando se especifica un identificador a una ventana.
static CWnd* PASCAL FromHandlePermanent(HWND hWnd);
Parámetros
hWnd
Un HWND
de una ventana de Windows.
Valor devuelto
Puntero a un objeto CWnd
.
Comentarios
Si un objeto CWnd
no está asociado al identificador, se devuelve NULL
.
Esta función, a diferencia de FromHandle
, no crea objetos temporales.
CWnd::get_accChild
El marco llama a este método para recuperar la dirección de una interfaz IDispatch
del elemento secundario especificado.
virtual HRESULT get_accChild(
VARIANT varChild,
IDispatch** ppdispChild);
Parámetros
varChild
Identifica el elemento secundario cuya interfaz IDispatch
se va a recuperar.
ppdispChild
Recibe la dirección de la interfaz IDispatch
del objeto secundario.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accChild
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
si tiene elementos de interfaz de usuario no en ventana (distintos de los controles ActiveX sin ventana, que controla MFC).
Para más información, consulte IAccessible::get_accChild
en Windows SDK.
CWnd::get_accChildCount
El marco llama a este método para recuperar el número de elementos secundarios que pertenecen a este objeto.
virtual HRESULT get_accChildCount(long* pcountChildren);
Parámetros
pcountChildren
El número de elementos secundarios.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accChildCount
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
si tiene elementos de interfaz de usuario no en ventana (distintos de los controles ActiveX sin ventana, que controla MFC). Llame a la versión de la clase base y agregue los elementos secundarios no en ventana.
Para más información, consulte IAccessible::get_accChildCount
en Windows SDK.
CWnd::get_accDefaultAction
El marco llama a este método para recuperar una cadena que describe la acción predeterminada del objeto.
virtual HRESULT get_accDefaultAction(
VARIANT varChild,
BSTR* pszDefaultAction);
Parámetros
varChild
Especifica si la acción predeterminada que se va a recuperar es la del objeto o de uno de los elementos secundarios del objeto. Este parámetro puede ser CHILDID_SELF
(para obtener información sobre el objeto) o un Id. secundario (para obtener información sobre el elemento secundario del objeto).
pszDefaultAction
Dirección de un BSTR
que recibe una cadena localizada que describe la acción predeterminada para el objeto especificado, o NULL
si este objeto no tiene ninguna acción predeterminada.
Valor devuelto
Devuelve S_OK si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accDefaultAction de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
para describir la acción predeterminada del objeto.
Para más información, consulte IAccessible::get_accDefaultAction
en Windows SDK.
CWnd::get_accDescription
El marco llama a este método para recuperar una cadena que describe la apariencia visual del objeto especificado.
virtual HRESULT get_accDescription(
VARIANT varChild,
BSTR* pszDescription);
Parámetros
varChild
Especifica si la ubicación que se debe recuperar es la del objeto o de uno de los elementos secundarios del objeto. Este parámetro puede ser CHILDID_SELF
(para obtener información sobre el objeto) o un Id. secundario (para obtener información sobre el elemento secundario del objeto).
pszDescription
Dirección de un objeto BSTR
que recibe una cadena localizada que describe el objeto especificado, o NULL
si no hay ninguna descripción disponible para este objeto.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accDescription
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
para describir el objeto. Llame a la versión de la clase base y agregue la descripción.
Para más información, consulte IAccessible::get_accDescription
en Windows SDK.
CWnd::get_accFocus
El marco llama a este método para recuperar el objeto que tiene el foco de teclado.
virtual HRESULT get_accFocus(VARIANT* pvarChild);
Parámetros
pvarChild
Recibe información sobre el objeto que tiene el foco. Consulte pvarID
en IAccessible::get_accFocus
de Windows SDK.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accFocus
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
si tiene elementos de interfaz de usuario no en ventana (distintos de los controles ActiveX sin ventana, que controla MFC).
Para más información, consulte IAccessible::get_accFocus
en Windows SDK.
CWnd::get_accHelp
El marco llama a este método para recuperar la cadena de propiedad Help de un objeto.
virtual HRESULT get_accHelp(
VARIANT varChild,
BSTR* pszHelp);
Parámetros
varChild
Especifica si la información de ayuda que se debe recuperar es la del objeto o de uno de los elementos secundarios del objeto. Este parámetro puede ser CHILDID_SELF
(para obtener información sobre el objeto) o un Id. secundario (para obtener información sobre el elemento secundario del objeto).
pszHelp
Dirección de un BSTR
que recibe la cadena localizada que contiene la información de ayuda para el objeto especificado, o NULL
si no hay información de ayuda disponible.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accHelp
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
para proporcionar texto de ayuda para el objeto.
Para más información, consulte IAccessible::get_accHelp
en Windows SDK.
CWnd::get_accHelpTopic
El marco lo llama para recuperar la ruta de acceso completa del archivo WinHelp asociado al objeto especificado y el identificador del tema correspondiente dentro de ese archivo.
virtual HRESULT get_accHelpTopic(
BSTR* pszHelpFile,
VARIANT varChild,
long* pidTopic);
Parámetros
pszHelpFile
La dirección de un objeto BSTR
que recibe la ruta de acceso completa del archivo WinHelp
asociado al objeto especificado, si existiera.
varChild
Especifica si el tema de Ayuda que se debe recuperar es el del objeto o de uno de los elementos secundarios del objeto. Este parámetro puede ser CHILDID_SELF
(para obtener un tema de Ayuda para el objeto) o un Id. secundario (para obtener un tema de Ayuda para uno de los elementos secundarios del objeto).
pidTopic
Identifica el tema del archivo de Ayuda asociado al objeto especificado. Consulte pidTopic
en IAccessible::get_accHelpTopic
de Windows SDK.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accHelpTopic
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
para proporcionar información de ayuda sobre el objeto.
Para más información, consulte IAccessible::get_accHelpTopic
en Windows SDK.
CWnd::get_accKeyboardShortcut
El marco llama a este método para recuperar la tecla de método abreviado o la tecla de acceso del objeto especificado.
virtual HRESULT get_accKeyboardShortcut(
VARIANT varChild,
BSTR* pszKeyboardShortcut);
Parámetros
varChild
Especifica si el método abreviado de teclado que se debe recuperar es el del objeto o de uno de los elementos secundarios del objeto. Este parámetro puede ser CHILDID_SELF
(para obtener información sobre el objeto) o un Id. secundario (para obtener información sobre el elemento secundario del objeto).
pszKeyboardShortcut
Dirección de un BSTR
que recibe una cadena localizada que identifica el método abreviado de teclado, o NULL
si ningún método abreviado de teclado está asociado con el objeto especificado.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accKeyboardShortcut
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad de Active Accessibility
de MFC.
Invalide esta función en la clase derivada de CWnd
para identificar el método abreviado de teclado para el objeto.
Para más información, consulte IAccessible::get_accKeyboardShortcut
en Windows SDK.
CWnd::get_accName
El marco llama a este método para recuperar el nombre del objeto especificado.
virtual HRESULT get_accName(
VARIANT varChild,
BSTR* pszName);
Parámetros
varChild
Especifica si el nombre que se debe recuperar es el del objeto o de uno de los elementos secundarios del objeto. Este parámetro puede ser CHILDID_SELF
(para obtener información sobre el objeto) o un Id. secundario (para obtener información sobre el elemento secundario del objeto).
pszName
Dirección de un BSTR
que recibe una cadena que contiene el nombre del objeto especificado.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accName
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
para devolver el nombre del objeto.
Para más información, consulte IAccessible::get_accName
en Windows SDK.
CWnd::get_accParent
El marco llama a este método para recuperar la interfaz IDispatch
del elemento principal del objeto.
virtual HRESULT get_accParent(IDispatch** ppdispParent);
Parámetros
ppdispParent
Recibe la dirección de la interfaz IDispatch
del objeto primario. La variable se establece en NULL
si no existe ningún elemento primario o si el elemento secundario no puede tener acceso a su elemento primario.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM
en caso de error. Consulte Valores devueltos en IAccessible::get_accParent
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
En la mayoría de los casos no es necesario invalidar esta función.
Para más información, consulte IAccessible::get_accParent
en Windows SDK.
CWnd::get_accRole
El marco llama a este método para recuperar información que describe el rol del objeto especificado.
virtual HRESULT get_accRole(
VARIANT varChild,
VARIANT* pvarRole);
Parámetros
varChild
Especifica si la información de rol que se debe recuperar es la del objeto o de uno de los elementos secundarios del objeto. Este parámetro puede ser CHILDID_SELF
(para obtener información sobre el objeto) o un Id. secundario (para obtener información sobre el elemento secundario del objeto).
pvarRole
Recibe la información del rol. Consulte pvarRole
en IAccessible::get_accRole
de Windows SDK.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accRole
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
si tiene elementos de interfaz de usuario no en ventana (distintos de los controles ActiveX sin ventana, que controla MFC).
Para más información, consulte IAccessible::get_accRole
en Windows SDK.
CWnd::get_accSelection
El marco llama a este método para recuperar el elemento secundario seleccionado de este objeto.
virtual HRESULT get_accSelection(VARIANT* pvarChildren);
Parámetros
pvarChildren
Recibe información sobre qué elementos secundarios se han seleccionado. Consulte pvarChildren
en IAccessible::get_accSelection
de Windows SDK.
Valor devuelto
Devuelve S_OK si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accSelection
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
si tiene elementos de interfaz de usuario no en ventana (distintos de los controles ActiveX sin ventana, que controla MFC).
Para más información, consulte IAccessible::get_accSelection
en Windows SDK.
CWnd::get_accState
El marco llama a este método para recuperar el estado actual del objeto especificado.
virtual HRESULT get_accState(
VARIANT varChild,
VARIANT* pvarState);
Parámetros
varChild
Especifica si la información de estado que se debe recuperar es la del objeto o de uno de los elementos secundarios del objeto. Este parámetro puede ser CHILDID_SELF
(para obtener información sobre el objeto) o un Id. secundario (para obtener información sobre el elemento secundario del objeto).
pvarState
Recibe información sobre el estado del objeto. Consulte pvarState
en IAccessible::get_accState
de Windows SDK.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accState
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
si tiene elementos de interfaz de usuario no en ventana (distintos de los controles ActiveX sin ventana, que controla MFC).
Para más información, consulte IAccessible::get_accState
en Windows SDK.
CWnd::get_accValue
El marco llama a este método para recuperar el valor del objeto especificado.
virtual HRESULT get_accValue(
VARIANT varChild,
BSTR* pszValue);
Parámetros
varChild
Especifica si la información de valor que se debe recuperar es la del objeto o de uno de los elementos secundarios del objeto. Este parámetro puede ser CHILDID_SELF
(para obtener información sobre el objeto) o un Id. secundario (para obtener información sobre el elemento secundario del objeto).
pszValue
Dirección del BSTR
que recibe una cadena localizada que contiene el valor actual del objeto.
Valor devuelto
Devuelve S_OK
si se ejecuta correctamente, y un código de error COM en caso de error. Consulte Valores devueltos en IAccessible::get_accValue
de Windows SDK.
Comentarios
Esta función forma parte de la compatibilidad con Active Accessibility de MFC.
Invalide esta función en la clase derivada de CWnd
si tiene elementos de interfaz de usuario no en ventana (distintos de los controles ActiveX sin ventana, que controla MFC).
Para más información, consulte IAccessible::get_accValue
en Windows SDK.
CWnd::GetActiveWindow
Recupera un puntero a la ventana activa.
static CWnd* PASCAL GetActiveWindow();
Valor devuelto
La ventana activa o NULL
si ninguna ventana estaba activa en el momento de la llamada. El puntero puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
La ventana activa es la ventana que tiene el foco de entrada actual o la ventana que se ha activado explícitamente mediante la función miembro SetActiveWindow
.
CWnd::GetAncestor
Recupera el objeto de ventana antecesor de la ventana especificada.
CWnd* GetAncestor(UINT gaFlags) const;
Parámetros
gaFlags
Especifica el antecesor que se va a recuperar. Para obtener una lista completa de valores posibles, consulte GetAncestor
.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un puntero al objeto de ventana antecesor. Si la función produce un error, el valor devuelto es NULL
.
Comentarios
Esta función miembro emula la funcionalidad de la función GetAncestor
, tal y como se describe en Windows SDK.
CWnd::GetCapture
Recupera la ventana que tiene la captura del mouse.
static CWnd* PASCAL GetCapture();
Valor devuelto
Identifica la ventana que tiene la captura del mouse. Es NULL
si ninguna ventana tiene la captura del mouse.
El valor que se devuelve puede ser temporal y no debe almacenarse para su uso posterior.
Comentarios
Solo una ventana tiene la captura del mouse en un momento dado. Una ventana recibe la captura del mouse cuando se llama a la función miembro SetCapture
. Esta ventana recibe la entrada del mouse tanto si el cursor está dentro de sus bordes como si no.
CWnd::GetCaretPos
Recupera las coordenadas de cliente de la posición actual del cursor de inserción y las devuelve como un CPoint
.
static CPoint PASCAL GetCaretPos();
Valor devuelto
Objeto CPoint
que contiene las coordenadas de la posición del cursor de inserción.
Comentarios
La posición del cursor de inserción se asigna en las coordenadas de cliente de la ventana CWnd
.
CWnd::GetCheckedRadioButton
Recupera el Id. del botón de radio actualmente activado en el grupo especificado.
int GetCheckedRadioButton(
int nIDFirstButton,
int nIDLastButton);
Parámetros
nIDFirstButton
Especifica el identificador entero del primer botón de radio del grupo.
nIDLastButton
Especifica el identificador entero del último botón de radio del grupo.
Valor devuelto
Id. del botón de radio activado, o 0 si no se selecciona ninguno.
CWnd::GetClientRect
Copia las coordenadas de cliente del área cliente CWnd
en la estructura a la que apunta lpRect
.
void GetClientRect(LPRECT lpRect) const;
Parámetros
lpRect
Apunta a una estructura RECT
o un objeto CRect
para recibir las coordenadas del cliente. Los miembros left
y top
serán 0. Los miembros right
y bottom
contendrán el ancho y el alto de la ventana.
Comentarios
Las coordenadas de cliente especifican las esquinas superior izquierda e inferior derecha del área cliente. Dado que las coordenadas de cliente son relativas a las esquinas superiores izquierdas del área cliente CWnd
, las coordenadas de la esquina superior izquierda son (0,0).
Ejemplo
Vea el ejemplo de CWnd::IsIconic
.
CWnd::GetClipboardOwner
Recupera el propietario actual del Portapapeles.
static CWnd* PASCAL GetClipboardOwner();
Valor devuelto
Identifica la ventana de propietario del Portapapeles si la función se ejecuta correctamente. De lo contrario, es NULL
.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
El Portapapeles todavía puede contener datos aunque no tenga un propietario.
CWnd::GetClipboardViewer
Recupera la primera ventana de la cadena de visor del Portapapeles.
static CWnd* PASCAL GetClipboardViewer();
Valor devuelto
Identifica la ventana actualmente responsable de mostrar el Portapapeles si se ejecuta correctamente; de lo contrario, NULL
(por ejemplo, si no hay ningún visor).
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
CWnd::GetControlUnknown
Llame a esta función miembro para recuperar un puntero a un control OLE desconocido.
LPUNKNOWN GetControlUnknown();
Valor devuelto
Un puntero a la interfaz IUnknown
del control OLE representado por este objeto CWnd
. Si este objeto no representa un control OLE, el valor devuelto es NULL
.
Comentarios
No debe liberar este puntero IUnknown
. Normalmente, se usaría para obtener una interfaz específica del control.
El puntero de interfaz devuelto por GetControlUnknown
no se cuenta por referencia. No llame a IUnknown::Release
en el puntero a menos que haya llamado previamente a IUnknown::AddRef
en él.
Ejemplo
// The following code fragment is taken from CMyDlg::OnInitDialog
// CMyDlg is a CDialog-derived class.
// IDC_MSACALCTRL1 is the ID of the Calendar control OCX embedded
// on this dialog
CWnd *pWndCal = GetDlgItem(IDC_MSACALCTRL1);
// Use the IUnknown of the control
LPUNKNOWN pUnk = pWndCal->GetControlUnknown();
// From there get the IDispatch interface of control
LPDISPATCH pDisp = NULL;
pUnk->QueryInterface(IID_IDispatch, (LPVOID*)&pDisp);
// use IDispatch method to invoke the control's functionality
CWnd::GetCurrentMessage
Devuelve un puntero al mensaje que esta ventana está procesando actualmente. Solo es necesario llamarlo cuando se encuentra en una función miembro de controlador de mensajes Mensajesactivados.
static const MSG* PASCAL GetCurrentMessage();
Valor devuelto
Devuelve un puntero a la estructura MSG
que contiene el mensaje que la ventana está procesando actualmente. Solo se debe llamar cuando se encuentra en un controlador de Mensajesactivados.
Ejemplo
Vea el ejemplo de CMDIFrameWnd::MDICascade
.
CWnd::GetDC
Recupera un puntero a un contexto de dispositivo común, de clase o privado para el área cliente según el estilo de clase especificado por el CWnd
.
CDC* GetDC();
Valor devuelto
Identifica el contexto del dispositivo para el área cliente CWnd
si se ejecuta correctamente; de lo contrario, el valor devuelto es NULL
. El puntero puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Para los contextos de dispositivo comunes, GetDC
asigna atributos predeterminados al contexto cada vez que se recupera. En el caso de los contextos privados y de clase, GetDC
deja los atributos asignados previamente sin cambios. El contexto del dispositivo se puede usar en las funciones de interfaz de dispositivo gráfico (GDI) subsiguientes para dibujar en el área cliente.
A menos que el contexto del dispositivo pertenezca a una clase de ventana, se debe llamar a la función miembro ReleaseDC
para liberar el contexto después de pintar.
La función miembro GetDC
devuelve un contexto de dispositivo que pertenece a la clase CWnd
si CS_CLASSDC
, CS_OWNDC
o CS_PARENTDC
se ha especificado como un estilo en la estructura WNDCLASS
al registrar la clase.
CWnd::GetDCEx
Recupera el identificador de un contexto de dispositivo para la ventana CWnd
.
CDC* GetDCEx(
CRgn* prgnClip,
DWORD flags);
Parámetros
prgnClip
Identifica una región de recorte que se puede combinar con la región visible de la ventana de cliente.
flags
Puede tener uno de los siguientes valores preestablecidos:
DCX_CACHE
Devuelve un contexto de dispositivo de la memoria caché en lugar de la ventanaOWNDC
oCLASSDC
. InvalidaCS_OWNDC
yCS_CLASSDC
.DCX_CLIPCHILDREN
Excluye las regiones visibles de todas las ventanas secundarias debajo de la ventanaCWnd
.DCX_CLIPSIBLINGS
Excluye las regiones visibles de todas las ventanas del mismo nivel encima de la ventanaCWnd
.DCX_EXCLUDERGN
Excluye la región de recorte identificada porprgnClip
de la región visible del contexto de dispositivo devuelto.DCX_INTERSECTRGN
Se interseca con la región de recorte identificada porprgnClip
dentro de la región visible del contexto de dispositivo devuelto.DCX_LOCKWINDOWUPDATE
Permite dibujar incluso si hay una llamada deLockWindowUpdate
en vigor que, de lo contrario, excluiría esta ventana. Este valor se usa para dibujar durante el seguimiento.DCX_PARENTCLIP
Usa la región visible de la ventana primaria e ignora los bits de estiloWS_CLIPCHILDREN
yWS_PARENTDC
de la ventana primaria. Este valor establece el origen del contexto del dispositivo en la esquina superior izquierda de la ventanaCWnd
.DCX_WINDOW
Devuelve un contexto de dispositivo que corresponde al rectángulo de ventana en lugar de al rectángulo de cliente.
Valor devuelto
El contexto de dispositivo de la ventana especificada si la función se ejecuta correctamente; en caso contrario, NULL
.
Comentarios
El contexto del dispositivo se puede usar en las funciones GDI subsiguientes para dibujar en el área cliente.
Esta función, que es una extensión de la función GetDC
, proporciona a una aplicación más control sobre cómo se recorta, y si se recorta, un contexto de dispositivo para una ventana.
A menos que el contexto del dispositivo pertenezca a una clase de ventana, se debe llamar a la función ReleaseDC
para liberar el contexto después de pintar. Dado que solo hay cinco contextos de dispositivo comunes disponibles en un momento dado, el error al liberar un contexto de dispositivo puede impedir que otras aplicaciones obtengan acceso a un contexto de dispositivo.
Para obtener un contexto de dispositivo almacenado en caché, una aplicación debe especificar DCX_CACHE
. Si no se especifica DCX_CACHE y la ventana no es ni CS_OWNDC
ni CS_CLASSDC
, esta función devuelve NULL
.
La función GetDCEx
devuelve un contexto de dispositivo con características especiales si el estilo CS_CLASSDC
, CS_OWNDC
o CS_PARENTDC
se ha especificado en la estructura WNDCLASS
al registrar la clase.
Para obtener más información sobre estas características, consulte la descripción de la estructura WNDCLASS
de Windows SDK.
CWnd::GetDCRenderTarget
Recupera el destino de representación (DC) del contexto de dispositivo de la ventana CWnd
.
CDCRenderTarget* GetDCRenderTarget();
Valor devuelto
El destino de representación del contexto de dispositivo de la ventana especificada si la función se ejecuta correctamente; en caso contrario, NULL
.
Comentarios
CWnd::GetDescendantWindow
Llame a esta función miembro para buscar la ventana descendiente especificada por el Id. dado.
CWnd* GetDescendantWindow(
int nID,
BOOL bOnlyPerm = FALSE) const;
Parámetros
nID
Especifica el identificador del control o la ventana secundaria que se va a recuperar.
bOnlyPerm
Especifica si la ventana que se va a devolver puede ser temporal. Si es TRUE
, solo se puede devolver una ventana permanente; si es FALSE
, la función puede devolver una ventana temporal. Para obtener más información sobre las ventanas temporales, consulte Nota técnica 3.
Valor devuelto
Un puntero a un objeto CWnd
, o NULL
si no se encuentra ninguna ventana secundaria.
Comentarios
Esta función miembro busca en todo el árbol de ventanas secundarias, no solo las ventanas que son elementos secundarios inmediatos.
CWnd::GetDesktopWindow
Devuelve la ventana de escritorio de Windows.
static CWnd* PASCAL GetDesktopWindow();
Valor devuelto
Identifica la ventana de escritorio de Windows. Este puntero puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
La ventana de escritorio cubre toda la pantalla y es el área sobre la que se pintan todos los iconos y otras ventanas.
CWnd::GetDlgCtrlID
Devuelve el valor de Id. de ventana o de control de cualquier ventana secundaria, no solo de un control en un cuadro de diálogo.
int GetDlgCtrlID() const;
Valor devuelto
El identificador numérico de la ventana secundaria CWnd
si la función se ejecuta correctamente; en caso contrario, 0.
Comentarios
Puesto que las ventanas de nivel superior no tienen un valor de Id., el valor devuelto de esta función no es válido si CWnd
es una ventana de nivel superior.
Ejemplo
Vea el ejemplo de CWnd::OnCtlColor
.
CWnd::GetDlgItem
Recupera un puntero al control o a la ventana secundaria especificados en un cuadro de diálogo u otra ventana.
CWnd* GetDlgItem(int nID) const;
void GetDlgItem(
int nID,
HWND* phWnd) const;
Parámetros
nID
Especifica el identificador del control o la ventana secundaria que se va a recuperar.
phWnd
Un puntero a una ventana secundaria.
Valor devuelto
Un puntero al control especificado o a la ventana secundaria. Si no existe ningún control con el Id. entero proporcionado por el parámetro nID
, el valor es NULL
.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
El puntero devuelto normalmente se convierte en el tipo de control identificado por nID
.
Ejemplo
// uses GetDlgItem to return a pointer to a user interface control
CEdit *pBoxOne;
pBoxOne = (CEdit*)GetDlgItem(IDC_MYEDIT);
GotoDlgCtrl(pBoxOne);
CWnd::GetDlgItemInt
Recupera el texto del control identificado por nID
.
UINT GetDlgItemInt(
int nID,
BOOL* lpTrans = NULL,
BOOL bSigned = TRUE) const;
Parámetros
nID
Especifica el identificador entero del control de cuadro de diálogo que se va a traducir.
lpTrans
Apunta a la variable booleana que va a recibir la marca traducida.
bSigned
Especifica si el valor que se va a recuperar tiene signo.
Valor devuelto
Especifica el valor traducido del texto del elemento del cuadro de diálogo. Dado que 0 es un valor devuelto válido, lpTrans
se debe usar para detectar errores. Si se desea que un valor devuelto tenga signo, conviértalo a un tipo int
.
La función devuelve 0 si el número traducido es mayor que INT_MAX
(para números con signo) o UINT_MAX
(para sin signo).
Cuando se producen errores, como encontrar caracteres no numéricos y superar el máximo anterior, GetDlgItemInt
copia 0 en la ubicación a la que apunta lpTrans
. Si no hay ningún error, lpTrans
recibe un valor distinto de cero. Si lpTrans
es NULL
, GetDlgItemInt
no muestra advertencias sobre los errores.
Comentarios
Convierte el texto del control especificado en el cuadro de diálogo especificado en un valor entero al quitar los espacios adicionales al principio del texto y convertir los dígitos decimales. Detiene la traducción cuando llega al final del texto o cuando encuentra cualquier carácter no numérico.
Si bSigned
es TRUE
, GetDlgItemInt
comprueba si hay un signo menos (-) al principio del texto y convierte el texto en un número con signo. De lo contrario, crea un valor sin signo.
Envía un mensaje WM_GETTEXT
al control.
CWnd::GetDlgItemText
Llame a esta función miembro para recuperar el título o el texto asociado a un control de un cuadro de diálogo.
int GetDlgItemText(
int nID,
LPTSTR lpStr,
int nMaxCount) const;
int GetDlgItemText(
int nID,
CString& rString) const;
Parámetros
nID
Especifica el identificador entero del control cuyo título se va a recuperar.
lpStr
Apunta al búfer para recibir el título o el texto del control.
nMaxCount
Especifica la longitud máxima (en caracteres) de la cadena que se va a copiar en lpStr
. Si la cadena es mayor que nMaxCount
, se trunca.
rString
Referencia a .CString
Valor devuelto
Especifica el número de caracteres copiados en el búfer, sin incluir el carácter nulo de terminación. El valor es 0 si no se copia texto.
Comentarios
La función miembro GetDlgItemText
copia el texto en la ubicación a la que apunta lpStr
y devuelve un recuento del número de bytes que copia.
CWnd::GetDSCCursor
Llame a esta función miembro para recuperar un puntero al cursor subyacente definido por las propiedades SQL DataSource
, UserName
y Password
del control de origen de datos.
IUnknown* GetDSCCursor();
Valor devuelto
Un puntero a un cursor definido por un control de origen de datos. MFC se encarga de llamar a AddRef
para el puntero.
Comentarios
Use el puntero devuelto para establecer la propiedad ICursor
de un control complejo enlazado a datos, como el control de cuadrícula enlazado a datos. Un control de origen de datos no se activará hasta que el primer control enlazado solicite su cursor. Esto puede ocurrir explícitamente mediante una llamada a GetDSCCursor
o implícitamente mediante el administrador de enlaces de MFC. En cualquier caso, puede forzar que un control de origen de datos se active llamando a GetDSCCursor
y, a continuación, llamando a Release
en el puntero devuelto a IUnknown
. La activación hará que el control de origen de datos intente conectarse al origen de datos subyacente. El puntero devuelto podría usarse en el contexto siguiente:
Ejemplo
BOOL CMyDlg::OnInitDialog()
{
// Find the child controls on the dialog
HRESULT hr = E_FAIL;
CWnd *pDSC = GetDlgItem(IDC_DATASOURCE);
CWnd *pListWnd = GetDlgItem(IDC_DBLIST1);
IUnknown *punkList = pListWnd->GetControlUnknown();
IDBList *pList = NULL;
if (NULL != punkList)
{
hr = punkList->QueryInterface(__uuidof(IDBList), (void **)&pList);
}
if (SUCCEEDED(hr))
{
// Tell the MFC binding manager that we are
// binding DISPID 3 to the data-source control.
pListWnd->BindProperty(0x3, pDSC);
// Tell the listbox which field to expose as its bound column
pList->put_BoundColumn(_T("ContactFirstName"));
// Tell the listbox which cursor and column to populate its list from
pList->put_ListField(_T("ContactFirstName"));
IUnknown *punkCursor = pDSC->GetDSCCursor();
if (NULL != punkCursor)
{
punkCursor->Release();
}
pList->Release();
return TRUE;
}
CWnd::GetDynamicLayout
Recupera un puntero al objeto del administrador de diseño dinámico.
CMFCDynamicLayout* GetDynamicLayout();
Valor devuelto
Un puntero al objeto del administrador de diseño dinámico, o NULL
si el diseño dinámico no está habilitado.
Comentarios
El objeto de ventana posee y administra la duración del puntero devuelto, por lo que solo es aconsejable usarlo para tener acceso al objeto. No elimine el puntero ni lo almacene de manera permanente.
CWnd::GetExStyle
Devuelve el estilo extendido de ventana.
DWORD GetExStyle() const;
Valor devuelto
El estilo extendido de ventana. Para obtener más información sobre los estilos de ventana extendidos usados en MFC, consulte Estilos de ventana extendidos.
CWnd::GetFocus
Recupera el objeto CWnd
que tiene el foco de entrada actualmente.
static CWnd* PASCAL GetFocus();
Valor devuelto
Un puntero a la ventana que tiene el foco actual o NULL
si no hay ninguna ventana con foco.
El puntero puede ser temporal y no se debe almacenar para su uso posterior.
CWnd::GetFont
Envía el mensaje WM_GETFONT
a la ventana para recuperar la fuente actual.
CFont* GetFont() const;
Valor devuelto
Un puntero a un objeto CFont
que está asociado a la fuente actual de la ventana.
Comentarios
Este método no tiene ningún efecto a menos que la ventana procese el mensaje WM_GETFONT
. Muchas clases de MFC que derivan de CWnd
procesan este mensaje porque están asociadas a una clase de ventana predefinida que incluye un controlador de mensajes para el mensaje WM_GETFONT
. Para usar este método, las clases derivadas de CWnd
deben definir un controlador de método para el mensaje WM_GETFONT
.
CWnd::GetForegroundWindow
Devuelve un puntero a la ventana en primer plano (la ventana de nivel superior con la que el usuario está trabajando actualmente).
static CWnd* PASCAL GetForegroundWindow();
Valor devuelto
Un puntero a la ventana en primer plano. Puede tratarse de un objeto CWnd
temporal.
Comentarios
La ventana en primer plano solo se aplica a las ventanas de nivel superior (ventanas de marco o cuadros de diálogo).
CWnd::GetIcon
Llame a esta función miembro para obtener el identificador de un icono grande (32x32) o el identificador de un icono pequeño (16x16), como se indica en bBigIcon
.
HICON GetIcon(BOOL bBigIcon) const;
Parámetros
bBigIcon
Especifica un icono de 32 píxeles por 32 píxeles si es TRUE
; especifica un icono de 16 píxeles por 16 píxeles si es FALSE
.
Valor devuelto
Identificador de un icono. Si no se realiza correctamente, devuelve NULL
.
CWnd::GetLastActivePopup
Determina cuál fue la ventana emergente propiedad de CWnd
activa más recientemente.
CWnd* GetLastActivePopup() const;
Valor devuelto
Identifica la ventana emergente que ha estado activa más recientemente. El valor devuelto será la misma ventana si se cumple alguna de las condiciones siguientes:
La ventana misma ha estado activa más recientemente.
La ventana no es propietaria de ventanas emergentes.
La ventana no es una ventana de nivel superior ni es propiedad de otra ventana.
El puntero puede ser temporal y no se debe almacenar para su uso posterior.
Ejemplo
Vea el ejemplo de CWnd::FindWindow
.
CWnd::GetLayeredWindowAttributes
Recupera la clave de color de transparencia y opacidad de una ventana superpuesta.
BOOL GetLayeredWindowAttributes(
COLORREF* pcrKey,
BYTE* pbAlpha,
DWORD* pdwFlags) const;
Parámetros
pcrKey
Un puntero a un valor COLORREF
que recibe la clave de color de transparencia que se usará al componer la ventana superpuesta. Todos los píxeles pintados por la ventana de este color serán transparentes. Puede ser NULL
si el argumento no es necesario.
pbAlpha
Un puntero a un objeto BYTE
que recibe el valor Alfa utilizado para describir la opacidad de la ventana superpuesta. Cuando la variable a la que hace referencia pbAlpha
es 0, la ventana es completamente transparente. Cuando la variable a la que hace referencia pbAlpha
es 255, la ventana es opaca. Puede ser NULL
si el argumento no es necesario.
pdwFlags
Un puntero a un objeto DWORD
que recibe una marca de capas. Puede ser NULL
si el argumento no es necesario. Para una lista completa de posibles valores, consulte `GetLayeredWindowAttributes.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, 0.
Comentarios
Esta función miembro emula la funcionalidad de la función GetLayeredWindowAttributes
, tal y como se describe en Windows SDK.
CWnd::GetMenu
Recupera un puntero al menú de esta ventana.
CMenu* GetMenu() const;
Valor devuelto
Identifica el menú. El valor es NULL
si CWnd
no tiene menú. El valor devuelto no está definido si CWnd
es una ventana secundaria.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Esta función no se debe usar para ventanas secundarias, porque no tienen un menú.
Ejemplo
void CMainFrame::OnCwndDeletefilemenu()
{
// This example deletes the leftmost popup menu or leftmost
// popup menu item from the application's main window.
CWnd *pMain = AfxGetMainWnd();
// The main window _can_ be NULL, so this code
// doesn't ASSERT and actually tests.
if (pMain != NULL)
{
// Get the main window's menu
CMenu *pMenu = pMain->GetMenu();
// If there is a menu and it has items, we'll
// delete the first one.
if (pMenu != NULL && pMenu->GetMenuItemCount() > 0)
{
pMenu->DeleteMenu(0, MF_BYPOSITION);
// force a redraw of the menu bar
pMain->DrawMenuBar();
}
// No need to delete pMenu because it is an MFC
// temporary object.
}
}
CWnd::GetMenuBarInfo
Recupera información sobre la barra de menú especificada.
BOOL GetMenuBarInfo(
LONG idObject,
LONG idItem,
PMENUBARINFO pmbi) const;
Parámetros
idObject
Especifica el objeto de menú. Para obtener una lista de los valores posibles, vea GetMenuBarInfo
.
idItem
Especifica el elemento para el que se va a recuperar información. Si este parámetro es cero, la función recupera información sobre el propio menú. Si este parámetro es 1, la función recupera información sobre el primer elemento del menú, y así sucesivamente.
pmbi
Puntero a una estructura MENUBARINFO
que recibe la información.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, 0.
Comentarios
Esta función miembro emula la funcionalidad de la función GetMenuBarInfo
, tal y como se describe en Windows SDK.
CWnd::GetNextDlgGroupItem
Busca el control anterior o siguiente dentro de un grupo de controles en un cuadro de diálogo.
CWnd* GetNextDlgGroupItem(
CWnd* pWndCtl,
BOOL bPrevious = FALSE) const;
COleControlSiteOrWnd* GetNextDlgGroupItem(
COleControlSiteOrWnd* pCurSiteOrWnd = NULL) const;
Parámetros
pWndCtl
Identifica el control que se va a usar como punto de partida para la búsqueda.
bPrevious
Especifica cómo busca la función en el grupo de controles en el cuadro de diálogo. Si es TRUE
, la función busca el control anterior en el grupo; si es FALSE
, busca el control siguiente del grupo.
pCurSiteOrWnd
Identifica el control COleControlSiteOrWnd
. Para obtener más información acerca de COleControlSiteOrWnd
, consulte Comentarios.
Valor devuelto
Un puntero al control anterior o siguiente del grupo si la función miembro se ejecuta correctamente.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Un grupo de controles comienza con un control creado con el estilo WS_GROUP
y termina con el último control que no se ha creado con el estilo WS_GROUP
.
De forma predeterminada, la función miembro GetNextDlgGroupItem
devuelve un puntero al siguiente control del grupo. Si pWndCtl
identifica el primer control del grupo y bPrevious
es TRUE
, GetNextDlgGroupItem
devuelve un puntero al último control del grupo.
Nota:
Dado que MFC admite controles ActiveX sin ventanas, controles ActiveX estándar y ventanas, hacer referencia a un control sólo mediante HWND
ya no es suficiente. El objeto COleControlSiteOrWnd
incluye información que identifica el objeto como un control ActiveX con ventana, un control ActiveX sin ventana o una ventana, como se indica a continuación:
Tipo de control o ventana | Información de identificación |
---|---|
Control ActiveX con ventana | Contiene un HWND y asocia un objeto COleControlSite con él. El miembro m_hWnd de COleControlSiteOrWnd se establece en el HWND control y el miembro m_pSite apunta al COleControlSite del control. |
Control ActiveX sin ventana | No contiene HWND . El miembro m_pSite de COleControlSiteOrWnd apunta al control COleControlSite , y el miembro m_hWnd es NULL . |
Ventana estándar | Contiene solo un HWND . El miembro m_hWnd de COleControlSiteOrWnd se establece en el HWND de la ventana y el miembro m_pSite es NULL . |
CWnd::GetNextDlgTabItem
Recupera un puntero al primer control creado con el estilo WS_TABSTOP
y que precede o sigue al control especificado.
CWnd* GetNextDlgTabItem(
CWnd* pWndCtl,
BOOL bPrevious = FALSE) const;
COleControlSiteOrWnd* GetNextDlgTabItem(
COleControlSiteOrWnd* pCurSiteOrWnd,
BOOL bPrevious) const;
Parámetros
pWndCtl
Identifica el control que se va a usar como punto de partida para la búsqueda.
pCurSiteOrWnd
Identifica el control COleControlSiteOrWnd
. Para obtener más información sobre COleControlSiteOrWnd
, vea CWnd::GetNextDlgGroupItem
.
bPrevious
Especifica cómo busca la función en el cuadro de diálogo. Si es TRUE
, la función busca el control anterior en el cuadro de diálogo; si es FALSE
, busca el control siguiente.
Valor devuelto
Un puntero al control anterior o siguiente que tiene el estilo WS_TABSTOP
si la función miembro se ejecuta correctamente.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Para obtener más información sobre COleControlSiteOrWnd
, vea CWnd::GetNextDlgGroupItem
.
CWnd::GetNextWindow
Devuelve la ventana siguiente (o anterior) en la lista del administrador de ventanas.
CWnd* GetNextWindow(UINT nFlag = GW_HWNDNEXT) const;
Parámetros
nFlag
Especifica si la función devuelve un puntero a la ventana siguiente o a la ventana anterior. Puede ser GW_HWNDNEXT
, que devuelve la ventana que sigue al objeto CWnd
de la lista del administrador de ventanas, o GW_HWNDPREV
, que devuelve la ventana anterior en la lista del administrador de ventanas.
Valor devuelto
Identifica la siguiente ventana (o anterior) en la lista del administrador de ventanas si la función miembro se ejecuta correctamente.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
La lista del administrador de ventanas contiene entradas para todas las ventanas de nivel superior, sus ventanas secundarias asociadas y las ventanas secundarias de cualquier ventana secundaria.
Si CWnd
es una ventana de nivel superior, la función busca la ventana de nivel superior siguiente (o anterior); si CWnd
es una ventana secundaria, la función busca la siguiente (o anterior) ventana secundaria.
CWnd::GetOleControlSite
Recupera el sitio personalizado del control ActiveX especificado.
COleControlSite* GetOleControlSite(UINT idControl) const;
Parámetros
idControl
El Id. para el control ActiveX.
CWnd::GetOpenClipboardWindow
Recupera un identificador a la ventana que actualmente tiene el Portapapeles abierto.
static CWnd* PASCAL GetOpenClipboardWindow();
Valor devuelto
El identificador de la ventana que actualmente tiene abierto el Portapapeles si la función se ejecuta correctamente; de lo contrario, NULL
.
CWnd::GetOwner
Recupera un puntero al propietario de la ventana.
CWnd* GetOwner() const;
Valor devuelto
Puntero a un objeto CWnd
.
Comentarios
Si la ventana no tiene propietario, de forma predeterminada se devuelve un puntero al objeto de ventana primaria. Tenga en cuenta que la relación entre el propietario y la propiedad difiere del aspecto primario-secundario en varios aspectos importantes. Por ejemplo, una ventana con un elemento primario se limita al área cliente de la ventana primaria. Las ventanas propiedad se pueden dibujar en cualquier ubicación del escritorio.
El concepto de propiedad de esta función es diferente del concepto de propiedad de GetWindow
.
CWnd::GetParent
Llame a esta función para obtener un puntero a la ventana primaria de una ventana secundaria (si existiera).
CWnd* GetParent() const;
Valor devuelto
Consulte la sección Valores devueltos en GetParent
de Windows SDK.
Comentarios
La función GetParent
devuelve un puntero al elemento primario inmediato (si existe). Por el contrario, la función GetParentOwner
devuelve un puntero a la ventana principal o propietaria más inmediata y que no sea una ventana secundaria (no tiene el estilo WS_CHILD
). Si tiene una ventana secundaria dentro de una ventana secundaria, GetParent
y GetParentOwner
devuelven resultados diferentes.
CWnd::GetParentFrame
Llame a esta función miembro para recuperar la ventana de marco primaria.
CFrameWnd* GetParentFrame() const;
Valor devuelto
Puntero a una ventana de marco si se ejecuta correctamente; de lo contrario, NULL
.
Comentarios
La función miembro busca en la cadena primaria hasta que se encuentra un objeto CFrameWnd
(o una clase derivada).
CWnd::GetParentOwner
Llame a esta función miembro para obtener un puntero a la ventana primaria o a la ventana de propietario de una ventana secundaria.
CWnd* GetParentOwner() const;
Valor devuelto
Puntero a un objeto CWnd
. Si un objeto CWnd
no está asociado al identificador, se creará y asociará un objeto CWnd
temporal. El puntero puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
GetParentOwner
devuelve un puntero a la ventana primaria o propietaria más inmediata y que no sea una ventana secundaria (no tiene el estilo WS_CHILD
). La ventana del propietario actual se puede establecer con SetOwner
. De forma predeterminada, el elemento primario de una ventana es su propietario.
Por el contrario, la función GetParent
devuelve un puntero al elemento primario inmediato, tanto si es una ventana secundaria como si no. Si tiene una ventana secundaria dentro de una ventana secundaria, GetParent
y GetParentOwner
devuelven resultados diferentes.
CWnd::GetProperty
Llame a esta función miembro para obtener la propiedad de control ActiveX especificada por dwDispID
.
void GetProperty(
DISPID dwDispID,
VARTYPE vtProp,
void* pvProp)const;
Parámetros
dwDispID
Identifica la propiedad que se va a recuperar.
vtProp
Especifica el tipo de la propiedad que se va a recuperar. Para los valores posibles, consulte la sección Comentarios para COleDispatchDriver::InvokeHelper
.
pvProp
Dirección de la variable que recibirá el valor de la propiedad. Debe coincidir con el tipo especificado por vtProp
.
Comentarios
GetProperty
devuelve el valor a través de pvProp
.
Nota:
Solo se debe llamar a esta función en un objeto CWnd
que represente un control ActiveX.
Para obtener más información sobre el uso de esta función miembro con contenedores de controles ActiveX, consulte el artículo Contenedores de controles ActiveX: Programación de controles ActiveX en un contenedor de controles ActiveX.
CWnd::GetRenderTarget
Obtiene un destino de presentación asociado a esta ventana.
CHwndRenderTarget* GetRenderTarget();
Valor devuelto
Un puntero al destino de representación o NULL
.
CWnd::GetSafeHwnd
Devuelve m_hWnd
, o bien NULL
si el puntero this
es NULL
.
HWND GetSafeHwnd() const;
Valor devuelto
Devuelve el identificador de ventana de una ventana. Devuelve NULL
si CWnd
no está asociado a una ventana o si se usa con un NULL
CWnd
puntero.
Ejemplo
Vea el ejemplo de CWnd::SubclassWindow
.
CWnd::GetSafeOwner
Llame a esta función miembro para recuperar la ventana de propietario que se debe usar para cuadros de diálogo u otras ventanas modales.
static CWnd* GetSafeOwner(
CWnd* pParent = NULL,
HWND* pWndTop = NULL);
Parámetros
pParent
Un puntero a una ventana primaria CWnd
. Puede ser NULL
.
pWndTop
Un puntero a la ventana que está encima actualmente. Puede ser NULL
.
Valor devuelto
Un puntero al propietario seguro de la ventana especificada.
Comentarios
El propietario seguro es la primera ventana primaria que no es secundaria de pParent
. Si pParent
es NULL
, la ventana principal del subproceso (recuperada a través de AfxGetMainWnd
) se usa para buscar un propietario.
Nota:
El propio marco usa esta función para determinar la ventana de propietario correcta para los cuadros de diálogo y las hojas de propiedades donde no se especifica el propietario.
CWnd::GetScrollBarCtrl
Llame a esta función miembro para obtener un puntero a la barra de desplazamiento de mismo nivel especificada o a la ventana divisora.
virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
Parámetros
nBar
Especifica el tipo de barra de desplazamiento. El parámetro puede establecerse en uno de los valores siguientes:
SB_HORZ
Recupera la posición de la barra de desplazamiento horizontal.SB_VERT
Recupera la posición de la barra de desplazamiento vertical.
Valor devuelto
Un control de barra de desplazamiento del mismo nivel, o NULL
si no hay ninguna.
Comentarios
Esta función miembro no funciona en barras de desplazamiento creadas cuando los bits WS_HSCROLL
o WS_VSCROLL
se establecen durante la creación de una ventana. La implementación CWnd
de esta función simplemente devuelve NULL
. Las clases derivadas, como CView
, implementan la funcionalidad descrita.
CWnd::GetScrollBarInfo
Recupera información sobre la barra de desplazamiento especificada.
BOOL GetScrollBarInfo(
LONG idObject,
PSCROLLBARINFO psbi) const;
Parámetros
idObject
Especifica el objeto de menú. Para obtener una lista de los valores posibles, vea GetScrollBarInfo
.
psbi
Puntero a una estructura SCROLLBARINFO
que recibe la información.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, 0.
Comentarios
Esta función miembro emula la funcionalidad de la función GetScrollBarInfo
, tal y como se describe en Windows SDK.
CWnd::GetScrollInfo
Llame a esta función miembro para recuperar la información que mantiene la estructura SCROLLINFO
sobre una barra de desplazamiento.
BOOL GetScrollInfo(
int nBar,
LPSCROLLINFO lpScrollInfo,
UINT nMask = SIF_ALL);
Parámetros
nBar
Especifica si la barra de desplazamiento es un control o parte del área no cliente de una ventana. Si forma parte del área no cliente, nBar
también indica si la barra de desplazamiento está colocada horizontalmente, verticalmente o ambas. Debe ser uno de los siguientes:
SB_CTL
recupera los parámetros de un control de la barra de desplazamiento. El miembro de datosm_hWnd
debe ser el identificador del control de la barra de desplazamiento.SB_HORZ
recupera los parámetros de la barra de desplazamiento horizontal estándar de la ventana.SB_VERT
recupera los parámetros de la barra de desplazamiento vertical estándar de la ventana.
lpScrollInfo
Un puntero a una estructura SCROLLINFO
. Consulte Windows SDK para obtener más información sobre esta estructura.
nMask
Especifica los parámetros de la barra de desplazamiento que se van a recuperar. El valor predeterminado especifica una combinación de SIF_PAGE
, SIF_POS
, SIF_TRACKPOS
y SIF_RANGE
. Consulte SCROLLINFO
para obtener más información sobre los valores nMask
.
Valor devuelto
Si el mensaje recupera valores, el valor devuelto es TRUE
. De lo contrario, es FALSE
.
Comentarios
GetScrollInfo
permite a las aplicaciones usar posiciones de desplazamiento de 32 bits.
La estructura SCROLLINFO
contiene información sobre una barra de desplazamiento, incluidas las posiciones de desplazamiento mínima y máxima, el tamaño de página y la posición del cuadro de desplazamiento (el control). Consulte el tema de estructura SCROLLINFO
de Windows SDK para más información sobre cómo cambiar los valores predeterminados de la estructura.
Los controladores de mensajes de Windows de MFC que indican la posición de la barra de desplazamiento, CWnd::OnHScroll y CWnd::OnVScroll, proporcionan solo 16 bits de datos de posición. GetScrollInfo
y SetScrollInfo
proporcionan 32 bits de datos de posición de barra de desplazamiento. Por lo tanto, una aplicación puede llamar a GetScrollInfo
al procesar CWnd::OnHScroll
o CWnd::OnVScroll
para obtener datos de posición de barra de desplazamiento de 32 bits.
CWnd::GetScrollLimit
Llame a esta función miembro para recuperar la posición máxima de desplazamiento de la barra de desplazamiento.
int GetScrollLimit(int nBar);
Parámetros
nBar
Especifica el tipo de barra de desplazamiento. El parámetro puede establecerse en uno de los valores siguientes:
SB_HORZ
recupera el límite de desplazamiento de la barra de desplazamiento horizontal.SB_VERT
recupera el límite de desplazamiento de la barra de desplazamiento vertical.
Valor devuelto
Especifica la posición máxima de una barra de desplazamiento si se ejecuta correctamente; de lo contrario, 0.
CWnd::GetScrollPos
Recupera la posición actual del cuadro de desplazamiento de una barra de desplazamiento.
int GetScrollPos(int nBar) const;
Parámetros
nBar
Especifica la barra de desplazamiento que se va a examinar. El parámetro puede establecerse en uno de los valores siguientes:
SB_HORZ
Recupera la posición de la barra de desplazamiento horizontal.SB_VERT
Recupera la posición de la barra de desplazamiento vertical.
Valor devuelto
Especifica la posición actual del cuadro de desplazamiento en la barra de desplazamiento si se ejecuta correctamente; de lo contrario, 0.
Comentarios
La posición actual es un valor relativo que depende del intervalo de desplazamiento actual. Por ejemplo, si el intervalo de desplazamiento es de 50 a 100 y el cuadro de desplazamiento está en medio de la barra, la posición actual es 75.
CWnd::GetScrollRange
Copia las posiciones mínima y máxima actuales de la barra de desplazamiento especificada a las ubicaciones especificadas por lpMinPos
y lpMaxPos
.
void GetScrollRange(
int nBar,
LPINT lpMinPos,
LPINT lpMaxPos) const;
Parámetros
nBar
Especifica la barra de desplazamiento que se va a examinar. El parámetro puede establecerse en uno de los valores siguientes:
SB_HORZ
Recupera la posición de la barra de desplazamiento horizontal.SB_VERT
Recupera la posición de la barra de desplazamiento vertical.
lpMinPos
Apunta a la variable de entero que va a recibir la posición mínima.
lpMaxPos
Apunta a la variable de entero que va a recibir la posición máxima.
Comentarios
Si CWnd
no tiene una barra de desplazamiento, la función miembro GetScrollRange
copia 0 en lpMinPos
y lpMaxPos
.
El intervalo predeterminado de una barra de desplazamiento estándar es de 0 a 100. El intervalo predeterminado de un control de barra de desplazamiento está vacío (ambos valores son 0).
CWnd::GetStyle
Devuelve el estilo de ventana actual.
DWORD GetStyle() const;
Valor devuelto
El estilo de la ventana. Para obtener más información sobre los estilos de ventana usados en MFC, vea Estilos de ventana.
CWnd::GetSystemMenu
Permite a la aplicación tener acceso al menú de sistema para hacer copias y modificaciones.
CMenu* GetSystemMenu(BOOL bRevert) const;
Parámetros
bRevert
Especifica la acción que se va a realizar. Si bRevert
es FALSE
, GetSystemMenu
devuelve un identificador a una copia del menú Control actualmente en uso. Esta copia es inicialmente idéntica al menú Control, pero se puede modificar. Si bRevert
es TRUE
, GetSystemMenu
restablece el menú Control de nuevo al estado predeterminado. El menú Control anterior, posiblemente modificado, si existe, se destruye. El valor devuelto es indefinido en este caso.
Valor devuelto
Identifica una copia del menú Control si bRevert
es FALSE
. Si bRevert
es TRUE
, el valor devuelto es indefinido.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Cualquier ventana que no use GetSystemMenu
para realizar su propia copia del menú Control recibe el menú Control estándar.
El puntero devuelto por la función miembro GetSystemMenu
se puede usar con las funciones CMenu::AppendMenu
, CMenu::InsertMenu
y CMenu::ModifyMenu
para cambiar el menú Control.
El menú Control contiene inicialmente elementos identificados con varios valores de Id., como SC_CLOSE
, SC_MOVE
y SC_SIZE
. Los elementos del menú Control generan mensajes WM_SYSCOMMAND
. Todos los elementos predefinidos del menú Control tienen números de Id. mayores que 0xF000. Si una aplicación agrega elementos al menú Control, debe usar números de Id. inferiores a F000.
Windows puede hacer que algunos elementos no estén disponibles automáticamente en el menú Control estándar. CWnd
puede llevar a cabo su propia selección o falta de disponibilidad al responder a los mensajes WM_INITMENU
, que se envían antes de que se muestre cualquier menú.
Ejemplo
// The following code fragment is taken from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu *pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUT);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CWnd::GetTitleBarInfo
Recupera información sobre la barra de título especificada.
BOOL GetTitleBarInfo(PTITLEBARINFO pti) const;
Parámetros
pti
Puntero a una estructura TITLEBARINFO
que recibe la información.
Comentarios
Esta función miembro emula la funcionalidad de la función GetTitleBarInfo
, tal y como se describe en Windows SDK.
CWnd::GetTopLevelFrame
Llame a esta función miembro para recuperar la ventana de marco de nivel superior, si existe.
CFrameWnd* GetTopLevelFrame() const;
Valor devuelto
Identifica la ventana de marco de nivel superior de la ventana.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Si CWnd
no tiene ninguna ventana asociada o su elemento primario de nivel superior no es un objeto derivado de CFrameWnd
, esta función devuelve NULL
.
CWnd::GetTopLevelOwner
Llame a esta función miembro para recuperar la ventana de nivel superior.
CWnd* GetTopLevelOwner() const;
Valor devuelto
Identifica la ventana de nivel superior. El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
La ventana de nivel superior es la ventana que es un elemento secundario del escritorio. Si CWnd
no tiene ninguna ventana asociada, esta función devuelve NULL
.
CWnd::GetTopLevelParent
Llame a esta función miembro para recuperar la ventana primaria de nivel superior de la ventana, si existe.
CWnd* GetTopLevelParent() const;
Valor devuelto
Identifica la ventana primaria de nivel superior de la ventana.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
GetTopLevelParent
es similar a GetTopLevelFrame
y GetTopLevelOwner
; sin embargo, ignora el valor establecido como la ventana del propietario actual.
CWnd::GetTopWindow
Busca la ventana secundaria de nivel superior que pertenece a CWnd
.
CWnd* GetTopWindow() const;
Valor devuelto
Identifica la ventana secundaria de nivel superior en una lista vinculada CWnd
de ventanas secundarias. Si no existen ventanas secundarias, el valor es NULL
.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Si CWnd
no tiene elementos secundarios, esta función devuelve NULL
.
CWnd::GetUpdateRect
Recupera las coordenadas del rectángulo más pequeño que contiene completamente la región de actualización.
BOOL GetUpdateRect(
LPRECT lpRect,
BOOL bErase = FALSE);
Parámetros
lpRect
Apunta a un objeto CRect
o estructura RECT
que va a recibir las coordenadas de cliente de la actualización que incluye la región de actualización.
Establezca este parámetro en NULL
para determinar si existe una región de actualización dentro de CWnd
. Si lpRect
es NULL
, la función miembro GetUpdateRect
devuelve un valor distinto de cero si existe una región de actualización, y 0 si no la tiene. Esto proporciona una manera de determinar si un mensaje WM_PAINT
ha resultado de un área no válida. No establezca este parámetro en NULL
en la versión 3.0 de Windows o versiones anteriores.
bErase
Especifica si el fondo de la región de actualización debe borrarse.
Valor devuelto
Especifica el estado de la región de actualización. El valor es distinto de cero si la región de actualización no está vacía; de lo contrario, es 0.
Si el parámetro lpRect
se establece en NULL
, el valor devuelto es distinto de cero si existe una región de actualización; de lo contrario, es 0.
Comentarios
Si CWnd
se ha creado con el estilo CS_OWNDC
y el modo de asignación no es MM_TEXT
, la función miembro GetUpdateRect
proporciona el rectángulo en coordenadas lógicas. De lo contrario, GetUpdateRect
proporciona el rectángulo en coordenadas de cliente. Si no hay ninguna región de actualización, GetUpdateRect
establece que el rectángulo esté vacío (establece todas las coordenadas en 0).
El parámetro bErase
especifica si GetUpdateRect
debe borrar el fondo de la región de actualización. Si bErase
es TRUE
y la región de actualización no está vacía, se borra el fondo. Para borrar el fondo, GetUpdateRect
envía el mensaje WM_ERASEBKGND
.
El rectángulo de actualización recuperado por la función miembro BeginPaint
es idéntico al recuperado por la función miembro GetUpdateRect
.
La función miembro BeginPaint
valida automáticamente la región de actualización, por lo que cualquier llamada a GetUpdateRect
realizada inmediatamente después de una llamada a BeginPaint
recupera una región de actualización vacía.
CWnd::GetUpdateRgn
Recupera la región de actualización en una región identificada por pRgn
.
int GetUpdateRgn(
CRgn* pRgn,
BOOL bErase = FALSE);
Parámetros
pRgn
Identifica la región de actualización.
bErase
Especifica si se borrará el fondo y se dibujarán áreas no cliente de ventanas secundarias. Si el valor es FALSE
, no se realiza ningún dibujo.
Valor devuelto
Especifica una marca de entero corto que indica el tipo de región resultante. El valor puede ser cualquiera de los siguientes:
SIMPLEREGION
: la región no tiene bordes superpuestos.COMPLEXREGION
: la región tiene bordes superpuestos.NULLREGION
La región está vacía.ERROR
: no se ha creado ninguna región.
Comentarios
Las coordenadas de esta región son relativas a la esquina superior izquierda (coordenadas de cliente).
La función miembro BeginPaint
valida automáticamente la región de actualización, por lo que cualquier llamada a GetUpdateRgn
realizada inmediatamente después de una llamada a BeginPaint
recupera una región de actualización vacía.
CWnd::GetWindow
Devuelve un puntero a la ventana solicitada, o NULL
si no existe.
CWnd* GetWindow(UINT nCmd) const;
Parámetros
*nCmd*
Especifica la relación entre CWnd
y la ventana devuelta. Puede tomar uno de los valores siguientes:
GW_CHILD
Identifica la primera ventana secundariaCWnd
.GW_HWNDFIRST
SiCWnd
es una ventana secundaria, devuelve la primera ventana del mismo nivel. De lo contrario, devuelve la primera ventana de nivel superior de la lista.GW_HWNDLAST
SiCWnd
es una ventana secundaria, devuelve la última ventana del mismo nivel. De lo contrario, devuelve la última ventana de nivel superior de la lista.GW_HWNDNEXT
Devuelve la ventana siguiente en la lista del administrador de ventanas.GW_HWNDPREV
Devuelve la ventana anterior en la lista del administrador de ventanas.GW_OWNER
Identifica al propietarioCWnd
.
Valor devuelto
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
CWnd::GetWindowContextHelpId
Llame a esta función miembro para recuperar el identificador de contexto de ayuda, si existiera, asociado a la ventana.
DWORD GetWindowContextHelpId() const;
Valor devuelto
El identificador de contexto de ayuda. Devuelve 0 si la ventana no tiene ninguno.
CWnd::GetWindowedChildCount
Llame a esta función miembro para recuperar el número de ventanas secundarias asociadas.
long GetWindowedChildCount();
Valor devuelto
El número de ventanas secundarias asociadas al objeto CWnd
.
CWnd::GetWindowDC
Recupera el contexto de visualización de toda la ventana, como la barra de título, los menús y las barras de desplazamiento.
CDC* GetWindowDC();
Valor devuelto
Identifica el contexto de visualización de la ventana especificada si la función se ejecuta correctamente; de lo contrario, NULL
.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior. Se debe llamar a ReleaseDC
una vez por cada llamada correcta a GetWindowDC
.
Comentarios
Un contexto de visualización de ventana permite pintar en cualquier parte de CWnd
, ya que el origen del contexto es la esquina superior izquierda de CWnd
, y no del área cliente.
Los atributos predeterminados se asignan al contexto de visualización cada vez que recupera el contexto. Los atributos anteriores se pierden.
GetWindowDC
está pensado para utilizarse para efectos de pintura especiales dentro del área no cliente CWnd
. No se recomienda pintar en áreas no cliente de cualquier ventana.
La función de Windows GetSystemMetrics
se puede usar para recuperar las dimensiones de varias partes del área no cliente, como la barra de títulos, el menú y las barras de desplazamiento.
Una vez completada la pintura, se debe llamar a la ReleaseDC
función miembro para liberar el contexto de visualización. Si no se libera el contexto de visualización, la pintura solicitada se verá gravemente afectada por las aplicaciones debido a limitaciones en el número de contextos de dispositivo que se pueden abrir al mismo tiempo.
CWnd::GetWindowInfo
Recupera información sobre la ventana.
BOOL GetWindowInfo(PWINDOWINFO pwi) const;
Parámetros
pwi
Un puntero a una estructura WINDOWINFO
.
Comentarios
Esta función miembro emula la funcionalidad de la función GetWindowInfo
, tal y como se describe en Windows SDK.
CWnd::GetWindowlessChildCount
Devuelve el número de ventanas secundarias sin ventanas que están asociadas.
long GetWindowlessChildCount();
Valor devuelto
El número de ventanas secundarias sin ventanas que están asociadas al objeto CWnd
.
CWnd::GetWindowPlacement
Recupera el estado de visualización y las posiciones normal (restaurada), minimizada y maximizada de una ventana.
BOOL GetWindowPlacement(WINDOWPLACEMENT* lpwndpl) const;
Parámetros
lpwndpl
Apunta a la estructura WINDOWPLACEMENT
que recibe la información de posición y estado de presentación.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
El miembro flags
de la WINDOWPLACEMENT
estructura recuperada por esta función siempre es 0. Si CWnd
se maximiza, el miembro showCmd
de WINDOWPLACEMENT
es SW_SHOWMAXIMIZED
. Si la ventana está minimizada, es SW_SHOWMINIMIZED
. De lo contrario, es SW_SHOWNORMAL
.
CWnd::GetWindowRect
Copia las dimensiones del rectángulo delimitador del objeto CWnd
en la estructura a la que apunta lpRect
.
void GetWindowRect(LPRECT lpRect) const;
Parámetros
lpRect
Apunta a un objeto CRect
o una estructura RECT
que recibirá las coordenadas de pantalla de las esquinas superior izquierda e inferior derecha.
Comentarios
Las dimensiones se proporcionan en coordenadas de pantalla relativas a la esquina superior izquierda de la pantalla. Se incluyen las dimensiones del título, el borde y las barras de desplazamiento, si están presentes.
CWnd::GetWindowRgn
Llame a esta función miembro para obtener la región de ventana de una ventana.
int GetWindowRgn(HRGN hRgn)const;
Parámetros
hRgn
Un identificador de una región de ventana.
Valor devuelto
El valor devuelto especifica el tipo de la región que obtiene la función. Puede ser uno de los siguientes valores:
NULLREGION
La región está vacía.SIMPLEREGION
La región es un único rectángulo.COMPLEXREGION
La región es más de un rectángulo.ERROR
Se ha producido un error; la región no se ve afectada.
Comentarios
La región de la ventana determina el área dentro de la ventana donde el sistema operativo permite dibujar. El sistema operativo no muestra ninguna parte de una ventana que se encuentre fuera de la región de la ventana.
Las coordenadas de la región de ventana de una ventana son relativas a la esquina superior izquierda de la ventana, no al área cliente de la ventana.
Para establecer la región de la ventana de una ventana, llame a CWnd::SetWindowRgn
.
CWnd::GetWindowText
Copia el título CWnd
(si tiene uno) en el búfer al que apunta lpszStringBuf
o en la cadena de destino rString
.
int GetWindowText(
LPTSTR lpszStringBuf,
int nMaxCount) const;
void GetWindowText(
CString& rString) const;
Parámetros
lpszStringBuf
Apunta al búfer que va a recibir la cadena copiada del título de la ventana.
nMaxCount
Especifica el número máximo de caracteres que se van a copiar en el búfer, incluido el carácter nulo de terminación. Si la cadena es más larga que el número máximo de caracteres especificado en nMaxCount
, se trunca.
rString
Un objeto CString
que va a recibir la cadena copiada del título de la ventana.
Valor devuelto
Especifica la longitud, en caracteres, de la cadena copiada, sin incluir el carácter NULL de terminación. Es 0 si CWnd
no tiene título o si el título está vacío.
Comentarios
Si el objeto CWnd
es un control, la función miembro GetWindowText
copia el texto dentro del control en lugar de copiar el título.
Esta función miembro hace que el mensaje WM_GETTEXT
se envíe al objeto CWnd
.
Ejemplo
Vea el ejemplo de CWnd::SetWindowText
.
CWnd::GetWindowTextLength
Devuelve la longitud del título de texto del objeto CWnd
.
int GetWindowTextLength() const;
Valor devuelto
Especifica la longitud del texto en caracteres, sin incluir ningún carácter nulo de terminación. El valor es 0 si no existe dicho texto.
Comentarios
Si CWnd
es un control, la función miembro GetWindowTextLength
devuelve la longitud del texto dentro del control en lugar del título.
Esta función miembro hace que el mensaje WM_GETTEXTLENGTH
se envíe al objeto CWnd
.
Ejemplo
Vea el ejemplo de CWnd::SetWindowText
.
CWnd::HideCaret
Quita el cursor de inserción de la presentación en pantalla para ocultarlo.
void HideCaret();
Comentarios
Aunque el cursor de inserción ya no está visible, se puede volver a mostrar mediante la función miembro ShowCaret
. Ocultar el cursor de inserción no destruye su forma actual.
La ocultación es acumulativa. Si HideCaret
se ha llamado cinco veces seguidas, se debe llamar a la función miembro ShowCaret
cinco veces antes de que se muestre el cursor de inserción.
CWnd::HiliteMenuItem
Resalta o quita el resaltado de un elemento de menú de nivel superior (barra de menús).
BOOL HiliteMenuItem(
CMenu* pMenu,
UINT nIDHiliteItem,
UINT nHilite);
Parámetros
pMenu
Identifica el menú de nivel superior que contiene el elemento que se va a resaltar.
nIDHiliteItem
Especifica el elemento de menú que se va a resaltar, en función del valor del parámetro nHilite
.
nHilite
Especifica si el elemento de menú está resaltado o se ha quitado el resaltado. Puede ser una combinación de MF_HILITE
o MF_UNHILITE
con MF_BYCOMMAND
o MF_BYPOSITION
. Estos marcadores se pueden combinar utilizando el operador bit a bit OR
. Estos valores tienen los significados siguientes:
MF_BYCOMMAND
interpretanIDHiliteItem
como el Id. del elemento de menú (la interpretación predeterminada).MF_BYPOSITION
interpretanIDHiliteItem
como el desplazamiento de base cero del elemento de menú.MF_HILITE
resalta el elemento. Si no se da este valor, el elemento deja de estar resaltado.MF_UNHILITE
quita el resaltado del elemento.
Valor devuelto
Especifica si el elemento de menú se ha resaltado. Distinto de cero si el elemento estaba resaltado; de lo contrario, 0.
Comentarios
Las MF_HILITE
marcas y MF_UNHILITE
solo se pueden usar con esta función miembro; no se pueden usar con la función miembro CMenu::ModifyMenu
.
CWnd::HtmlHelp
Llame a esta función miembro para invocar la aplicación HTMLHelp.
virtual void HtmlHelp(
DWORD_PTR dwData,
UINT nCmd = 0x000F);
Parámetros
dwData
Especifica datos adicionales. El valor usado depende del valor del parámetro nCmd
.
nCmd
Especifica el tipo de ayuda solicitado. Para obtener una lista de los valores posibles y cómo afectan al parámetro dwData
, consulte el parámetro uCommand
descrito en la Referencia de la API de ayuda HTML de Windows SDK.
Comentarios
Vea CWinApp::HtmlHelp
para obtener más información.
CWnd::InitDynamicLayout
Llamado por el marco de trabajo para inicializar la presentación dinámica de una ventana.
void InitDynamicLayout();
Comentarios
No llame a este método directamente.
CWnd::Invalidate
Invalida toda el área cliente de CWnd
.
void Invalidate(BOOL bErase = TRUE);
Parámetros
bErase
Especifica si el fondo de la región de actualización debe borrarse.
Comentarios
El área cliente se marca para pintar cuando se produce el siguiente mensaje WM_PAINT
. La región también se puede validar antes de que se produzca un mensaje WM_PAINT
mediante la función miembro ValidateRect
o ValidateRgn
.
El parámetro bErase
especifica si se borrará el fondo dentro del área de actualización cuando se procese la región de actualización. Si bErase
es TRUE
, el fondo se borra cuando se llama a la función miembro BeginPaint
; si bErase
es FALSE
, el fondo permanece sin cambios. Si bErase
es TRUE
para cualquier parte de la región de actualización, se borra el fondo de toda la región, no solo en la parte especificada.
Windows envía un mensaje WM_PAINT
cuando la región de actualización CWnd
no está vacía y no hay otros mensajes en la cola de la aplicación para esa ventana.
Ejemplo
Vea el ejemplo de CWnd::UpdateWindow
.
CWnd::InvalidateRect
Invalida el área cliente dentro del rectángulo especificado agregando dicho rectángulo a la región de actualización CWnd
.
void InvalidateRect(
LPCRECT lpRect,
BOOL bErase = TRUE);
Parámetros
lpRect
Apunta a un objeto CRect
o una estructura RECT
que contiene el rectángulo (en coordenadas de cliente) que se va a agregar a la región de actualización. Si lpRect
es NULL
, se agrega toda el área cliente a la región.
bErase
Especifica si el fondo de la región de actualización debe borrarse.
Comentarios
El rectángulo invalidado, junto con todas las demás áreas de la región de actualización, se marca para pintar cuando se envía el siguiente mensaje WM_PAINT
. Las áreas invalidadas se acumulan en la región de actualización hasta que se procesa la región cuando se produce la siguiente llamada de WM_PAINT
, o hasta que la función miembro ValidateRect
o ValidateRgn
valida la región.
El parámetro bErase
especifica si se borrará el fondo dentro del área de actualización cuando se procese la región de actualización. Si bErase
es TRUE
, el fondo se borra cuando se llama a la función miembro BeginPaint
; si bErase
es FALSE
, el fondo permanece sin cambios. Si bErase
es TRUE
para cualquier parte de la región de actualización, se borra el fondo de toda la región, no solo en la parte especificada.
Windows envía un mensaje WM_PAINT
cuando la región de actualización CWnd
no está vacía y no hay otros mensajes en la cola de la aplicación para esa ventana.
CWnd::InvalidateRgn
Invalida el área cliente dentro de la región especificada agregando dicha región a la región de actualización actual de CWnd
.
void InvalidateRgn(
CRgn* pRgn,
BOOL bErase = TRUE);
Parámetros
pRgn
Un puntero a un objeto CRgn
que identifica la región que se va a agregar a la región de actualización. Se supone que la región tiene coordenadas de cliente. Si este parámetro es NULL
, se agrega toda el área cliente a la región de actualización.
bErase
Especifica si el fondo de la región de actualización debe borrarse.
Comentarios
La región invalidada, junto con todas las demás áreas de la región de actualización, se marca para pintar cuando se envía el mensaje WM_PAINT
. Las áreas invalidadas se acumulan en la región de actualización hasta que la región se procesa cuando se envía un mensaje WM_PAINT
a continuación, o hasta que la función miembro ValidateRect
o ValidateRgn
valida la región.
El parámetro bErase
especifica si se borrará el fondo dentro del área de actualización cuando se procese la región de actualización. Si bErase
es TRUE
, el fondo se borra cuando se llama a la función miembro BeginPaint
; si bErase
es FALSE
, el fondo permanece sin cambios. Si bErase
es TRUE
para cualquier parte de la región de actualización, se borra el fondo de toda la región, no solo en la parte especificada.
Windows envía un mensaje WM_PAINT
cuando la región de actualización CWnd
no está vacía y no hay otros mensajes en la cola de la aplicación para esa ventana.
Una de las funciones de región debe haber creado previamente la región especificada.
CWnd::InvokeHelper
Llame a esta función miembro para invocar el método o la propiedad del control ActiveX especificado por dwDispID
en el contexto especificado por wFlags
.
void AFX_CDECL InvokeHelper(
DISPID dwDispID,
WORD wFlags,
VARTYPE vtRet,
void* pvRet,
const BYTE* pbParamInfo,
... );
Parámetros
dwDispID
Identifica el método o la propiedad que se va a invocar.
wFlags
Las marcas que describen el contexto de la llamada a IDispatch::Invoke
.
vtRet
Especifica el tipo del valor devuelto. Para los valores posibles, consulte la sección Comentarios para COleDispatchDriver::InvokeHelper
.
pvRet
La dirección de la variable que recibirá el valor de la propiedad o el valor devuelto. Debe coincidir con el tipo especificado por vtRet
.
pbParamInfo
Puntero a una cadena terminada en null de bytes que especifica los tipos de los parámetros que siguen a pbParamInfo
. Para los valores posibles, consulte la sección Comentarios para COleDispatchDriver::InvokeHelper
.
...
La lista de variables de parámetros de los tipos especificados en pbParamInfo
.
Comentarios
El parámetro pbParamInfo
especifica los tipos de los parámetros pasados al método o a la propiedad. La lista variable de argumentos se representa mediante ...
en la declaración de sintaxis.
Esta función convierte los parámetros a valores VARIANTARG
, y a continuación invoca el método IDispatch::Invoke
del control ActiveX. Si se produce un error en la llamada a IDispatch::Invoke
, esta función generará una excepción. Si el SCODE
(código de estado) devuelto por IDispatch::Invoke
es DISP_E_EXCEPTION
, esta función inicia un objeto COleException
; de lo contrario, inicia un COleDispatchException
.
Nota:
Solo se debe llamar a esta función en un objeto CWnd
que represente un control ActiveX.
Para obtener más información sobre el uso de esta función miembro con contenedores de controles ActiveX, consulte el artículo Contenedores de controles ActiveX: Programación de controles ActiveX en un contenedor de controles ActiveX.
CWnd::IsChild
Indica si la ventana especificada por pWnd
es una ventana secundaria u otro descendiente directo de CWnd
.
BOOL IsChild(const CWnd* pWnd) const;
Parámetros
pWnd
Identifica la ventana que se va a probar.
Valor devuelto
Especifica el resultado de la función . El valor es distinto de cero si la ventana identificada por pWnd
es una ventana secundaria de CWnd
; en caso contrario, es 0.
Comentarios
Una ventana secundaria es el descendiente directo de CWnd
si el objeto CWnd
está en la cadena de ventanas primarias que conduce desde la ventana emergente original a la ventana secundaria.
CWnd::IsD2DSupportEnabled
Determina si la compatibilidad con D2D está habilitada.
BOOL IsD2DSupportEnabled();
Valor devuelto
TRUE
si la característica está habilitada; de lo contrario, FALSE
.
CWnd::IsDialogMessage
Llame a esta función miembro para determinar si el mensaje especificado está pensado para un cuadro de diálogo no modal; si es así, esta función procesa el mensaje.
BOOL IsDialogMessage(LPMSG lpMsg);
Parámetros
lpMsg
Apunta a una estructura MSG
que contiene el mensaje que se va a comprobar.
Valor devuelto
Especifica si la función miembro ha procesado el mensaje dado. Es distinto de cero si se ha procesado el mensaje; de lo contrario, es 0. Si el valor devuelto es 0, llame a la función miembro CWnd::PreTranslateMessage
de la clase base para procesar el mensaje. En una invalidación de la función miembro CWnd::PreTranslateMessage
, el código tiene el siguiente aspecto:
BOOL CAboutDlg::PreTranslateMessage(MSG *pMsg)
{
if (IsDialogMessage(pMsg))
return TRUE;
else
return CDialog::PreTranslateMessage(pMsg);
}
Comentarios
Cuando la función IsDialogMessage
procesa un mensaje, comprueba si hay mensajes de teclado y los convierte en comandos de selección para el cuadro de diálogo correspondiente. Por ejemplo, la tecla TAB selecciona el siguiente control o grupo de controles y la tecla FLECHA ABAJO selecciona el siguiente control en un grupo.
No se debe pasar un mensaje procesado mediante IsDialogMessage
a las funciones de Windows TranslateMessage
o DispatchMessage
, porque ya se ha procesado.
CWnd::IsDlgButtonChecked
Determina si un control de botón tiene una marca de verificación junto a él.
UINT IsDlgButtonChecked(int nIDButton) const;
Parámetros
nIDButton
Especifica el identificador entero del control de botón.
Valor devuelto
Distinto de cero si el control especificado está activado, y 0 si no está activado. Solo se pueden activar botones de radio y casillas. En el caso de los botones de tres estados, el valor devuelto puede ser 2 si el botón es indeterminado. Esta función miembro devuelve 0 para un botón de inserción.
Comentarios
Si el botón es un control de tres estados, la función miembro determina si está atenuado, activado o ninguno de las dos.
CWnd::IsDynamicLayoutEnabled
Determina si el diseño dinámico está habilitado en esta ventana. Si el diseño dinámico está habilitado, la posición y el tamaño de las ventanas secundarias pueden cambiar cuando el usuario cambie el tamaño de la ventana primaria.
BOOL IsDynamicLayoutEnabled() const;
Valor devuelto
TRUE
si el diseño dinámico está habilitado; en caso contrario, FALSE
.
Comentarios
CWnd::IsIconic
Identifica si CWnd
está minimizado (icono).
BOOL IsIconic() const;
Valor devuelto
Distinto de cero si CWnd
está minimizado; en caso contrario, 0.
Ejemplo
void CAboutDlg::OnPaint()
{
// This code, normally emitted by the Application Wizard for a dialog-
// based project for the dialog's WM_PAINT handler, runs only if the
// window is iconic. The window erases the icon's area, then
// paints the icon referenced by m_hIcon.
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM)dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
CWnd::IsTouchWindow
Especifica si CWnd
es compatible con la entrada táctil.
BOOL IsTouchWindow() const;
Valor devuelto
TRUE
si CWnd
tiene compatibilidad táctil; de lo contrario, FALSE
.
Comentarios
CWnd::IsWindowEnabled
Especifica si CWnd
está habilitado para la entrada de mouse y de teclado.
BOOL IsWindowEnabled() const;
Valor devuelto
Distinto de cero si CWnd
está habilitado; en caso contrario, 0.
Ejemplo
//change the background color of an edit control on the dialog
HBRUSH CMyDlg::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_MYEDIT)
{
if (pWnd->IsWindowEnabled())
{
// Red brush for the background...
pDC->SetBkColor(RGB(255, 0, 0));
// m_pRedBrush is the CBrush object initialized with a red brush
// using CreateSolidBrush
return (HBRUSH)m_RedBrush.GetSafeHandle();
}
else
{
// Blue brush for the background...
pDC->SetBkColor(RGB(0, 0, 255));
// m_pBlueBrush is the CBrush object initialized with a blue
// brush using CreateSolidBrush
return (HBRUSH)m_BlueBrush.GetSafeHandle();
}
}
return hbr;
}
CWnd::IsWindowVisible
Determina el estado de visibilidad de la ventana especificada.
BOOL IsWindowVisible() const;
Valor devuelto
Distinto de cero si CWnd
está visible (tiene establecido el bit de estilo WS_VISIBLE
y la ventana primaria es visible). Dado que el valor devuelto refleja el estado del bit de estilo WS_VISIBLE
, el valor devuelto puede ser distinto de cero aunque CWnd
esté totalmente oculto por otras ventanas.
Comentarios
Una ventana posee un estado de visibilidad indicado por el bit de estilo WS_VISIBLE
. Cuando este bit de estilo se establece con una llamada a la función miembro ShowWindow
, se muestra la ventana y el dibujo posterior en la ventana se muestra siempre que la ventana tenga el bit de estilo establecido.
Cualquier dibujo en una ventana que tenga el estilo WS_VISIBLE
no se mostrará si la ventana está cubierta por otras ventanas o recortada mediante su ventana primaria.
Ejemplo
// This example uses the CWnd::IsWindowVisible() function to
// determine if a dialog box is visible. If it is not, it calls
// CWnd::ShowWindow with the SW_SHOWNORMAL command.
void CMainFrame::DisplayModeless()
{
if(!m_Modeless.IsWindowVisible())
{
m_Modeless.ShowWindow(SW_SHOWNORMAL);
}
}
// This example uses the CWnd::IsWindowVisible() function to
// determine if a dialog box is visible. If it is, it calls
// CWnd::ShowWindow with the SW_HIDE command.
void CMainFrame::HideModeless()
{
if(m_Modeless.IsWindowVisible())
{
m_Modeless.ShowWindow(SW_HIDE);
}
}
CWnd::IsZoomed
Determina si CWnd
se ha maximizado.
BOOL IsZoomed() const;
Valor devuelto
Distinto de cero si CWnd
está maximizado; en caso contrario, 0.
CWnd::KillTimer
Termina el evento de temporizador identificado por nIDEvent
de la llamada anterior a SetTimer
.
BOOL KillTimer(UINT_PTR nIDEvent);
Parámetros
nIDEvent
El valor del evento de temporizador que se ha pasado a SetTimer
.
Valor devuelto
Especifica el resultado de la función . El valor es distinto de cero si se ha terminado el evento. Es 0 si la función miembro KillTimer
no puede encontrar el evento de temporizador especificado.
Comentarios
Los mensajes WM_TIMER
pendientes asociados al temporizador no se quitan de la cola de mensajes.
Ejemplo
Vea el ejemplo de CWnd::SetTimer
.
CWnd::LoadDynamicLayoutResource
Lo llama el marco para que cargue la información de diseño dinámico desde el archivo de recursos.
BOOL LoadDynamicLayoutResource(LPCTSTR lpszResourceName);
Parámetros
lpszResourceName
El nombre del recurso que contiene la información de diseño dinámico que se desea para esta ventana.
Valor devuelto
Es distinto de cero si la función se realiza correctamente. Es 0 si se produce un error.
Comentarios
No llame a este método directamente.
CWnd::LockWindowUpdate
Deshabilita el dibujo en la ventana especificada.
BOOL LockWindowUpdate();
Valor devuelto
Es distinto de cero si la función se realiza correctamente. Es 0 si se produce un error o si la función LockWindowUpdate
se ha usado para bloquear otra ventana.
Comentarios
Una ventana bloqueada no se puede mover. Solo se puede bloquear una ventana cada vez. Para desbloquear una ventana bloqueada con LockWindowUpdate
, llame a UnlockWindowUpdate
.
Si una aplicación con una ventana bloqueada (o cualquier ventana secundaria bloqueada) llama a la función Windows GetDC
, GetDCEx
o BeginPaint
, la función llamada devuelve un contexto de dispositivo cuya región visible está vacía. Esto se producirá hasta que la aplicación desbloquee la ventana llamando a la función miembro UnlockWindowUpdate
.
Mientras las actualizaciones de ventanas están bloqueadas, el sistema realiza un seguimiento del rectángulo delimitador de las operaciones de dibujo en contextos de dispositivo asociados a una ventana bloqueada. Cuando se vuelve a habilitar el dibujo, este rectángulo delimitador se invalida en la ventana bloqueada y sus ventanas secundarias para forzar que un eventual mensaje WM_PAINT
actualice la pantalla. Si no se ha producido ningún dibujo mientras las actualizaciones de la ventana estaban bloqueadas, no se invalida ningún área.
La función miembro LockWindowUpdate
no hace que la ventana especificada sea invisible y no borra el bit de estilo WS_VISIBLE
.
CWnd::m_hWnd
El identificador de la ventana de Windows asociada a este CWnd
.
HWND m_hWnd;
Comentarios
El miembro de datos m_hWnd
es una variable pública de tipo HWND
.
CWnd::MapWindowPoints
Convierte (asigna) un conjunto de puntos del espacio de coordenadas de CWnd
al espacio de coordenadas de otra ventana.
void MapWindowPoints(
CWnd* pwndTo,
LPRECT lpRect) const;
void MapWindowPoints(
CWnd* pwndTo,
LPPOINT lpPoint,
UINT nCount) const;
Parámetros
pwndTo
Identifica la ventana a la que se convierten los puntos. Si este parámetro es NULL
, los puntos se convierten en coordenadas de pantalla.
lpRect
Especifica el rectángulo cuyos puntos se van a convertir. La primera versión de esta función solo está disponible para Windows 3.1 y versiones posteriores.
lpPoint
Un puntero a una matriz de estructura POINT
que contiene el conjunto de puntos que se van a convertir.
nCount
Especifica el número de estructuras de POINT
en la matriz a la que apunta lpPoint
.
CWnd::MessageBox
Crea y muestra una ventana que contiene un mensaje y un título proporcionados por la aplicación, además de una combinación de los iconos predefinidos y los botones de inserción descritos en la lista Estilos de cuadro de mensaje.
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = NULL,
UINT nType = MB_OK);
Parámetros
lpszText
Apunta a un objeto CString
o una cadena terminada en NULL que contiene el mensaje que se va a mostrar.
lpszCaption
Apunta a un objeto CString
o una cadena terminada en NULL que se va a usar para el título del cuadro de mensaje. Si lpszCaption
es NULL
, se usa el título predeterminado «Error».
nType
Especifica el contenido y el comportamiento del cuadro de mensaje.
Valor devuelto
Este método utiliza la función MessageBox
tal y como se define en Windows SDK. Este método devuelve el resultado de llamar a esta función.
Comentarios
Use la función global AfxMessageBox
en lugar de esta función miembro para implementar un cuadro de mensaje en la aplicación.
A continuación se muestran los distintos iconos del sistema que se pueden usar en un cuadro de mensaje:
Iconos | Macro |
---|---|
MB_ICONHAND , MB_ICONSTOP y MB_ICONERROR |
|
MB_ICONQUESTION | |
MB_ICONEXCLAMATION y MB_ICONWARNING | |
MB_ICONASTERISK y MB_ICONINFORMATION |
Ejemplo
void CMainFrame::OnDisplayErrorMessage()
{
// This displays a message box with the title "Error"
// and the message "Help, Something went wrong."
// The error icon is displayed in the message box, along with
// an OK button.
MessageBox(_T("Help, Something went wrong."), _T("Error"),
MB_ICONERROR | MB_OK);
}
CWnd::ModifyStyle
Llame a esta función miembro para modificar el estilo de una ventana.
BOOL ModifyStyle(
DWORD dwRemove,
DWORD dwAdd,
UINT nFlags = 0);
Parámetros
dwRemove
Especifica los estilos de ventana que se van a quitar durante la modificación del estilo.
dwAdd
Especifica los estilos de ventana que se van a agregar durante la modificación del estilo.
nFlags
Las marcas que se van a pasar a SetWindowPos
, o cero si no se debe llamar a SetWindowPos
. El valor predeterminado es cero. Consulte la sección Comentarios para obtener una lista de marcas preestablecidas.
Valor devuelto
Distinto de cero si el estilo se ha modificado correctamente; de lo contrario, 0.
Comentarios
Los estilos que se van a agregar o quitar se pueden combinar mediante el operador bit a bit OR (|
). Consulte los temas Estilos de ventana y CreateWindow
de Windows SDK para obtener información sobre los estilos de ventana disponibles.
Si nFlags
es distinto de cero, ModifyStyle
llama a la función de la API de Windows SetWindowPos
y vuelve a dibujar la ventana combinando nFlags
con las cuatro marcas preestablecidas siguientes:
SWP_NOSIZE
Conserva el tamaño actual.SWP_NOMOVE
Conserva la posición actual.SWP_NOZORDER
Conserva el orden Z actual.SWP_NOACTIVATE
No activa la ventana.
Para modificar los estilos extendidos de una ventana, consulte ModifyStyleEx
.
Nota:
Para algunos estilos de determinados controles (el estilo ES_READONLY
del control de edición, por ejemplo), es posible que ModifyStyle
no cambie correctamente el estilo porque es posible que el control tenga que realizar un procesamiento interno especial. En estos casos, un mensaje correspondiente para cambiar el estilo estará disponible (EM_SETREADONLY
en el ejemplo mencionado).
Ejemplo
// This example adds the WS_CLIPCHILDREN style to the window.
// No Styles are removed from the window.
void CMyView::OnInitialUpdate()
{
CView::OnInitialUpdate();
ModifyStyle(0, WS_CLIPCHILDREN);
}
CWnd::ModifyStyleEx
Llame a esta función miembro para modificar el estilo extendido de una ventana.
BOOL ModifyStyleEx(
DWORD dwRemove,
DWORD dwAdd,
UINT nFlags = 0);
Parámetros
dwRemove
Especifica los estilos extendidos de ventana que se van a quitar durante la modificación del estilo.
dwAdd
Especifica los estilos extendidos de ventana que se van a agregar durante la modificación del estilo.
nFlags
Las marcas que se van a pasar a SetWindowPos
, o cero si no se debe llamar a SetWindowPos
. El valor predeterminado es cero. Consulte la sección Comentarios para obtener una lista de marcas preestablecidas.
Valor devuelto
Distinto de cero si el estilo se ha modificado correctamente; de lo contrario, 0.
Comentarios
Los estilos que se van a agregar o quitar se pueden combinar mediante el operador bit a bit OR (|
). Consulte los temas Estilos extendidos de ventana en este libro y CreateWindowEx
de Windows SDK para obtener información sobre los estilos extendidos disponibles.
Si nFlags
es distinto de cero, ModifyStyleEx
llama a la función de la API de Windows SetWindowPos
y vuelve a dibujar la ventana combinando nFlags
con las cuatro marcas preestablecidas siguientes:
SWP_NOSIZE
Conserva el tamaño actual.SWP_NOMOVE
Conserva la posición actual.SWP_NOZORDER
Conserva el orden Z actual.SWP_NOACTIVATE
No activa la ventana.
Para modificar ventanas mediante estilos de ventana normales, consulte ModifyStyle
.
Ejemplo
// This example would make the dialog box transparent by
// changing the dialog window's extended styles.
int CAboutDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
ModifyStyleEx(0, WS_EX_TRANSPARENT);
return 0;
}
CWnd::MoveWindow
Cambia la posición y las dimensiones.
void MoveWindow(
int x,
int y,
int nWidth,
int nHeight,
BOOL bRepaint = TRUE);
void MoveWindow(
LPCRECT lpRect,
BOOL bRepaint = TRUE);
Parámetros
x
Especifica la nueva posición del lado izquierdo del CWnd
.
y
Especifica la nueva posición de la parte superior del CWnd
.
nWidth
Especifica el nuevo ancho de CWnd
.
nHeight
Especifica el nuevo alto de CWnd
.
bRepaint
Especifica si CWnd
se va a volver a pintar. Si es TRUE
, CWnd
recibe un mensaje WM_PAINT
en su controlador de mensajes OnPaint
, como de costumbre. Si este parámetro es FALSE
, no se vuelve a pintar de ninguna manera. Esto se aplica al área cliente, al área no cliente (incluidas las barras de título y de desplazamiento) y a cualquier parte de la ventana primaria que esté descubierta como resultado del movimiento de CWnd
. Cuando este parámetro es FALSE
, la aplicación debe invalidar explícitamente o volver a dibujar las partes de CWnd
y la ventana primaria que se deben volver a dibujar.
lpRect
El objeto CRect
o la estructura RECT
que especifica el nuevo tamaño y posición.
Comentarios
Para un objeto de nivel superior CWnd
, los parámetros x
y y
son relativos a la esquina superior izquierda de la pantalla. Para un objeto secundario CWnd
, son relativos a la esquina superior izquierda del área cliente de la ventana primaria.
La función MoveWindow
envía el mensaje WM_GETMINMAXINFO
. Controlar este mensaje ofrece a CWnd
la oportunidad de modificar los valores predeterminados para las ventanas más grandes y más pequeñas posibles. Si los parámetros de la función miembro MoveWindow
superan estos valores, los valores se pueden reemplazar por los valores mínimos o máximos del controlador WM_GETMINMAXINFO
.
Ejemplo
Vea el ejemplo de CWnd::ClientToScreen
.
CWnd::NotifyWinEvent
Indica al sistema que se ha producido un evento predefinido. Si alguna aplicación cliente ha registrado una función de enlace para el evento, el sistema llama a la función de enlace del cliente.
void NotifyWinEvent(
DWORD event,
LONG idObjectType,
LONG idObject);
Parámetros
event
Especifica el evento que ha tenido lugar. Este valor debe ser una de las constantes de evento.
idObjectType
Identifica el tipo de objeto que ha generado el evento. Este valor es uno de los identificadores de objeto predefinidos o un valor personalizado de Id. de objeto.
idObject
Identifica si un objeto o un elemento secundario del objeto ha generado el evento. Si este valor es CHILDID_SELF
, el propio objeto ha generado el evento. Si no es así, este valor es el Id. secundario del elemento que ha generado el evento.
Comentarios
Esta función miembro emula la funcionalidad de la función NotifyWinEvent
, tal y como se describe en Windows SDK.
CWnd::OnActivate
El marco llama a esta función miembro cuando un objeto CWnd
se está activando o desactivando.
afx_msg void OnActivate(
UINT nState,
CWnd* pWndOther,
BOOL bMinimized);
Parámetros
nState
Especifica si CWnd
se está activando o desactivando. Puede ser uno de los siguientes valores:
WA_INACTIVE
La ventana se está desactivando.WA_ACTIVE
La ventana se está activando mediante algún método distinto de un clic del mouse (por ejemplo, mediante el uso de la interfaz de teclado para seleccionar la ventana).WA_CLICKACTIVE
La ventana se está activando mediante un clic del mouse.
pWndOther
El puntero al CWnd
que se está activando o desactivando. El puntero puede ser NULL
, y puede ser temporal.
bMinimized
Especifica el estado minimizado del CWnd
que se está activando o desactivando. Un valor de TRUE
indica que la ventana está minimizada.
Si es TRUE
, CWnd
está activando; de lo contrario, se está desactivando.
Comentarios
Si el objeto CWnd
se activa con un clic del mouse, también recibirá una llamada de función miembro OnMouseActivate
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnActivateApp
El marco llama a esta función miembro para todas las ventanas de nivel superior de la tarea que se están activando y para todas las ventanas de nivel superior de la tarea que se están desactivando.
afx_msg void OnActivateApp(
BOOL bActive,
DWORD dwThreadID);
Parámetros
bActive
Especifica si CWnd
se está activando o desactivando. TRUE
significa que CWnd
se está activando. FALSE
significa que CWnd
se está desactivando.
dwThreadID
Especifica el valor del Id. del subproceso. Si bActive
es TRUE
, dwThreadID
identifica el subproceso propietario del CWnd
que se está desactivando. Si bActive
es FALSE
, dwThreadID
identifica el subproceso propietario del CWnd
que se está activando.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnAmbientProperty
El marco llama a esta función miembro para obtener valores de propiedad ambiente de una ventana que contiene controles OLE.
virtual BOOL OnAmbientProperty(
COleControlSite* pSite,
DISPID dispid,
VARIANT* pvar);
Parámetros
pSite
Un puntero al sitio del control que ha solicitado la propiedad ambiente.
dispid
El Id. de distribución de la propiedad de ambiente solicitada.
pvar
Un puntero a una estructura VARIANT
asignada por el autor de la llamada, a través de la cual se devolverá el valor de la propiedad ambiente.
Valor devuelto
TRUE
si se admite la propiedad ambiente; FALSE
si no es así.
Comentarios
Invalide esta función para modificar los valores de propiedad ambiente predeterminados devueltos por un contenedor de controles OLE a sus controles. Las solicitudes de propiedad ambiente no controladas por una función de invalidación deben reenviarse a la implementación de la clase base.
CWnd::OnAppCommand
El marco llama a esta función miembro cuando el usuario genera un evento de comando de aplicación. Tal evento se produce cuando el usuario hace clic en un botón de comando de aplicación o escribe una clave de comando de aplicación.
afx_msg void OnAppCommand(
CWnd* pWnd,
UINT nCmd,
UINT nDevice,
UINT nKey);
Parámetros
pWnd
[entrada] Un puntero a un objeto CWnd
que representa la ventana en la que el usuario ha hecho clic en el botón de comando o presionado la tecla de comando. Esta ventana puede ser una ventana secundaria de la ventana que recibe el mensaje.
nCmd
[entrada] Indica el comando de aplicación. Para obtener una lista de los valores posibles, consulte los comandos en la sección cmd
del parámetro lParam
de WM_APPCOMMAND
.
nDevice
[entrada] El dispositivo de entrada que ha generado el evento de entrada. Para obtener una lista de los valores posibles, consulte los dispositivos en la sección uDevice
del parámetro lParam
de WM_APPCOMMAND
.
nKey
[entrada] Indica las teclas virtuales que están presionadas, como la tecla CTRL o el botón izquierdo del mouse. Para obtener una lista de los valores posibles, consulte las teclas en la sección dwKeys
del parámetro lParam
de WM_APPCOMMAND
. Para obtener más información, consulte la sección «Parámetros del mensaje» en Acerca de las entrada del mouse.
Comentarios
Este método recibe la notificación WM_APPCOMMAND
, descrita en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnAskCbFormatName
El marco llama a esta función miembro cuando el Portapapeles contiene un identificador de datos para el formato CF_OWNERDISPLAY
(cuando el propietario del Portapapeles muestre el contenido del Portapapeles).
afx_msg void OnAskCbFormatName(
UINT nMaxCount,
LPTSTR lpszString);
Parámetros
nMaxCount
Especifica el número máximo de bytes que se van a copiar.
lpszString
Apunta al búfer donde se va a almacenar la copia del nombre de formato.
Comentarios
El propietario del Portapapeles debe proporcionar un nombre para el formato.
Invalide esta función miembro y copie el nombre del formato CF_OWNERDISPLAY
en el búfer especificado, sin superar el número máximo de bytes especificados.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnCancelMode
El marco llama a esta función miembro para informar a CWnd
de que debe cancelar cualquier modo interno.
afx_msg void OnCancelMode();
Comentarios
Si el objeto CWnd
tiene el foco, se llama a su función miembro OnCancelMode
cuando se muestra un cuadro de diálogo o un cuadro de mensaje. Esto proporciona a CWnd
la oportunidad de cancelar modos como la captura del mouse.
La implementación predeterminada responde llamando a la función de Windows ReleaseCapture
. Invalide esta función miembro en la clase derivada para controlar otros modos.
CWnd::OnCaptureChanged
El marco llama a esta función miembro para notificar a la ventana que está perdiendo la captura del mouse.
afx_msg void OnCaptureChanged(CWnd* pWnd);
Parámetros
pWnd
Un puntero a la ventana para obtener la captura del mouse
Comentarios
Una ventana recibe este mensaje incluso si ella misma llama a ReleaseCapture
. Una aplicación no debe intentar establecer la captura del mouse en respuesta a este mensaje. Cuando recibe este mensaje, una ventana debe volver a dibujarse, si fuera necesario, para reflejar el nuevo estado de captura del mouse.
Consulte Windows SDK para obtener información sobre la función de Windows ReleaseCapture
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnChangeCbChain
El marco llama a esta función miembro para cada ventana de la cadena de visor del Portapapeles para notificarle que se está quitando una ventana de la cadena.
afx_msg void OnChangeCbChain(
HWND hWndRemove,
HWND hWndAfter);
Parámetros
hWndRemove
Especifica el identificador de ventana que se está quitando de la cadena de visor del Portapapeles.
hWndAfter
Especifica el identificador de ventana que sigue a la ventana que se está quitando de la cadena de visor del Portapapeles.
Comentarios
Cada objeto CWnd
que recibe una llamada de OnChangeCbChain
debe usar la función de Windows SendMessage
para enviar el mensaje WM_CHANGECBCHAIN
a la siguiente ventana de la cadena de visor del Portapapeles (el identificador devuelto por SetClipboardViewer
). Si hWndRemove
es la siguiente ventana de la cadena, la ventana especificada por hWndAfter
se convierte en la siguiente ventana y los mensajes del Portapapeles se pasan a ella.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnChangeUIState
Se llama cuando es necesario cambiar el estado de la interfaz de usuario.
afx_msg void OnChangeUIState(
UINT nAction,
UINT nUIElement);
Parámetros
nAction
Especifica la acción que se va a realizar. Puede ser uno de los siguientes valores:
UIS_CLEAR
El elemento de estado de la interfaz de usuario (especificado pornUIElement
) debe estar oculto.UIS_INITIALIZE
El elemento de estado de la interfaz de usuario (especificado pornUIElement
) debe cambiarse en función del último evento de entrada. Para obtener más información, consulte la sección Comentarios deWM_CHANGEUISTATE
.UIS_SET
El elemento de estado de la interfaz de usuario (especificado pornUIElement
) debe ser visible.
nUIElement
Especifica qué elementos de estado de la interfaz de usuario se ven afectados, o el estilo del control. Puede ser uno de los siguientes valores:
UISF_HIDEACCEL
Aceleradores de teclado.UISF_HIDEFOCUS
Indicadores de foco.UISF_ACTIVE
Windows XP: se debe dibujar un control en el estilo usado para los controles activos.
Comentarios
Esta función miembro se usa para emular la funcionalidad del mensaje WM_CHANGEUISTATE
, tal como se describe en Windows SDK.
CWnd::OnChar
El marco llama a esta función miembro cuando una pulsación de tecla se traduce en un carácter que no es del sistema.
afx_msg void OnChar(
UINT nChar,
UINT nRepCnt,
UINT nFlags);
Parámetros
nChar
Contiene el valor de código de carácter de la tecla.
nRepCnt
Contiene el recuento de repeticiones, el número de veces que se repite la pulsación de tecla cuando el usuario mantiene presionada la tecla.
nFlags
Contiene el código de examen, el código de transición de tecla, el estado de tecla anterior y el código de contexto, como se muestra en la lista siguiente:
Valor | Significado |
---|---|
0-15 | Especifica el recuento de repeticiones. El valor es el número de veces que se repite la pulsación de tecla como resultado de que el usuario mantenga presionada la tecla. |
16-23 | Especifica el código de examen. El valor depende del fabricante del equipo original (OEM). |
24 | Especifica si la tecla es una tecla extendida, como las teclas ALT y CTRL de la derecha que aparecen en un teclado mejorado de 101 o 102 teclas. El valor es 1 si es una tecla extendida; de lo contrario, es 0. |
25-28 | Windows los usa de manera interna. |
29 | Especifica el código de contexto. El valor es 1 si la tecla ALT se mantiene presionada mientras se presiona la tecla; de lo contrario, el valor es 0. |
30 | Especifica el estado de tecla anterior. El valor es 1 si la tecla está presionada antes de que se envíe el mensaje, o es 0 si la tecla no está presionada. |
31 | Especifica el estado de transición. El valor es 1 si se está liberando la tecla, o 0 si se está presionando la tecla. |
Comentarios
Se llama a esta función antes de que se llame a la función miembro OnKeyUp
y después de llamar a la función miembro OnKeyDown
. OnChar
contiene el valor de la tecla de teclado que se está presionando o liberando.
Dado que no hay necesariamente una correspondencia uno a uno entre las teclas presionadas y las llamadas de OnChar
que se generan, la información en nFlags
no suele ser útil para las aplicaciones. La información en nFlags
solo se aplica a la llamada más reciente a la función miembro OnKeyUp
o a la función miembro OnKeyDown
que precede a la llamada a OnChar
.
Para los teclados IBM mejorados con 101 o 102 teclas, las teclas mejoradas son las teclas ALT derecha y CTRL derecha en la sección principal del teclado; las teclas INS, SUPR, INICIO, FIN, REPÁG, AVPÁG y las teclas con flechas en los clústeres a la izquierda del teclado numérico, así como las teclas de barra diagonal (/) y ENTRAR en el teclado numérico. Otros teclados pueden admitir el bit de tecla extendida en nFlags
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnCharToItem
Se llama cuando un cuadro de lista con el estilo LBS_WANTKEYBOARDINPUT
envía a su propietario un mensaje WM_CHARTOITEM
en respuesta a un mensaje WM_CHAR
.
afx_msg int OnCharToItem(
UINT nChar,
CListBox* pListBox,
UINT nIndex);
Parámetros
nChar
Especifica el valor de la tecla presionada por el usuario.
pListBox
Especifica un puntero al cuadro de lista. Puede ser temporal.
nIndex
Especifica la posición actual del cursor de inserción.
Valor devuelto
El marco llama a esta función miembro para especificar la acción que ha realizado la aplicación en respuesta a la llamada. Si el valor devuelto es -2, la aplicación ha controlado todos los aspectos de la selección del elemento y no quiere ninguna acción adicional mediante el cuadro de lista. Si el valor devuelto es -1, el cuadro de lista debe realizar la acción predeterminada en respuesta a la pulsación de tecla. Un valor devuelto que sea 0 o mayor que 0 especifica el índice de base cero de un elemento en el cuadro de lista e indica que el cuadro de lista debe realizar la acción predeterminada para la pulsación de tecla en el elemento especificado.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnChildActivate
Si el objeto CWnd
es una ventana secundaria de la interfaz de varios documentos (MDI), el marco llama a OnChildActivate
cuando el usuario hace clic en la barra de título de la ventana, o bien cuando se activa o mueve la ventana o se ajusta su tamaño.
afx_msg void OnChildActivate();
CWnd::OnChildNotify
Esta ventana primaria de la ventana llama a esta función miembro cuando recibe un mensaje de notificación que se aplica a esta ventana.
virtual BOOL OnChildNotify(
UINT message,
WPARAM wParam,
LPARAM lParam,
LRESULT* pResult);
Parámetros
message
Un número de mensaje de Windows enviado a una ventana primaria.
wParam
El wparam asociado con el mensaje.
lParam
El lparam asociado con el mensaje.
pLResult
Un puntero a un valor que se va a devolver desde el procedimiento de ventana principal. Este puntero será NULL
si no se espera que se devuelva un valor.
Valor devuelto
Distinto de cero si esta ventana es responsable de controlar el mensaje enviado a su elemento primario; de lo contrario, 0.
Comentarios
Nunca llame a esta función miembro directamente.
La implementación predeterminada de esta función miembro devuelve 0, lo que significa que el elemento primario debe controlar el mensaje.
Invalide esta función miembro para ampliar la manera en que un control responde a los mensajes de notificación.
CWnd::OnClipboardUpdate
El marco llama a esta función miembro cuando el contenido del Portapapeles ha cambiado.
afx_msg void OnClipboardUpdate();
CWnd::OnClose
El marco llama a esta función miembro como señal de que se va a terminar CWnd
o una aplicación.
afx_msg void OnClose();
Comentarios
La implementación predeterminada llama a DestroyWindow
.
CWnd::OnColorizationColorChanged
El marco llama a este miembro cuando la directiva de representación del área no cliente ha cambiado.
afx_msg void OnColorizationColorChanged(
DWORD dwColorizationColor,
BOOL bOpacity);
Parámetros
dwColorizationColor
[entrada] Especifica el nuevo color de coloración. El formato de color es un número hexadecimal de la forma 0xAARRGGBB, donde cada uno de los cuatro componentes pertenece al intervalo de 0x00 a 0xFF. El componente AA es el valor alfa, RR es el color rojo, GG es verde y BB es azul.
bOpacity
[entrada] TRUE
si el nuevo color se combina con opacidad; FALSE
si no es así.
Comentarios
Este método recibe un mensaje de notificación WM_DWMNCRENDERINGCHANGED
, descrito en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnCommand
El marco llama a esta función miembro cuando el usuario selecciona un elemento de un menú, cuando un control secundario envía un mensaje de notificación o cuando se traduce una pulsación de tecla del acelerador.
virtual BOOL OnCommand(
WPARAM wParam,
LPARAM lParam);
Parámetros
wParam
La palabra de valor inferior de wParam
identifica el Id. de comando del elemento de menú, del control o del acelerador. La palabra de valor superior de wParam
especifica el mensaje de notificación si el mensaje procede de un control. Si el mensaje procede de un acelerador, la palabra de valor superior es 1. Si el mensaje procede de un menú, la palabra de valor superior es 0.
lParam
Identifica el control que envía el mensaje si el mensaje procede de un control. De lo contrario, lParam
es 0.
Valor devuelto
Una aplicación devuelve un valor distinto de cero si procesa este mensaje; de lo contrario, 0.
Comentarios
OnCommand
procesa el mapa de mensajes para la notificación de control y las entradas ON_COMMAND
, y llama a la función miembro adecuada.
Invalide esta función miembro en la clase derivada para controlar el mensaje WM_COMMAND
. Una invalidación no procesará el mapa de mensajes a menos que se llame a la clase base OnCommand
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnCompacting
El marco llama a esta función miembro para todas las ventanas de nivel superior cuando Windows detecta que más del 12,5 % del tiempo del sistema en un intervalo de 30 a 60 segundos se dedica a compactar memoria.
afx_msg void OnCompacting(UINT nCpuTime);
Parámetros
nCpuTime
Especifica la proporción de tiempo de CPU que Windows dedica a la compactación de memoria con respecto al tiempo de CPU dedicado a realizar otras operaciones. Por ejemplo, 8000 h representa el 50 % del tiempo de CPU dedicado a compactar memoria.
Comentarios
Esto indica que la memoria del sistema es baja.
Cuando un objeto CWnd
recibe esta llamada, debe liberar tanta memoria como sea posible, teniendo en cuenta el nivel actual de actividad de la aplicación y el número total de aplicaciones que se están ejecutando en Windows. La aplicación puede llamar a la función de Windows para determinar cuántas aplicaciones se están ejecutando.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnCompareItem
El marco llama a esta función miembro para especificar la posición relativa de un nuevo elemento en un cuadro combinado o un cuadro de lista, ambos secundarios, ordenados y de dibujo de propietario.
afx_msg int OnCompareItem(
int nIDCtl,
LPCOMPAREITEMSTRUCT lpCompareItemStruct);
Parámetros
nIDCtl
Identificador del control que ha enviado el mensaje WM_COMPAREITEM
.
lpCompareItemStruct
Contiene un puntero largo a una estructura de datos COMPAREITEMSTRUCT
que contiene los identificadores y los datos proporcionados por la aplicación para dos elementos del cuadro combinado o de lista.
Valor devuelto
Indica la posición relativa de los dos elementos. Puede ser cualquiera de los siguientes valores:
Valor | Significado |
---|---|
-1 | El elemento 1 se sitúa antes del elemento 2. |
0 | El elemento 1 y el elemento 2 se ordenan igual. |
1 | El elemento 1 se ordena después del elemento 2. |
Comentarios
Si se crea un cuadro combinado o de lista con el estilo CBS_SORT
o LBS_SORT
, Windows envía al propietario del cuadro combinado o de lista un mensaje WM_COMPAREITEM
cada vez que la aplicación agrega un nuevo elemento.
Dos elementos del cuadro combinado o de lista se reforman en una estructura COMPAREITEMSTRUCT
a la que apunta lpCompareItemStruct
. OnCompareItem
debe devolver un valor que indique cuál de los elementos debe aparecer antes del otro. Normalmente, Windows realiza esta llamada varias veces hasta que determina la posición exacta del nuevo elemento.
Si el miembro hwndItem
de la estructura COMPAREITEMSTRUCT
pertenece a un objeto CListBox
o CComboBox
, se llama a la función virtual CompareItem
de la clase adecuada. Invalide CComboBox::CompareItem
o CListBox::CompareItem
en la clase derivada CListBox
o CComboBox
para realizar la comparación de elementos.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnCompositionChanged
El marco llama a esta función miembro en relación con todas las ventanas de nivel superior cuando se habilita o deshabilita la composición del Administrador de ventanas de escritorio (DWM, de Desktop Window Manager).
afx_msg void OnCompositionChanged();
Comentarios
Este método recibe la notificación WM_DWMCOMPOSITIONCHANGED
, descrita en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnContextMenu
La llama el marco cuando el usuario ha hecho clic en la ventana con el botón derecho del mouse.
afx_msg void OnContextMenu(
CWnd* pWnd,
CPoint pos);
Parámetros
pWnd
El identificador de la ventana en la que el usuario ha hecho clic con el botón derecho del mouse. Esta ventana puede ser una ventana secundaria de la ventana que recibe el mensaje. Para obtener más información sobre cómo procesar este mensaje, consulte la sección Comentarios.
pos
La posición del cursor, en coordenadas de pantalla, en el momento del clic en el mouse.
Comentarios
Se puede procesar este mensaje mostrando un menú contextual mediante TrackPopupMenu
.
Si no se muestra un menú contextual, se debe pasar este mensaje a la función DefWindowProc
. Si la ventana es una ventana secundaria, DefWindowProc
envía el mensaje a la ventana primaria. De lo contrario, DefWindowProc
muestra un menú contextual predeterminado si la posición especificada está en el título de la ventana.
CWnd::OnCopyData
El marco llama a esta función miembro para copiar datos de una aplicación a otra.
afx_msg BOOL OnCopyData(
CWnd* pWnd,
COPYDATASTRUCT* pCopyDataStruct);
Parámetros
pWnd
Un puntero a un objeto CWnd
que envía los datos.
pCopyDataStruct
Un puntero a una estructura COPYDATASTRUCT
que contiene los datos que se envían.
Valor devuelto
Devuelve TRUE
si la aplicación receptora acepta correctamente los datos. De lo contrario, devuelve FALSE
.
Comentarios
Los datos que se pasan no deben contener punteros u otras referencias a objetos que no sean accesibles para la aplicación que recibe los datos.
Mientras se copian los datos, no debe cambiarlos ningún otro subproceso del proceso de envío.
La aplicación receptora debe tener en cuenta los datos de solo lectura. La estructura a la que apunta el parámetro pCopyDataStruct
solo es válida durante la transferencia de datos; sin embargo, la aplicación receptora no debe liberar la memoria asociada a la estructura.
Si la aplicación receptora necesita acceder a los datos después de que esta función vuelva, debe copiar los datos recibidos en un búfer local.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnCreate
El marco llama a esta función miembro cuando una aplicación solicita la creación de la ventana de Windows llamando a la función miembro Create
o CreateEx
.
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
Parámetros
lpCreateStruct
Un puntero a una estructura CREATESTRUCT
que contiene información sobre el objeto CWnd
que se está creando.
Valor devuelto
OnCreate
debe devolver 0 para continuar con la creación del objeto CWnd
. Si la aplicación devuelve -1, se destruirá la ventana.
Comentarios
El objeto CWnd
recibe esta llamada después de crear la ventana, pero antes de que se haga visible. Se llama a OnCreate
antes de que vuelva la función miembro Create
o CreateEx
.
Invalide esta función miembro para realizar cualquier inicialización necesaria de una clase derivada.
La estructura CREATESTRUCT
contiene copias de los parámetros usados para crear la ventana.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnCtlColor
El marco llama a esta función miembro cuando un control secundario está a punto de dibujarse.
afx_msg HBRUSH OnCtlColor(
CDC* pDC,
CWnd* pWnd,
UINT nCtlColor);
Parámetros
pDC
Contiene un puntero al contexto de visualización de la ventana secundaria. Puede ser temporal.
pWnd
Contiene un puntero al control que solicita el color. Puede ser temporal.
nCtlColor
Contiene uno de los valores siguientes, que especifica el tipo de control:
CTLCOLOR_BTN
Control de botónCTLCOLOR_DLG
Cuadro de diálogoCTLCOLOR_EDIT
Control de ediciónCTLCOLOR_LISTBOX
Control de cuadro de listaCTLCOLOR_MSGBOX
Cuadro de mensajeCTLCOLOR_SCROLLBAR
Control de barra de desplazamientoCTLCOLOR_STATIC
Control estático
Valor devuelto
OnCtlColor
debe devolver un identificador al pincel que se va a usar para pintar el fondo del control.
Comentarios
La mayoría de los controles envían este mensaje a su elemento primario (normalmente un cuadro de diálogo) para preparar el pDC
para dibujar el control con los colores correctos.
Para cambiar el color del texto, llame a la función miembro SetTextColor
con los valores rojo, verde y azul (RGB) deseados.
Para cambiar el color de fondo de un control de edición de una sola línea, establezca el identificador de pincel en los códigos de mensaje CTLCOLOR_EDIT
y CTLCOLOR_MSGBOX
, y llame a la función CDC::SetBkColor
en respuesta al código CTLCOLOR_EDIT
.
No se llamará a OnCtlColor
para el cuadro de lista de un cuadro combinado desplegable, porque el cuadro de lista desplegable es un elemento secundario del cuadro combinado y no un elemento secundario de la ventana. Para cambiar el color del cuadro de lista desplegable, cree un CComboBox
con una invalidación de OnCtlColor
que comprueba CTLCOLOR_LISTBOX
en el parámetro nCtlColor
. En este controlador, la función miembro SetBkColor
debe usarse para establecer el color de fondo del texto.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función. Para agregar el método siguiente a la clase de diálogo, use el panel de propiedades de Visual Studio para agregar un controlador de mensajes para WM_CTLCOLOR
. Como alternativa, puede agregar manualmente una entrada ON_WM_CTLCOLOR()
al mapa de mensajes.
Ejemplo
// This OnCtlColor handler will change the color of a static control
// with the ID of IDC_MYSTATIC. The code assumes that the CPenWidthsDlg
// class has an initialized and created CBrush member named m_brush.
// The control will be painted with red text and a background
// color of m_brush.
HBRUSH CPenWidthsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// Call the base class implementation first! Otherwise, it may
// undo what we're trying to accomplish here.
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// Are we painting the IDC_MYSTATIC control? We can use
// CWnd::GetDlgCtrlID() to perform the most efficient test.
if (pWnd->GetDlgCtrlID() == IDC_MYSTATIC)
{
// Set the text color to red
pDC->SetTextColor(RGB(255, 0, 0));
// Set the background mode for text to transparent
// so background will show thru.
pDC->SetBkMode(TRANSPARENT);
// Return handle to our CBrush object
hbr = m_brush;
}
return hbr;
}
CWnd::OnDeadChar
El marco llama a esta función miembro cuando se llama a la función miembro OnKeyUp
y a las funciones miembro OnKeyDown
.
afx_msg void OnDeadChar(
UINT nChar,
UINT nRepCnt,
UINT nFlags);
Parámetros
nChar
Especifica el valor del carácter de tecla inactiva.
nRepCnt
Especifica el recuento de repeticiones.
nFlags
Contiene el código de examen, el código de transición de teclas, el estado de tecla anterior y el código de contexto, como se muestra en la lista siguiente:
Valor | Descripción |
---|---|
0-7 | Código de examen (valor dependiente del OEM). Byte bajo de palabra de valor superior. |
8 | Tecla extendida, como una tecla de función o una tecla del teclado numérico (1 si es una tecla extendida; en caso contrario, 0). |
9-10 | No utilizado. |
11-12 | Windows los usa de manera interna. |
13 | Código de contexto (1 si se mantiene presionada la tecla ALT mientras se presiona la tecla; en caso contrario, 0). |
14 | Estado de tecla anterior (1 si la tecla está presionada antes de la llamada, 0 si la tecla no está presionada). |
15 | Estado de transición (1 si se está liberando la tecla, 0 si se está presionando la tecla). |
Comentarios
Esta función miembro se puede usar para especificar el valor de carácter de una tecla inactiva. Una tecla inactiva es una tecla como el carácter diéresis, que se combina con otros caracteres para formar un carácter compuesto. Por ejemplo, el carácter diéresis-O consiste en la tecla inactiva diéresis y la tecla O.
Normalmente, una aplicación usa OnDeadChar
para proporcionar información al usuario sobre cada tecla presionada. Por ejemplo, una aplicación puede mostrar el acento en la posición del carácter actual sin mover el cursor de inserción.
Dado que no hay necesariamente una correspondencia uno a uno entre las teclas presionadas y las llamadas de OnDeadChar
, en general la información en nFlags
no es útil para las aplicaciones. La información en nFlags
solo se aplica a la llamada más reciente a la función miembro OnKeyUp
o a la función miembro OnKeyDown
que precede a la llamada de OnDeadChar
.
Para los teclados IBM mejorados con 101 o 102 teclas, las teclas mejoradas son las teclas ALT derecha y CTRL derecha en la sección principal del teclado; las teclas INS, SUPR, INICIO, FIN, REPÁG, AVPÁG y las teclas con flechas en los clústeres a la izquierda del teclado numérico, así como las teclas de barra diagonal (/) y ENTRAR en el teclado numérico. Otros teclados pueden admitir el bit de tecla extendida en nFlags
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnDeleteItem
El marco llama a esta función miembro para informar al propietario de un cuadro de lista o cuadro combinado, ambos de dibujo de propietario, de que el cuadro de lista o el cuadro combinado se ha destruido o que se han quitado elementos mediante CComboBox::DeleteString
, CListBox::DeleteString
, CComboBox::ResetContent
o CListBox::ResetContent
.
afx_msg void OnDeleteItem(
int nIDCtl,
LPDELETEITEMSTRUCT lpDeleteItemStruct);
Parámetros
nIDCtl
Identificador del control que ha enviado el mensaje WM_DELETEITEM
.
lpDeleteItemStruct
Especifica un puntero largo a una estructura de datos DELETEITEMSTRUCT
que contiene información sobre el elemento de cuadro de lista eliminado.
Comentarios
Si el miembro hwndItem
de la estructura DELETEITEMSTRUCT
pertenece a un cuadro combinado o un cuadro de lista, se llama a la función virtual DeleteItem
de la clase adecuada. Invalide la función miembro DeleteItem
de la clase del control adecuada para eliminar datos específicos del elemento.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnDestroy
El marco llama a esta función miembro para informar al objeto CWnd
de que se está destruyendo.
afx_msg void OnDestroy();
Comentarios
Se llama a OnDestroy
después de quitar el objeto CWnd
de la pantalla.
Se llama primero a OnDestroy
para el CWnd
que se destruye y, a continuación, para las ventanas secundarias de CWnd
a medida que se destruyen. Se puede suponer que todas las ventanas secundarias siguen existiendo mientras se ejecuta OnDestroy
.
Si el objeto CWnd
que se destruye forma parte de la cadena de visor del Portapapeles (establecida mediante una llamada a la función miembro SetClipboardViewer
), el CWnd
debe quitarse a sí mismo de la cadena de visor del Portapapeles mediante la llamada a la función miembro ChangeClipboardChain
antes de volver de la función OnDestroy
.
CWnd::OnDestroyClipboard
El marco llama a esta función miembro para el propietario del Portapapeles cuando el Portapapeles se vacía a través de una llamada a la función de Windows EmptyClipboard
.
afx_msg void OnDestroyClipboard();
CWnd::OnDeviceChange
El marco llama a esta función miembro para notificar a una aplicación o un controlador de dispositivo de un cambio en la configuración de hardware de un dispositivo o del equipo.
afx_msg BOOL OnDeviceChange(
UINT nEventType,
DWORD_PTR dwData);
Parámetros
nEventType
Un tipo de evento. Consulte la sección Comentarios para obtener una descripción de los valores disponibles.
dwData
La dirección de una estructura que contiene datos específicos del evento. Su significado depende del evento especificado.
Comentarios
En el caso de los dispositivos que ofrecen características controlables por software, como la expulsión y el bloqueo, el sistema operativo normalmente envía un mensaje DBT_DEVICEREMOVEPENDING
para permitir que las aplicaciones y los controladores de dispositivos finalicen su uso del dispositivo correctamente.
Si el sistema operativo quita de forma forzada un dispositivo, es posible que no envíe un mensaje DBT_DEVICEQUERYREMOVE
antes de hacerlo.
El parámetro nEvent
puede ser uno de estos valores:
DBT_DEVICEARRIVAL
Se ha insertado un dispositivo y ya está disponible.DBT_DEVICEQUERYREMOVE
Se solicita permiso para quitar un dispositivo. Cualquier aplicación puede denegar esta solicitud y cancelar que se quite el dispositivo.DBT_DEVICEQUERYREMOVEFAILED
Se ha cancelado la solicitud para quitar un dispositivo.DBT_DEVICEREMOVEPENDING
El dispositivo está a punto de ser quitado. No se puede denegar.DBT_DEVICEREMOVECOMPLETE
Se ha quitado un dispositivo.DBT_DEVICETYPESPECIFIC
Evento específico del dispositivo.DBT_CONFIGCHANGED
Se ha cambiado la configuración actual.DBT_DEVNODES_CHANGED
Se ha cambiado el nodo del dispositivo.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnDevModeChange
El marco llama a esta función miembro para todos los objetos CWnd
de nivel superior cuando el usuario cambia la configuración del modo de dispositivo.
afx_msg void OnDevModeChange(LPTSTR lpDeviceName);
Parámetros
lpDeviceName
Apunta al nombre del dispositivo especificado en el archivo de inicialización de Windows, WIN.INI
.
Comentarios
Las aplicaciones que controlan el mensaje WM_DEVMODECHANGE
pueden reinicializar la configuración del modo de dispositivo. Las aplicaciones que usan la función ExtDeviceMode
de Windows para guardar y restaurar la configuración del dispositivo normalmente no procesan esta función.
No se llama a esta función cuando el usuario cambia la impresora predeterminada desde el panel de control. En este caso, se llama a la función OnWinIniChange
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnDrawClipboard
El marco llama a esta función miembro para cada ventana de la cadena de visor de Portapapeles cuando el contenido del Portapapeles cambia.
afx_msg void OnDrawClipboard();
Comentarios
Solo las aplicaciones que se han unido a la cadena de visor de Portapapeles mediante una llamada a la función miembro SetClipboardViewer
deben responder a esta llamada.
Cada ventana que recibe una llamada de OnDrawClipboard
debe llamar a la función de Windows SendMessage
para pasar un mensaje WM_DRAWCLIPBOARD
a la siguiente ventana de la cadena de visor de Portapapeles. La función miembro SetClipboardViewer
devuelve el identificador de la ventana siguiente; se puede modificar en respuesta a una llamada de función miembro OnChangeCbChain
.
CWnd::OnDrawIconicThumbnailOrLivePreview
El marco llama a este método cuando necesita obtener un mapa de bits para mostrarlo en la miniatura de pestañas de Windows 7 o en el cliente para ojear la aplicación.
virtual void OnDrawIconicThumbnailOrLivePreview(
CDC& dc,
CRect rect,
CSize szRequiredThumbnailSize,
BOOL bIsThumbnail,
BOOL& bAlphaChannelSet);
Parámetros
dc
Especifica el contexto del dispositivo.
rect
Especifica el rectángulo delimitador del área que se va a representar.
szRequiredThumbnailSize
Especifica el tamaño de la miniatura de destino. Se debe ignorar si bIsThumbnail
es FALSE
.
bIsThumbnail
Especifica si se llama a este método para miniaturas de icono o para vista previa dinámica (echar una ojeada).
bAlphaChannelSet
[salida] Establézcalo en TRUE
si la implementación inicializa el canal alfa de un mapa de bits seleccionado en dc
.
Comentarios
Invalide este método en una clase derivada y dibuje en el contexto de dispositivo especificado para personalizar la miniatura y echar una ojeada. Si bThumbnail
es TRUE
, se puede ignorar szRequiredThumbnailSize
. En este caso debe tener en cuenta que dibuja un mapa de bits de tamaño completo (es decir, un mapa de bits que cubre toda el área cliente). El contexto del dispositivo (dc
) viene con un mapa de bits seleccionado de 32 bits. La implementación predeterminada envía WM_PRINT
a esta ventana con marcas PRF_CLIENT
, PRF_CHILDREN
y PRF_NONCLIENT
.
CWnd::OnDrawItem
El marco llama a esta función miembro para el propietario de un control de botón de dibujo de propietario, control de cuadro combinado, control de cuadro de lista o menú cuando ha cambiado un aspecto visual del control o del menú.
afx_msg void OnDrawItem(
int nIDCtl,
LPDRAWITEMSTRUCT lpDrawItemStruct);
Parámetros
nIDCtl
Contiene el identificador del control que ha enviado el mensaje WM_DRAWITEM
. Si un menú ha enviado el mensaje, nIDCtl
contiene 0.
lpDrawItemStruct
Especifica un puntero largo a una estructura de datos DRAWITEMSTRUCT
que contiene información sobre el elemento que se va a dibujar y el tipo de dibujo necesario.
Comentarios
El miembro itemAction
de la estructura DRAWITEMSTRUCT
define la operación de dibujo que se va a realizar. Los datos de este miembro permiten al propietario del control determinar qué acción de dibujo es necesaria.
Antes de volver del procesamiento de este mensaje, una aplicación debe asegurarse de que el contexto del dispositivo identificado por el miembro hDC
de la estructura DRAWITEMSTRUCT
se restaure al estado predeterminado.
Si el miembro hwndItem
pertenece a un objeto CButton
, CMenu
, CListBox
o CComboBox, se llama a la función virtual DrawItem
de la clase adecuada. Invalide la función miembro DrawItem
de la clase del control adecuada para eliminar datos específicos del elemento.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnDropFiles
El marco llama esta función miembro cuando el usuario suelta el botón izquierdo del mouse en una ventana que se ha registrado a sí misma como destinataria de los archivos colocados.
afx_msg void OnDropFiles(HDROP hDropInfo);
Parámetros
hDropInfo
Un puntero a una estructura de datos interna que describe los archivos colocados. Las funciones de Windows DragFinish
, DragQueryFile
y DragQueryPoint
usan este identificador para recuperar información sobre los archivos colocados.
Comentarios
Normalmente, una clase derivada se diseñará para admitir archivos colocados y se registrará a sí misma durante la construcción de ventanas.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnEnable
El marco llama a esta función miembro cuando una aplicación cambia el estado habilitado del objeto CWnd
.
afx_msg void OnEnable(BOOL bEnable);
Parámetros
bEnable
Especifica si el objeto CWnd
se ha habilitado o deshabilitado. Este parámetro es TRUE
si se ha habilitado el CWnd
; es FALSE
si se ha deshabilitado el CWnd
.
Comentarios
Se llama a OnEnable
antes de que la función miembro EnableWindow
vuelva, pero después de que haya cambiado el estado habilitado de la ventana (bit de estilo WS_DISABLED
).
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnEndSession
El marco llama a esta función miembro después de que el objeto CWnd
haya devuelto un valor distinto de cero de una llamada de función miembro OnQueryEndSession
.
afx_msg void OnEndSession(BOOL bEnding);
Parámetros
bEnding
Especifica si se está finalizando o no la sesión. Es TRUE
si se está finalizando la sesión; de lo contrario, FALSE
.
Comentarios
La llamada de OnEndSession
informa al objeto CWnd
de si la sesión realmente está finalizando.
Si bEnding
es TRUE
, Windows puede finalizar en cualquier momento después de que todas las aplicaciones hayan vuelto del procesamiento de esta llamada. Por lo tanto, haga que una aplicación realice todas las tareas necesarias para la finalización dentro de OnEndSession
.
No es necesario llamar a la función miembro DestroyWindow
o a la función de Windows PostQuitMessage
cuando finaliza la sesión.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnEnterIdle
El marco llama a esta función miembro para informar al procedimiento de ventana principal de una aplicación de que un menú o un cuadro de diálogo modal está entrando en estado inactivo.
afx_msg void OnEnterIdle(
UINT nWhy,
CWnd* pWho);
Parámetros
nWhy
Especifica si el mensaje es el resultado de un cuadro de diálogo o de un menú que se muestra. Este parámetro puede establecerse con uno de los siguientes valores:
MSGF_DIALOGBOX
El sistema está inactivo porque se está mostrando un cuadro de diálogo.MSGF_MENU
El sistema está inactivo porque se está mostrando un menú.
pWho
Especifica un puntero al cuadro de diálogo (si nWhy
es MSGF_DIALOGBOX
) o la ventana que contiene el menú mostrado (si nWhy
es MSGF_MENU
). Este puntero puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Un cuadro de diálogo modal o menú entra en un estado inactivo cuando no hay ningún mensaje esperando en la cola después de haber procesado uno o varios mensajes anteriores.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnEnterMenuLoop
El marco llama a esta función miembro cuando se ha entrado en un bucle modal de menú.
afx_msg void OnEnterMenuLoop(BOOL bIsTrackPopupMenu);
Parámetros
bIsTrackPopupMenu
Especifica si el menú implicado es un menú emergente. Es distinto de cero si la función se ejecuta correctamente; de lo contrario, 0.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnEnterSizeMove
El marco llama a esta función miembro una vez después de que la ventana afectada entre en un bucle modal de movimiento o de ajuste de tamaño.
afx_msg void OnEnterSizeMove();
Comentarios
Este método recibe la notificación WM_ENTERSIZEMOVE
, descrita en Windows SDK.
Una ventana entra en un bucle modal de movimiento o de ajuste de tamaño cuando el usuario hace clic en la barra de título o en el borde de tamaño de la ventana, o cuando la ventana pasa el mensaje WM_SYSCOMMAND
a la función CWnd::DefWindowProc
y el parámetro wParam de ese mensaje especifica SC_MOVE
o SC_SIZE
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnEraseBkgnd
El marco llama a esta función miembro cuando es necesario borrar el fondo del objeto CWnd
(por ejemplo, cuando cambia de tamaño).
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
Parámetros
pDC
Especifica el objeto del contexto de dispositivo.
Valor devuelto
Distinto de cero si borra el fondo; de lo contrario, 0.
Comentarios
Se llama para preparar una región invalidada para que se pinte.
La implementación predeterminada borra el fondo mediante el pincel de fondo de la clase de ventana especificado por el miembro hbrBackground
de la estructura de la clase de ventana.
Si el miembro hbrBackground
es NULL
, la versión invalidada de OnEraseBkgnd
debe borrar el color de fondo. La versión también debe alinear el origen del pincel previsto con las coordenadas CWnd
llamando primero a UnrealizeObject
para el pincel y, a continuación, seleccionando el pincel.
Un OnEraseBkgnd
invalidado debe devolver un valor distinto de cero en respuesta a WM_ERASEBKGND
si procesa el mensaje y borra el fondo; esto indica que no se requiere un borrado adicional. Si devuelve 0, la ventana mantendrá la marca de que necesita ser borrada. (Normalmente, esto significa que el miembro fErase
de la estructura PAINTSTRUCT
será TRUE
).
Windows supone que el fondo se calcula con el modo de asignación MM_TEXT
. Si el contexto del dispositivo usa cualquier otro modo de asignación, es posible que el área borrada no esté dentro de la parte visible del área cliente.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnExitMenuLoop
El marco llama a esta función miembro cuando se sale de un bucle modal de menú.
afx_msg void OnExitMenuLoop(BOOL bIsTrackPopupMenu);
Parámetros
bIsTrackPopupMenu
Especifica si el menú implicado es un menú emergente. Es distinto de cero si la función se ejecuta correctamente; de lo contrario, 0.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnExitSizeMove
El marco llama a esta función miembro una vez después de que la ventana afectada salga de un bucle modal de movimiento o de ajuste de tamaño.
afx_msg void OnExitSizeMove();
Comentarios
Este método recibe la notificación WM_EXITSIZEMOVE
, descrita en Windows SDK.
Una ventana entra en un bucle modal de movimiento o de ajuste de tamaño cuando el usuario hace clic en la barra de título o en el borde de tamaño de la ventana, o cuando la ventana pasa el mensaje WM_SYSCOMMAND
a la función CWnd::DefWindowProc
y el parámetro wParam
de ese mensaje especifica SC_MOVE
o SC_SIZE
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnFontChange
Todas las ventanas de nivel superior del sistema reciben una llamada de OnFontChange
desde el marco después de que la aplicación cambie el grupo de recursos de fuente.
afx_msg void OnFontChange();
Comentarios
Una aplicación que agrega o quita fuentes del sistema (por ejemplo, a través de la función de Windows AddFontResource
o RemoveFontResource
) debe enviar el mensaje WM_FONTCHANGE
a todas las ventanas de nivel superior.
Para enviar este mensaje, use la función de Windows SendMessage
con el parámetro hWnd
establecido en HWND_BROADCAST
.
CWnd::OnGetDlgCode
Se llama en relación con un control para que el control pueda procesar por sí mismo las entradas de tecla de dirección y de tecla TAB.
afx_msg UINT OnGetDlgCode();
Valor devuelto
Uno o varios de los siguientes valores, que indican qué tipo de entrada procesa la aplicación:
DLGC_BUTTON
Botón (genérico).DLGC_DEFPUSHBUTTON
Botón de inserción predeterminado.DLGC_HASSETSEL
EM_SETSEL
Mensajes.DLGC_UNDEFPUSHBUTTON
Procesamiento no predeterminado del botón de inserción. (Una aplicación puede usar esta marca conDLGC_BUTTON
para indicar que procesa la entrada del botón, pero se basa en el sistema para el procesamiento predeterminado del botón de inserción).DLGC_RADIOBUTTON
Botón de radio.DLGC_STATIC
Control estático.DLGC_WANTALLKEYS
Todas las entradas mediante teclado.DLGC_WANTARROWS
Teclas de dirección.DLGC_WANTCHARS
WM_CHAR
Mensajes.DLGC_WANTMESSAGE
Todas las entradas mediante teclado. La aplicación pasa este mensaje al control.DLGC_WANTTAB
Tecla TAB.
Comentarios
Normalmente, Windows controla todas las entradas de tecla de dirección y tecla TAB en un control CWnd
. Al invalidar OnGetDlgCode
, un control CWnd
puede elegir un tipo determinado de entrada para procesarse a sí mismo.
Las funciones OnGetDlgCode
predeterminadas de las clases de control predefinidas devuelven un código adecuado para cada clase.
CWnd::OnGetMinMaxInfo
El marco llama a esta función miembro siempre que Windows necesita conocer la posición o dimensiones maximizadas, o el tamaño de seguimiento mínimo o máximo.
afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
Parámetros
lpMMI
Apunta a una estructura MINMAXINFO
que contiene información sobre el tamaño y la posición maximizados de una ventana, así como su tamaño de seguimiento mínimo y máximo. Para obtener más información sobre esta estructura, consulte la estructura MINMAXINFO
.
Comentarios
El tamaño maximizado es el tamaño de la ventana cuando sus bordes están totalmente extendidos. El tamaño máximo de seguimiento de la ventana es el tamaño de ventana más grande que se puede lograr al ajustar el tamaño de la ventana con los bordes. El tamaño mínimo de seguimiento de la ventana es el tamaño de ventana más pequeño que se puede lograr al ajustar el tamaño de la ventana con los bordes.
Windows rellena una matriz de puntos que especifican valores predeterminados para las distintas posiciones y dimensiones. La aplicación puede cambiar estos valores en OnGetMinMaxInfo
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnHelp
Controla la Ayuda de F1 de la aplicación (usando el contexto actual).
afx_msg void OnHelp();
Comentarios
Vea CWinApp::OnHelp
para obtener más información.
CWnd::OnHelpFinder
Controla los comandos ID_HELP_FINDER
y ID_DEFAULT_HELP
.
afx_msg void OnHelpFinder();
Comentarios
Vea CWinApp::OnHelpFinder
para obtener más información.
CWnd::OnHelpIndex
Controla el comando ID_HELP_INDEX
y proporciona un tema de Ayuda predeterminado.
afx_msg void OnHelpIndex();
Comentarios
Vea CWinApp::OnHelpIndex
para obtener más información.
CWnd::OnHelpInfo
El marco llama a este método cuando el usuario presiona la tecla F1.
afx_msg BOOL OnHelpInfo(HELPINFO* lpHelpInfo);
Parámetros
lpHelpInfo
Un puntero a una estructura HELPINFO
que contiene información sobre el elemento de menú, el control, el cuadro de diálogo o la ventana para el que se solicita ayuda.
Valor devuelto
Devuelve TRUE
si una ventana tiene el foco del teclado o si un menú está activo dentro de una ventana. Si ninguna ventana tiene el foco del teclado, devuelve FALSE
.
Comentarios
Si un menú está activo cuando se presiona F1, WM_HELP
se envía a la ventana asociada al menú; de lo contrario, WM_HELP
se envía a la ventana que tiene el foco del teclado. Si no hay ninguna ventana con el foco del teclado, WM_HELP
se envía a la ventana activa actualmente.
CWnd::OnHelpUsing
Controla el comando ID_HELP_USING
.
afx_msg void OnHelpUsing();
Comentarios
Vea CWinApp::OnHelpUsing
para obtener más información.
CWnd::OnHotKey
El marco llama a esta función miembro cuando el usuario presiona una tecla de acceso rápido para todo el sistema.
afx_msg void OnHotKey(
UINT nHotKeyId,
UINT nKey1,
UINT nKey2);
Parámetros
nHotKeyId
[entrada] El identificador de la tecla de acceso rápido que ha generado el mensaje. Si el mensaje lo ha generado una tecla de acceso rápido definida por el sistema, este parámetro tendrá uno de los siguientes valores:
IDHOT_SNAPDESKTOP
: se ha presionado la tecla de acceso rápido para acoplar el escritorio.IDHOT_SNAPWINDOW
: se ha presionado la tecla de acceso rápido para acoplar la ventana.
nKey1
[entrada] Una combinación bit a bit (OR) de marcas que indican las teclas que se han presionado en combinación con la tecla especificada por el parámetro nKey2
. Los valores posibles son:
MOD_ALT
: se ha presionado cualquier tecla ALT.MOD_CONTROL
: se ha presionado cualquier tecla CTRL.MOD_SHIFT
: se ha presionado la tecla MAYÚS.MOD_WIN
: se ha presionado cualquier tecla WINDOWS. Estas teclas están etiquetadas con el logotipo de Microsoft Windows.
nKey2
[entrada] El código de tecla virtual de la tecla de acceso rápido.
Comentarios
Este método recibe la notificación WM_HOTKEY
, descrita en Windows SDK. Este mensaje se coloca en la parte superior de la cola de mensajes asociada al subproceso que ha registrado la tecla de acceso rápido. Use la función RegisterHotKey
para registrar una tecla de acceso rápido para todo el sistema.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnHScroll
El marco llama a esta función miembro cuando el usuario hace clic en la barra de desplazamiento horizontal de una ventana.
afx_msg void OnHScroll(
UINT nSBCode,
UINT nPos,
CScrollBar* pScrollBar);
Parámetros
nSBCode
Especifica un código de barra de desplazamiento que indica la solicitud de desplazamiento del usuario. Este parámetro puede ser uno de los siguientes:
SB_LEFT
Desplazamiento hasta el extremo izquierdo.SB_ENDSCROLL
Fin del desplazamiento.SB_LINELEFT
Desplazamiento a la izquierda.SB_LINERIGHT
Desplazamiento a la derecha.SB_PAGELEFT
Desplazamiento de una página hacia la izquierda.SB_PAGERIGHT
Desplazamiento de una página hacia la derecha.SB_RIGHT
Desplazamiento hasta el extremo derecho.SB_THUMBPOSITION
Desplazamiento hasta la posición absoluta. El parámetronPos
especifica la posición actual.SB_THUMBTRACK
Arrastre del cuadro de desplazamiento hasta la posición especificada. El parámetronPos
especifica la posición actual.
nPos
Especifica la posición del cuadro de desplazamiento si el código de barra de desplazamiento es SB_THUMBPOSITION
o SB_THUMBTRACK
; de lo contrario, no se usa. En función del intervalo de desplazamiento inicial, nPos
puede ser negativo y debe convertirse a un int
si es necesario.
pScrollBar
Si el mensaje de desplazamiento procede de un control de barra de desplazamiento, contiene un puntero al control. Si el usuario hace clic en la barra de desplazamiento de una ventana, este parámetro es NULL
. El puntero puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Normalmente, el código de barra de desplazamiento SB_THUMBTRACK
lo usan las aplicaciones que proporcionan información mientras se arrastra el cuadro de desplazamiento.
Si una aplicación desplaza el contenido controlado por la barra de desplazamiento, también debe restablecer la posición del cuadro de desplazamiento con la función miembro SetScrollPos
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
Ejemplo
void CMdiView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar)
{
// Get the minimum and maximum scroll-bar positions.
int minpos;
int maxpos;
GetScrollRange(SB_HORZ, &minpos, &maxpos);
maxpos = GetScrollLimit(SB_HORZ);
// Get the current position of scroll box.
int curpos = GetScrollPos(SB_HORZ);
// Determine the new position of scroll box.
switch (nSBCode)
{
case SB_LEFT: // Scroll to far left.
curpos = minpos;
break;
case SB_RIGHT: // Scroll to far right.
curpos = maxpos;
break;
case SB_ENDSCROLL: // End scroll.
break;
case SB_LINELEFT: // Scroll left.
if (curpos > minpos)
curpos--;
break;
case SB_LINERIGHT: // Scroll right.
if (curpos < maxpos)
curpos++;
break;
case SB_PAGELEFT: // Scroll one page left.
{
// Get the page size.
SCROLLINFO info;
GetScrollInfo(SB_HORZ, &info, SIF_ALL);
if (curpos > minpos)
curpos = max(minpos, curpos - (int)info.nPage);
}
break;
case SB_PAGERIGHT: // Scroll one page right.
{
// Get the page size.
SCROLLINFO info;
GetScrollInfo(SB_HORZ, &info, SIF_ALL);
if (curpos < maxpos)
curpos = min(maxpos, curpos + (int)info.nPage);
}
break;
case SB_THUMBPOSITION: // Scroll to absolute position. nPos is the position
curpos = nPos; // of the scroll box at the end of the drag operation.
break;
case SB_THUMBTRACK: // Drag scroll box to specified position. nPos is the
curpos = nPos; // position that the scroll box has been dragged to.
break;
}
// Set the new position of the thumb (scroll box).
SetScrollPos(SB_HORZ, curpos);
CView::OnHScroll(nSBCode, nPos, pScrollBar);
}
CWnd::OnHScrollClipboard
El visor del Portapapeles llama a la función miembro OnHScrollClipboard
del propietario del Portapapeles cuando los datos del Portapapeles tienen el formato CF_OWNERDISPLAY
y hay un evento en la barra de desplazamiento horizontal del visor del Portapapeles.
afx_msg void OnHScrollClipboard(
CWnd* pClipAppWnd,
UINT nSBCode,
UINT nPos);
Parámetros
pClipAppWnd
Especifica un puntero a una ventana del visor del Portapapeles. El puntero puede ser temporal y no se debe almacenar para su uso posterior.
nSBCode
Especifica uno de los siguientes códigos de barra de desplazamiento en la palabra de valor inferior:
SB_BOTTOM
Desplazamiento a la esquina inferior derecha.SB_ENDSCROLL
Fin del desplazamiento.SB_LINEDOWN
Desplazamiento de una línea hacia abajo.SB_LINEUP
Desplazamiento de una línea hacia arriba.SB_PAGEDOWN
Desplazamiento de una página hacia abajo.SB_PAGEUP
Desplazamiento de una página hacia arriba.SB_THUMBPOSITION
Desplazamiento a la posición absoluta. La posición actual se proporciona ennPos
.SB_TOP
Desplazamiento a la esquina superior izquierda.
nPos
Especifica la posición del cuadro de desplazamiento si el código de barra de desplazamiento es SB_THUMBPOSITION
; de lo contrario, no se usa.
Comentarios
El propietario tiene que desplazarse por la imagen del Portapapeles, invalidar la sección correspondiente y actualizar los valores de la barra de desplazamiento.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnIconEraseBkgnd
El marco llama a esta función miembro para un objeto minimizado (icono ) CWnd
cuando el fondo del icono debe rellenarse antes de pintar el icono.
afx_msg void OnIconEraseBkgnd(CDC* pDC);
Parámetros
pDC
Especifica el objeto del contexto de dispositivo del icono. Puede ser temporal y no debe almacenarse para su uso posterior.
Comentarios
CWnd
recibe esta llamada solo si se define un icono de clase para la implementación predeterminada de la ventana; de lo contrario, se llama a OnEraseBkgnd
.
La función miembro DefWindowProc
rellena el fondo del icono con el pincel de fondo de la ventana primaria.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnInitMenu
El marco llama a esta función miembro cuando un menú está a punto de activarse.
afx_msg void OnInitMenu(CMenu* pMenu);
Parámetros
pMenu
Especifica el menú que se va a inicializar. Puede ser temporal y no debe almacenarse para su uso posterior.
Comentarios
Se llama a OnInitMenu
cuando el usuario hace clic en un elemento de la barra de menús o presiona una tecla de menú. Invalide esta función miembro para modificar el menú antes de que se muestre.
Solo se llama a OnInitMenu
una vez, cuando se accede por primera vez a un menú (por ejemplo, cuando un usuario hace clic en un elemento de la barra de menús). Este método no proporciona información sobre los elementos de menú. No se llama a la función de nuevo cuando el usuario se mueve a los elementos del menú (por ejemplo, moviendo el mouse a través de varios elementos de menú). Una vez que el usuario sale del menú (por ejemplo, haciendo clic en el área cliente de la aplicación) y después hace clic en un elemento de la barra de menús, se volverá a llamar a la función.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnInitMenuPopup
El marco llama a esta función miembro cuando está a punto de activarse un menú emergente.
afx_msg void OnInitMenuPopup(
CMenu* pPopupMenu,
UINT nIndex,
BOOL bSysMenu);
Parámetros
pPopupMenu
Especifica el objeto de menú del menú emergente. Puede ser temporal y no debe almacenarse para su uso posterior.
nIndex
Especifica el índice del menú emergente en el menú principal.
bSysMenu
TRUE
si el menú emergente es el menú Control; de lo contrario, FALSE
.
Comentarios
Esto permite a una aplicación modificar el menú emergente antes de que se muestre sin cambiar todo el menú.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnInputDeviceChange
El marco llama a esta función miembro cuando se agrega o quita un dispositivo de E/S del sistema.
afx_msg void OnInputDeviceChange(unsigned short uFlag);
Parámetros
uFlag
[entrada] Esta marca puede tomar los siguientes valores:
GIDC_ARRIVAL
: Se ha agregado un nuevo dispositivo al sistema.GIDC_REMOVAL
: Se ha quitado un dispositivo del sistema.
Comentarios
Este método recibe la notificación WM_INPUT_DEVICE_CHANGE
, descrita en Windows SDK. Es un mensaje de dispositivo de entrada genérico.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnInputLangChange
El marco llama a este miembro para la ventana de más alto nivel afectada después de que se haya cambiado el idioma de entrada de una aplicación.
afx_msg void OnInputLangChange(
UINT nCharSet,
UINT nLocaleId);
Parámetros
nCharSet
[entrada] Conjunto de caracteres de la nueva configuración regional. Para obtener más información, vea el parámetro lfCharSet
de la estructura LOGFONT
.
nLocaleId
[entrada] El identificador de configuración regional de entrada. Para obtener más información, vea Constantes y cadenas de identificador de idioma.
Comentarios
Este método recibe un mensaje de notificación WM_INPUTLANGCHANGE
, descrito en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnInputLangChangeRequest
El marco llama a este miembro para la ventana con el foco cuando el usuario elige un nuevo idioma de entrada.
afx_msg void OnInputLangChangeRequest(
UINT nFlags,
UINT nLocaleId);
Parámetros
nFlags
[entrada] Una combinación bit a bit (OR) de marcas que indica que la nueva configuración regional se ha seleccionado de la configuración regional anterior o siguiente en la lista de configuraciones regionales instaladas, o que el nuevo diseño de teclado de la configuración regional de entrada se puede usar con el juego de caracteres del sistema. Los valores posibles son INPUTLANGCHANGE_BACKWARD
, INPUTLANGCHANGE_FORWARD
y INPUTLANGCHANGE_SYSCHARSET
.
nLocaleId
[entrada] El identificador de configuración regional de entrada. Para obtener más información, vea Constantes y cadenas de identificador de idioma.
Comentarios
Este método recibe un mensaje de notificación WM_INPUTLANGCHANGEREQUEST
, descrito en Windows SDK. Este mensaje se publica cuando el usuario elige un nuevo idioma de entrada con una tecla de acceso rápido especificada en la aplicación del panel de control de teclado o desde el indicador de la barra de tareas del sistema.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnKeyDown
El marco llama a esta función miembro cuando se presiona una tecla no del sistema.
afx_msg void OnKeyDown(
UINT nChar,
UINT nRepCnt,
UINT nFlags);
Parámetros
nChar
Especifica el código de tecla virtual de la tecla dada. Para obtener una lista de códigos de tecla virtual estándar, consulte Winuser.h.
nRepCnt
El recuento de repeticiones (el número de veces que se repite la pulsación de tecla como resultado de que el usuario mantenga presionada la tecla).
nFlags
Contiene el código de examen, el código de transición de teclas, el estado de tecla anterior y el código de contexto, como se muestra en la lista siguiente:
Valor | Descripción |
---|---|
0-7 | Código de examen (valor dependiente del OEM). |
8 | Tecla extendida, como una tecla de función o una tecla en el teclado numérico (1 si es una tecla extendida). |
9-10 | No utilizado. |
11-12 | Windows los usa de manera interna. |
13 | Código de contexto (1 si se mantiene presionada la tecla ALT mientras se presiona la tecla; en caso contrario, 0). |
14 | Estado de tecla anterior (1 si la tecla está presionada antes de la llamada, 0 si la tecla no está presionada). |
15 | Estado de transición (1 si se está liberando la tecla, 0 si se está presionando la tecla). |
Para un mensaje WM_KEYDOWN
, el bit de transición de tecla (bit 15) es 0, y el bit de código de contexto (bit 13) es 0.
Comentarios
Una tecla no del sistema es una tecla de teclado que se presiona cuando la tecla ALT no está presionada o cuando CWnd
tiene el foco de entrada.
Debido a la repetición automática, puede producirse más de una llamada de OnKeyDown
antes de que se realice una llamada de función miembro OnKeyUp
. El bit que indica el estado de tecla anterior se puede usar para determinar si la llamada OnKeyDown
es la primera transición descendente o una transición descendente repetida.
Para los teclados IBM mejorados con 101 o 102 teclas, las teclas mejoradas son las teclas ALT derecha y CTRL derecha en la sección principal del teclado; las teclas INS, SUPR, INICIO, FIN, REPÁG, AVPÁG y las teclas con flechas en los clústeres a la izquierda del teclado numérico, así como las teclas de barra diagonal (/) y ENTRAR en el teclado numérico. Otros teclados pueden admitir el bit de tecla extendida en nFlags
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnKeyUp
El marco llama a esta función miembro cuando se presiona una tecla no del sistema.
afx_msg void OnKeyUp(
UINT nChar,
UINT nRepCnt,
UINT nFlags);
Parámetros
nChar
Especifica el código de tecla virtual de la tecla dada. Para obtener una lista de códigos de tecla virtual estándar, consulte Winuser.h
.
nRepCnt
El recuento de repeticiones (el número de veces que se repite la pulsación de tecla como resultado de que el usuario mantenga presionada la tecla).
nFlags
Contiene el código de examen, el código de transición de teclas, el estado de tecla anterior y el código de contexto, como se muestra en la lista siguiente:
Valor | Descripción |
---|---|
0-7 | Código de examen (valor dependiente del OEM). Byte bajo de palabra de valor superior. |
8 | Tecla extendida, como una tecla de función o una tecla del teclado numérico (1 si es una tecla extendida; en caso contrario, 0). |
9-10 | No utilizado. |
11-12 | Windows los usa de manera interna. |
13 | Código de contexto (1 si se mantiene presionada la tecla ALT mientras se presiona la tecla; en caso contrario, 0). |
14 | Estado de tecla anterior (1 si la tecla está presionada antes de la llamada, 0 si la tecla no está presionada). |
15 | Estado de transición (1 si se está liberando la tecla, 0 si se está presionando la tecla). |
Para un mensaje WM_KEYUP
, el bit de transición de tecla (bit 15) es 1, y el bit de código de contexto (bit 13) es 0.
Comentarios
Una tecla no del sistema es una tecla de teclado que se presiona cuando la tecla ALT no está presionada o cuando el CWnd
tiene el foco de entrada.
Para los teclados IBM mejorados con 101 o 102 teclas, las teclas mejoradas son las teclas ALT derecha y CTRL derecha en la sección principal del teclado; las teclas INS, SUPR, INICIO, FIN, REPÁG, AVPÁG y las teclas con flechas en los clústeres a la izquierda del teclado numérico, así como las teclas de barra diagonal (/) y ENTRAR en el teclado numérico. Algunos teclados pueden admitir el bit de tecla extendida en nFlags.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnKillFocus
El marco llama a esta función miembro inmediatamente antes de perder el foco de entrada.
afx_msg void OnKillFocus(CWnd* pNewWnd);
Parámetros
pNewWnd
Especifica un puntero a la ventana que recibe el foco de entrada (puede ser NULL
o puede ser temporal).
Comentarios
Si el objeto CWnd
está mostrando un cursor de inserción, el cursor de inserción debe destruirse en este momento.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnLButtonDblClk
El marco llama a esta función miembro cuando el usuario hace doble clic en el botón izquierdo del mouse.
afx_msg void OnLButtonDblClk(
UINT nFlags,
CPoint point);
Parámetros
nFlags
Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser una combinación de los siguientes valores:
MK_CONTROL
Se establece si la tecla CTRL está presionada.MK_LBUTTON
Se establece si el botón izquierdo del mouse está presionado.MK_MBUTTON
Se establece si el botón central del mouse está presionado.MK_RBUTTON
Se establece si el botón derecho del mouse está presionado.MK_SHIFT
Se establece si la tecla MAYÚS está presionada.
point
Especifica las coordenadas x e y del cursor. Las coordenadas siempre son relativas a la esquina superior izquierda de la ventana.
Comentarios
Solo las ventanas que tengan el CS_DBLCLKS
WNDCLASS
estilo recibirán OnLButtonDblClk
llamadas. Este es el valor predeterminado para las ventanas de Microsoft Foundation Class. Windows llama a OnLButtonDblClk
cuando el usuario presiona, suelta y, a continuación, vuelve a presionar el botón izquierdo del mouse dentro del límite de tiempo de doble clic del sistema. Al hacer doble clic en el botón izquierdo del mouse, se generan cuatro eventos: los mensajes WM_LBUTTONDOWN
y WM_LBUTTONUP
, la llamada de WM_LBUTTONDBLCLK
y otro mensaje WM_LBUTTONUP
cuando se suelta el botón.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnLButtonDown
El marco llama a esta función miembro cuando el usuario presiona el botón izquierdo del mouse.
afx_msg void OnLButtonDown(
UINT nFlags,
CPoint point);
Parámetros
nFlags
Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser una combinación de los siguientes valores:
MK_CONTROL
Se establece si la tecla CTRL está presionada.MK_LBUTTON
Se establece si el botón izquierdo del mouse está presionado.MK_MBUTTON
Se establece si el botón central del mouse está presionado.MK_RBUTTON
Se establece si el botón derecho del mouse está presionado.MK_SHIFT
Se establece si la tecla MAYÚS está presionada.
point
Especifica las coordenadas x e y del cursor. Las coordenadas siempre son relativas a la esquina superior izquierda de la ventana.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnLButtonUp
El marco llama a esta función miembro cuando el usuario suelta el botón izquierdo del mouse.
afx_msg void OnLButtonUp(
UINT nFlags,
CPoint point);
Parámetros
nFlags
Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser una combinación de los siguientes valores:
MK_CONTROL
Se establece si la tecla CTRL está presionada.MK_MBUTTON
Se establece si el botón central del mouse está presionado.MK_RBUTTON
Se establece si el botón derecho del mouse está presionado.MK_SHIFT
Se establece si la tecla MAYÚS está presionada.
point
Especifica las coordenadas x e y del cursor. Las coordenadas siempre son relativas a la esquina superior izquierda de la ventana.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMButtonDblClk
El marco llama a esta función miembro cuando el usuario hace doble clic en el botón central del mouse.
afx_msg void OnMButtonDblClk(
UINT nFlags,
CPoint point);
Parámetros
nFlags
Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser una combinación de los siguientes valores:
MK_CONTROL
Se establece si la tecla CTRL está presionada.MK_LBUTTON
Se establece si el botón izquierdo del mouse está presionado.MK_MBUTTON
Se establece si el botón central del mouse está presionado.MK_RBUTTON
Se establece si el botón derecho del mouse está presionado.MK_SHIFT
Se establece si la tecla MAYÚS está presionada.
point
Especifica las coordenadas x e y del cursor. Las coordenadas siempre son relativas a la esquina superior izquierda de la ventana.
Comentarios
Solo las ventanas que tengan el CS_DBLCLKS
WNDCLASS
estilo recibirán OnMButtonDblClk
llamadas. Este es el valor predeterminado para las ventanas de Microsoft Foundation Class. Windows genera una llamada de OnMButtonDblClk
cuando el usuario presiona, suelta y, a continuación, vuelve a presionar el botón central del mouse dentro del límite de tiempo de doble clic del sistema. Al hacer doble clic en el botón central del mouse, se generan cuatro eventos: los mensajes WM_MBUTTONDOWN
y WM_MBUTTONUP
, la llamada de WM_MBUTTONDBLCLK
y otro mensaje WM_MBUTTONUP
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMButtonDown
El marco llama a esta función miembro cuando el usuario presiona el botón central del mouse.
afx_msg void OnMButtonDown(
UINT nFlags,
CPoint point);
Parámetros
nFlags
Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser una combinación de los siguientes valores:
MK_CONTROL
Se establece si la tecla CTRL está presionada.MK_LBUTTON
Se establece si el botón izquierdo del mouse está presionado.MK_MBUTTON
Se establece si el botón central del mouse está presionado.MK_RBUTTON
Se establece si el botón derecho del mouse está presionado.MK_SHIFT
Se establece si la tecla MAYÚS está presionada.
point
Especifica las coordenadas x e y del cursor. Las coordenadas siempre son relativas a la esquina superior izquierda de la ventana.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMButtonUp
El marco llama a esta función miembro cuando el usuario suelta el botón central del mouse.
afx_msg void OnMButtonUp(
UINT nFlags,
CPoint point);
Parámetros
nFlags
Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser una combinación de los siguientes valores:
MK_CONTROL
Se establece si la tecla CTRL está presionada.MK_LBUTTON
Se establece si el botón izquierdo del mouse está presionado.MK_RBUTTON
Se establece si el botón derecho del mouse está presionado.MK_SHIFT
Se establece si la tecla MAYÚS está presionada.
point
Especifica las coordenadas x e y del cursor. Las coordenadas siempre son relativas a la esquina superior izquierda de la ventana.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMDIActivate
El marco llama a esta función miembro para la ventana secundaria que se desactiva y para la ventana secundaria que se activa.
afx_msg void OnMDIActivate(
BOOL bActivate,
CWnd* pActivateWnd,
CWnd* pDeactivateWnd);
Parámetros
bActivate
TRUE
si el elemento secundario se está activando y FALSE
si se está desactivando.
pActivateWnd
Contiene un puntero a la ventana secundaria MDI que se va a activar. Cuando lo recibe una ventana secundaria MDI, pActivateWnd
contiene un puntero a la ventana secundaria que se está activando. Este puntero puede ser temporal y no se debe almacenar para su uso posterior.
pDeactivateWnd
Contiene un puntero a la ventana secundaria MDI que se está desactivando. Este puntero puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Una ventana secundaria MDI se activa independientemente de la ventana de marco MDI. Cuando el marco se activa, la ventana secundaria que se ha activado por última vez con una llamada de OnMDIActivate
recibe un mensaje WM_NCACTIVATE
para dibujar un marco de ventana activo y una barra de título, pero no recibe otra llamada de OnMDIActivate
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMeasureItem
El marco llama a esta función miembro mediante el marco para el propietario de un botón de dibujo de propietario, un cuadro combinado, un cuadro de lista o un elemento de menú cuando se crea el control.
afx_msg void OnMeasureItem(
int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
Parámetros
nIDCtl
Identificador del control.
lpMeasureItemStruct
Apunta a una estructura de datos MEASUREITEMSTRUCT
que contiene las dimensiones del control de dibujo de propietario.
Comentarios
Invalide esta función miembro y rellene la estructura de datos MEASUREITEMSTRUCT
a la que apunta lpMeasureItemStruct
y vuelva; esto informa a Windows de las dimensiones del control y permite a Windows procesar correctamente la interacción del usuario con el control.
Si se crea un cuadro de lista o un cuadro combinado con el estilo LBS_OWNERDRAWVARIABLE
o CBS_OWNERDRAWVARIABLE
, el marco llama a esta función para el propietario de cada elemento del control; de lo contrario, se llama a esta función una vez.
Windows inicia la llamada a OnMeasureItem
para el propietario de cuadros combinados y cuadros de lista creados con el estilo OWNERDRAWFIXED
antes de enviar el mensaje WM_INITDIALOG
. Como resultado, cuando el propietario recibe esta llamada, Windows aún no ha determinado el alto y el ancho de la fuente utilizada en el control; las llamadas de función y los cálculos que requieren estos valores deben producirse en la función principal de la aplicación o biblioteca.
Si el elemento que se mide es un objeto CMenu
, CListBox
o CComboBox
, se llama a la función virtual MeasureItem
de la clase adecuada. Invalide la función miembro MeasureItem
de la clase de control adecuada para calcular y establecer el tamaño de cada elemento.
Se llamará a OnMeasureItem
sólo si la clase del control se crea en tiempo de ejecución o se crea con el estilo LBS_OWNERDRAWVARIABLE
o CBS_OWNERDRAWVARIABLE
. Si es el editor de diálogos el que crea el control, no se llamará a OnMeasureItem
. Esto se debe a que el mensaje WM_MEASUREITEM
se envía con anterioridad en el proceso de creación del control. Si se asigna como subclase mediante DDX_Control
, SubclassDlgItem
o SubclassWindow
, la asignación como subclase se produce normalmente después del proceso de creación. Por lo tanto, no hay ninguna manera de controlar el mensaje WM_MEASUREITEM
en la función OnChildNotify
del control, que es el mecanismo que usa MFC para implementar ON_WM_MEASUREITEM_REFLECT
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMenuChar
El marco llama a esta función miembro cuando el usuario presiona un carácter de acceso de menú que no coincide con ninguna de las teclas de acceso predefinidas en el menú actual.
afx_msg LRESULT OnMenuChar(
UINT nChar,
UINT nFlags,
CMenu* pMenu);
Parámetros
nChar
En función de la configuración de compilación, especifica el carácter ANSI o Unicode que el usuario ha presionado.
nFlags
Contiene la marca MF_POPUP
si el menú es un menú emergente. Contiene la marca MF_SYSMENU
si el menú es un menú Control.
pMenu
Contiene un puntero al CMenu
seleccionado. El puntero puede ser temporal y no se debe almacenar.
Valor devuelto
La palabra de valor superior del valor devuelto debe contener uno de los siguientes códigos de comando:
Valor | Descripción |
---|---|
0 | Ordena a Windows que descarte el carácter que ha presionado el usuario y genera un breve pitido en el altavoz del sistema. |
1 | Ordena a Windows que cierre el menú actual. |
2 | Informa a Windows de que la palabra de valor inferior del valor devuelto contiene el número de elemento de un elemento específico. Windows selecciona este elemento. |
La palabra de valor inferior se ignora si la palabra de valor superior contiene 0 o 1. Las aplicaciones deben procesar este mensaje cuando se usan teclas de aceleración (método abreviado) para seleccionar mapas de bits colocados en un menú.
Comentarios
Se envía al CWnd
propietario del menú. También se llama a OnMenuChar
cuando el usuario presiona ALT y cualquier otra tecla, incluso si la tecla no corresponde a un carácter de acceso. En este caso, pMenu
apunta al menú propiedad de CWnd
, y nFlags
es 0.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMenuDrag
El marco llama a esta función miembro del menú actual de arrastrar y colocar cuando el usuario comienza a arrastrar un elemento de menú.
afx_msg UINT OnMenuDrag(
UINT nPos,
CMenu* pMenu);
Parámetros
nPos
[entrada] La posición de índice del elemento de menú cuando comienza la operación de arrastrar.
pMenu
[entrada] El puntero al objeto CMenu
que contiene el elemento de menú.
Valor devuelto
Valor devuelto | Significado |
---|---|
MND_CONTINUE |
El menú debe permanecer activo. Si se libera el mouse, se debe ignorar. |
MND_ENDMENU |
El menú se debe terminar. |
Comentarios
Este método recibe la notificación WM_MENUDRAG
, descrita en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMenuGetObject
El marco llama a esta función miembro del menú actual de arrastrar y colocar cuando el cursor del mouse entra en un elemento de menú o se mueve desde el centro del elemento a la parte superior o inferior del elemento.
afx_msg UINT OnMenuGetObject(MENUGETOBJECTINFO* pMenuGetObjectInfo);
Parámetros
pMenu
[entrada] El puntero a una estructura MENUGETOBJECTINFO
que contiene información sobre el menú de arrastrar y colocar en el que se encuentra el cursor del mouse.
Valor devuelto
Valor devuelto | Significado |
---|---|
MNGO_NOERROR |
Se devuelve un puntero de interfaz que admite operaciones de arrastrar y colocar en el miembro pvObj de la estructura MENUGETOBJECTINFO . Actualmente, solo se admite la interfaz IDropTarget . |
MNGO_NOINTERFACE |
No se admite ninguna interfaz de arrastrar y colocar. |
Comentarios
Este método recibe la notificación WM_MENUGETOBJECT
, descrita en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMenuRButtonUp
El marco llama a esta función miembro cuando el usuario suelta el botón derecho del mouse mientras el cursor está dentro de un elemento de menú.
afx_msg void OnMenuRButtonUp(
UINT nPos,
CMenu* pMenu);
Parámetros
nPos
[entrada] La posición de índice del elemento de menú cuando se libera el botón derecho del mouse.
pMenu
[entrada] El puntero al objeto CMenu
que contiene el elemento de menú.
Comentarios
Este método recibe la notificación WM_MENURBUTTONUP
, descrita en Windows SDK. El mensaje WM_MENURBUTTONUP
permite a una aplicación proporcionar un menú contextual para el elemento de menú especificado en el mensaje.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMenuSelect
Si el objeto CWnd
está asociado a un menú, el marco llama a OnMenuSelect
cuando el usuario selecciona un elemento de menú.
afx_msg void OnMenuSelect(
UINT nItemID,
UINT nFlags,
HMENU hSysMenu);
Parámetros
nItemID
Identifica el elemento seleccionado. Si el elemento seleccionado es un elemento de menú, nItemID
contiene el Id. del elemento de menú. Si el elemento seleccionado contiene un menú emergente, nItemID
contiene el índice del menú emergente y hSysMenu
contiene el identificador del menú principal (en el que se ha hecho clic).
nFlags
Contiene una combinación de las marcas de menú siguientes:
MF_BITMAP
El elemento es un mapa de bits.MF_CHECKED
El elemento está activado.MF_DISABLED
El elemento está deshabilitado.MF_GRAYED
El elemento está atenuado.MF_MOUSESELECT
El elemento se ha seleccionado con un mouse.MF_OWNERDRAW
El elemento es un elemento de dibujo de propietario.MF_POPUP
El elemento contiene un menú emergente.MF_SEPARATOR
El elemento es un separador de elementos de menú.MF_SYSMENU
El elemento se encuentra en el menú Control.
hSysMenu
Si nFlags
contiene MF_SYSMENU
, identifica el menú asociado al mensaje. Si nFlags
contiene MF_POPUP
, identifica el identificador del menú principal. Si nFlags
no contiene ni MF_SYSMENU
ni MF_POPUP
, no se usa.
Comentarios
Si nFlags
contiene 0xFFFF y hSysMenu
contiene 0, Windows ha cerrado el menú porque el usuario ha presionado la tecla ESC o ha hecho clic fuera del menú.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMouseActivate
El marco llama a esta función miembro cuando el cursor está en una ventana inactiva y el usuario presiona un botón del mouse.
afx_msg int OnMouseActivate(
CWnd* pDesktopWnd,
UINT nHitTest,
UINT message);
Parámetros
pDesktopWnd
Especifica un puntero a la ventana primaria de nivel superior de la ventana que se está activando. El puntero puede ser temporal y no se debe almacenar.
nHitTest
Especifica el código del área de prueba de posicionamiento. Una prueba de posicionamiento es una prueba que determina la ubicación del cursor.
message
Especifica el número del mensaje del mouse.
Valor devuelto
Especifica si se va a activar CWnd
y si se va a descartar el evento del mouse. Debe tener uno de los siguientes valores:
MA_ACTIVATE
Activar el objetoCWnd
.MA_NOACTIVATE
No activar el objetoCWnd
.MA_ACTIVATEANDEAT
Activar el objetoCWnd
y descartar el evento del mouse.MA_NOACTIVATEANDEAT
No activar el objetoCWnd
y descartar el evento del mouse.
Comentarios
La implementación predeterminada pasa este mensaje a la ventana primaria antes de que se produzca cualquier procesamiento. Si la ventana primaria devuelve TRUE, se detiene el procesamiento.
Para obtener una descripción de los códigos de área de prueba de posicionamiento individuales, consulte la función miembro OnNcHitTest
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
Ejemplo
// The code fragment below shows how to UI activate an ActiveX control.
// CMyAxCtrl is a COleControl-derived class.
int CMyAxCtrl::OnMouseActivate(CWnd *pDesktopWnd, UINT nHitTest, UINT message)
{
OnActivateInPlace(TRUE, NULL); // OnActivateInPlace() is an undocumented function
return COleControl::OnMouseActivate(pDesktopWnd, nHitTest, message);
}
CWnd::OnMouseHover
El marco llama a esta función miembro cuando el cursor se sitúa sobre el área cliente de la ventana durante el período de tiempo especificado en una llamada anterior a TrackMouseEvent
.
afx_msg void OnMouseHover(
UINT nFlags,
CPoint point);
Parámetros
nFlags
[entrada] Una combinación bit a bit (OR) de marcas que indica qué teclas modificadoras están presionadas. Por ejemplo, la marca MK_CONTROL
indica que se presiona la tecla CTRL.
point
[entrada] Un objeto CPoint
que especifica las coordenadas x
y y
del cursor en relación con la esquina superior izquierda del área cliente.
Comentarios
Este método recibe la notificación WM_MOUSEHOVER
, descrita en Windows SDK.
El parámetro nFlags
puede ser una combinación de las teclas modificadoras enumeradas en la tabla siguiente. Para obtener más información, consulte Acerca de la entrada del mouse.
Tecla modificadora | Descripción |
---|---|
MK_CONTROL |
Se presiona la tecla CTRL. |
MK_LBUTTON |
Se presiona el botón izquierdo del mouse. |
MK_MBUTTON |
Se presiona el botón central del mouse. |
MK_RBUTTON |
Se presiona el botón derecho del mouse. |
MK_SHIFT |
Se presiona la tecla MAYÚS. |
MK_XBUTTON1 |
Se presiona el botón del mouse XBUTTON1 de Microsoft IntelliMouse. |
MK_XBUTTON2 |
Se presiona el botón del mouse XBUTTON2 de Microsoft IntelliMouse. |
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMouseHWheel
El marco llama a este miembro cuando la rueda de desplazamiento horizontal del mouse está inclinada o girada.
afx_msg void OnMouseHWheel(
UINT nFlags,
short zDelta,
CPoint pt);
Parámetros
nFlags
[entrada] Una combinación bit a bit (OR) de marcas que indica qué teclas modificadoras están presionadas. Por ejemplo, la marca MK_CONTROL
indica que se presiona la tecla CTRL. Para obtener una lista de marcas, consulte la sección «Parámetros del mensaje» en Acerca de las entrada del mouse.
zDelta
[entrada] Indica la distancia a la que se rota la rueda, expresada en múltiplos o divisiones de WHEEL_DELTA
, que es 120. Un valor positivo indica que la rueda se ha rotado hacia la derecha; un valor negativo indica que la rueda se ha rotado hacia la izquierda.
pt
[entrada] Un objeto CPoint
que especifica las coordenadas x
y y
del cursor en relación con la esquina superior izquierda del área cliente.
Comentarios
Este método recibe un mensaje de notificación WM_MOUSEHWHEEL
, descrito en Windows SDK. Este mensaje se envía a la ventana que tiene el foco cuando la rueda de desplazamiento horizontal del mouse se ha inclinado o rotado.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMouseLeave
El marco llama a esta función miembro cuando el cursor abandona el área cliente de la ventana especificada en una llamada anterior a TrackMouseEvent
.
afx_msg void OnMouseLeave();
Comentarios
Este método recibe la notificación WM_MOUSELEAVE
, descrita en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMouseMove
El marco llama a esta función miembro cuando se mueve el cursor del mouse.
afx_msg void OnMouseMove(
UINT nFlags,
CPoint point);
Parámetros
nFlags
Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser una combinación de los siguientes valores:
MK_CONTROL
Se establece si la tecla CTRL está presionada.MK_LBUTTON
Se establece si el botón izquierdo del mouse está presionado.MK_MBUTTON
Se establece si el botón central del mouse está presionado.MK_RBUTTON
Se establece si el botón derecho del mouse está presionado.MK_SHIFT
Se establece si la tecla MAYÚS está presionada.
point
Especifica las coordenadas x e y del cursor. Las coordenadas siempre son relativas a la esquina superior izquierda de la ventana.
Comentarios
Si el mouse no se captura, el objeto CWnd
recibe el mensaje WM_MOUSEMOVE
debajo del cursor del mouse; de lo contrario, el mensaje va a la ventana que ha capturado el mouse.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMouseWheel
El marco llama a esta función miembro en el momento en que un usuario gira la rueda del mouse y encuentra la siguiente muesca de la rueda.
afx_msg BOOL OnMouseWheel(
UINT nFlags,
short zDelta,
CPoint pt);
Parámetros
nFlags
Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser una combinación de los siguientes valores:
MK_CONTROL
Se establece si la tecla CTRL está presionada.MK_LBUTTON
Se establece si el botón izquierdo del mouse está presionado.MK_MBUTTON
Se establece si el botón central del mouse está presionado.MK_RBUTTON
Se establece si el botón derecho del mouse está presionado.MK_SHIFT
Se establece si la tecla MAYÚS está presionada.
zDelta
Indica la distancia girada. El valor zDelta
se expresa en múltiplos o divisiones de WHEEL_DELTA
, que es 120. Un valor menor que cero indica que se gira hacia atrás (hacia el usuario), mientras que un valor mayor que cero indica que se gira hacia delante (alejándose del usuario). El usuario puede revertir esta respuesta cambiando la configuración de la rueda en el software del mouse. Para obtener más información acerca de este parámetro, vea los Comentarios.
pt
Especifica las coordenadas x e y del cursor. Estas coordenadas siempre son relativas a la esquina superior izquierda de la pantalla.
Valor devuelto
Distinto de cero si el desplazamiento de la rueda del mouse está habilitado; de lo contrario, 0.
Comentarios
A menos que se invalide, OnMouseWheel
llama al valor predeterminado de WM_MOUSEWHEEL
. Windows enruta automáticamente el mensaje al control o a la ventana secundaria que tiene el foco. La función DefWindowProc
de Win32 propaga el mensaje hacia arriba en la cadena primaria hasta la ventana que la procesa.
El parámetro zDelta
es un múltiplo de WHEEL_DELTA
, que está establecido en 120. Este valor es el umbral para que se realice una acción; y una acción de este tipo (por ejemplo, desplazarse hacia delante una muesca) se debe producir para cada delta.
WHEEL_DELTA
se ha establecido en 120 para permitir ruedas de resolución más fina, como una rueda de rotación libre sin muescas. Una rueda de resolución más fina envía más mensajes por rotación, pero cada mensaje tiene un valor de delta más pequeño. Para usar este tipo de rueda, agregue los valores zDelta
entrantes hasta que se alcance WHEEL_DELTA
(para obtener la misma respuesta para una rotación diferencial determinada), o bien desplácese por líneas parciales en respuesta a los mensajes más frecuentes. También puede elegir una granularidad de desplazamiento y acumular deltas hasta que se alcance WHEEL_DELTA
.
Invalide esta función miembro para proporcionar el comportamiento de desplazamiento de rueda del mouse que desee.
Nota:
OnMouseWheel
controla los mensajes para Windows NT 4.0 y versiones posteriores. Para el control de mensajes de Windows 95/98 o Windows NT 3.51, use OnRegisteredMouseWheel
.
CWnd::OnMove
El marco llama a esta función miembro después de que se haya movido el objeto CWnd
.
afx_msg void OnMove(
int x,
int y);
Parámetros
x
Especifica la nueva ubicación de la coordenada x de la esquina superior izquierda del área cliente. Esta nueva ubicación se da en coordenadas de pantalla para ventanas emergentes y superpuestas, y coordenadas de cliente primario para ventanas secundarias.
y
Especifica la nueva ubicación de la coordenada y de la esquina superior izquierda del área cliente. Esta nueva ubicación se da en coordenadas de pantalla para ventanas emergentes y superpuestas, y coordenadas de cliente primario para ventanas secundarias.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnMoving
El marco llama a esta función miembro mientras un usuario mueve un objeto CWnd
.
afx_msg void OnMoving(
UINT nSide,
LPRECT lpRect);
Parámetros
nSide
El borde de la ventana que se va a mover.
lpRect
La dirección del CRect
o la estructura RECT
que contendrá las coordenadas del elemento.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcActivate
El marco llama a esta función miembro cuando el área no cliente debe cambiarse para indicar un estado activo o inactivo.
afx_msg BOOL OnNcActivate(BOOL bActive);
Parámetros
bActive
Especifica cuándo se debe cambiar una barra de títulos o un icono para indicar un estado activo o inactivo. El parámetro bActive
es TRUE
si se va a dibujar un título o icono activo. Es FALSE
para un título o un icono inactivos.
Valor devuelto
Distinto de cero si Windows debe continuar con el procesamiento predeterminado; 0 para evitar que se desactive la barra de títulos o el icono.
Comentarios
La implementación predeterminada dibuja la barra de título y el texto de la barra de título en sus colores activos si bActive
es TRUE
, y en sus colores inactivos si bActive
es FALSE
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcCalcSize
El marco llama a esta función miembro cuando es necesario calcular el tamaño y la posición del área cliente.
afx_msg void OnNcCalcSize(
BOOL bCalcValidRects,
NCCALCSIZE_PARAMS* lpncsp);
Parámetros
bCalcValidRects
Especifica si la aplicación debe especificar qué parte del área cliente contiene información válida. Windows copiará la información válida en el área especificada dentro de la nueva área cliente. Si este parámetro es TRUE, la aplicación debe especificar qué parte del área cliente es válida.
lpncsp
Apunta a una estructura de datos NCCALCSIZE_PARAMS
que contiene información que una aplicación puede usar para calcular los nuevos tamaño y posición del rectángulo CWnd
(incluidos el área cliente, los bordes, el título, las barras de desplazamiento, etc.).
Comentarios
Al procesar este mensaje, una aplicación puede controlar el contenido del área cliente de la ventana al cambiar el tamaño o la posición de la ventana.
Independientemente del valor de bCalcValidRects
, el primer rectángulo de la matriz especificado por el miembro de estructura rgrc
de la estructura NCCALCSIZE_PARAMS
contiene las coordenadas de la ventana. Para una ventana secundaria, las coordenadas son relativas al área cliente de la ventana primaria. En el caso de las ventanas de nivel superior, las coordenadas son coordenadas de pantalla. Una aplicación debe modificar el rectángulo rgrc[0]
para reflejar el tamaño y la posición del área cliente.
Los rectángulos rgrc[1]
y rgrc[2]
solo son válidos si bCalcValidRects
es TRUE
. En este caso, el rectángulo rgrc[1]
contiene las coordenadas de la ventana antes de moverla o cambiar su tamaño. El rectángulo rgrc[2]
contiene las coordenadas del área cliente de la ventana antes de mover la ventana. Todas las coordenadas son relativas a la ventana o pantalla primarias.
La implementación predeterminada calcula el tamaño del área cliente en función de las características de la ventana (presencia de barras de desplazamiento, menú, etc.) y coloca el resultado en lpncsp
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcCreate
El marco llama a esta función miembro antes del mensaje WM_CREATE
cuando el objeto CWnd
se crea por primera vez.
afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
Parámetros
lpCreateStruct
Apunta a la estructura de datos CREATESTRUCT
para CWnd
.
Valor devuelto
Distinto de cero si se crea el área no cliente. Es 0 si se produce un error; la función Create
devolverá failure
en este caso.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcDestroy
La llama el marco cuando se está destruyendo el área no cliente y es la última función miembro a la que se llama cuando se destruye la ventana de Windows.
afx_msg void OnNcDestroy();
Comentarios
La implementación predeterminada realiza una limpieza y, a continuación, llama a la función miembro virtual PostNcDestroy
.
Invalide PostNcDestroy
si desea realizar su propia limpieza, como una operación delete this
. Si invalida OnNcDestroy
, debe llamar a OnNcDestroy
en la clase base para asegurarse de que se libera la memoria asignada internamente para la ventana.
CWnd::OnNcHitTest
El marco llama a esta función miembro para el objeto CWnd
que contiene el cursor (o el objeto CWnd
que ha usado la función miembro SetCapture
para capturar la entrada del mouse) cada vez que se mueve el mouse.
afx_msg LRESULT OnNcHitTest(CPoint point);
Parámetros
point
Contiene las coordenadas x e y del cursor. Estas coordenadas siempre son coordenadas de pantalla.
Valor devuelto
Uno de los valores enumerados de la prueba de posicionamiento del mouse. Consulte WM_NCHITTEST
para obtener una lista de valores.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcLButtonDblClk
El marco llama a esta función miembro cuando el usuario hace doble clic en el botón izquierdo del mouse mientras el cursor está dentro de un área no cliente de CWnd
.
afx_msg void OnNcLButtonDblClk(
UINT nHitTest,
CPoint point);
Parámetros
nHitTest
Especifica el código de prueba de posicionamiento. Una prueba de posicionamiento es una prueba que determina la ubicación del cursor. Consulte WM_NCHITTEST
para obtener una lista de valores.
point
Especifica un objeto CPoint
que contiene las coordenadas de pantalla x e y de la posición del cursor. Estas coordenadas siempre son relativas a la esquina superior izquierda de la pantalla.
Comentarios
Si procede, se envía el mensaje WM_SYSCOMMAND
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcLButtonDown
El marco llama a esta función miembro cuando el usuario presiona el botón izquierdo del mouse mientras el cursor está dentro de un área no cliente del objeto CWnd
.
afx_msg void OnNcLButtonDown(
UINT nHitTest,
CPoint point);
Parámetros
nHitTest
Especifica el código de prueba de posicionamiento. Una prueba de posicionamiento es una prueba que determina la ubicación del cursor. Consulte WM_NCHITTEST
para obtener una lista de valores.
point
Especifica un objeto CPoint
que contiene las coordenadas de pantalla x e y de la posición del cursor. Estas coordenadas siempre son relativas a la esquina superior izquierda de la pantalla.
Comentarios
Si procede, se envía WM_SYSCOMMAND
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros pasados a la función reflejan los parámetros que ha recibido el marco al recibir el mensaje. Si se llama a la implementación de clase base de esta función, esa implementación usará los parámetros pasados originalmente con el mensaje y no los parámetros que se proporcionen a la función.
CWnd::OnNcLButtonUp
El marco llama a esta función miembro cuando el usuario suelta el botón izquierdo del mouse mientras el cursor está dentro de un área no cliente.
afx_msg void OnNcLButtonUp(
UINT nHitTest,
CPoint point);
Parámetros
nHitTest
Especifica el código de prueba de posicionamiento. Una prueba de posicionamiento es una prueba que determina la ubicación del cursor. Consulte WM_NCHITTEST
para obtener una lista de valores.
point
Especifica un objeto CPoint
que contiene las coordenadas de pantalla x e y de la posición del cursor. Estas coordenadas siempre son relativas a la esquina superior izquierda de la pantalla.
Comentarios
Si procede, se envía WM_SYSCOMMAND
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcMButtonDblClk
El marco llama a esta función miembro cuando el usuario hace doble clic en el botón central del mouse mientras el cursor está dentro de un área no cliente.
afx_msg void OnNcMButtonDblClk(
UINT nHitTest,
CPoint point);
Parámetros
nHitTest
Especifica el código de prueba de posicionamiento. Una prueba de posicionamiento es una prueba que determina la ubicación del cursor.
point
Especifica un objeto CPoint
que contiene las coordenadas de pantalla x e y de la posición del cursor. Estas coordenadas siempre son relativas a la esquina superior izquierda de la pantalla.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcMButtonDown
El marco llama a esta función miembro cuando el usuario presiona el botón central del mouse mientras el cursor está dentro de un área no cliente.
afx_msg void OnNcMButtonDown(
UINT nHitTest,
CPoint point);
Parámetros
nHitTest
Especifica el código de prueba de posicionamiento. Una prueba de posicionamiento es una prueba que determina la ubicación del cursor.
point
Especifica un objeto CPoint
que contiene las coordenadas de pantalla x e y de la posición del cursor. Estas coordenadas siempre son relativas a la esquina superior izquierda de la pantalla.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcMButtonUp
El marco llama a esta función miembro cuando el usuario suelta el botón central del mouse mientras el cursor está dentro de un área no cliente.
afx_msg void OnNcMButtonUp(
UINT nHitTest,
CPoint point);
Parámetros
nHitTest
Especifica el código de prueba de posicionamiento. Una prueba de posicionamiento es una prueba que determina la ubicación del cursor.
point
Especifica un objeto CPoint
que contiene las coordenadas de pantalla x e y de la posición del cursor. Estas coordenadas siempre son relativas a la esquina superior izquierda de la pantalla.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcMouseHover
El marco llama a esta función miembro cuando el cursor se mantiene sobre el área no cliente de la ventana durante el período de tiempo especificado en una llamada anterior a TrackMouseEvent
.
afx_msg void OnNcMouseHover(
UINT nHitTest,
CPoint point);
Parámetros
nHitTest
[entrada] El valor de prueba de posicionamiento devuelto por la función CWnd::DefWindowProc
como resultado del procesamiento del mensaje WM_NCHITTEST
.
point
[entrada] Un objeto CPoint
que especifica las coordenadas x e y del cursor en relación con la esquina superior izquierda de la pantalla.
Comentarios
Este método recibe la notificación WM_NCMOUSEHOVER
, descrita en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcMouseLeave
El marco llama a esta función miembro cuando el cursor abandona el área no cliente de la ventana especificada en una llamada anterior a TrackMouseEvent
.
afx_msg void OnNcMouseLeave();
Comentarios
Este método recibe la notificación WM_NCMOUSELEAVE
, descrita en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcMouseMove
El marco llama a esta función miembro cuando el cursor se mueve dentro de un área no cliente.
afx_msg void OnNcMouseMove(
UINT nHitTest,
CPoint point);
Parámetros
nHitTest
Especifica el código de prueba de posicionamiento. Una prueba de posicionamiento es una prueba que determina la ubicación del cursor.
point
Especifica un objeto CPoint
que contiene las coordenadas de pantalla x e y de la posición del cursor. Estas coordenadas siempre son relativas a la esquina superior izquierda de la pantalla.
Comentarios
Si procede, se envía el mensaje WM_SYSCOMMAND
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcPaint
El marco llama a esta función miembro cuando se debe pintar el área no cliente.
afx_msg void OnNcPaint();
Comentarios
La implementación predeterminada pinta el marco de la ventana.
Una aplicación puede invalidar esta llamada y pintar su propio marco de ventana personalizado. La región de recorte siempre es rectangular, incluso si se modifica la forma del marco.
CWnd::OnNcRButtonDblClk
El marco llama a esta función miembro cuando el usuario hace doble clic en el botón derecho del mouse mientras el cursor está dentro de un área no cliente de CWnd
.
afx_msg void OnNcRButtonDblClk(
UINT nHitTest,
CPoint point);
Parámetros
nHitTest
Especifica el código de prueba de posicionamiento. Una prueba de posicionamiento es una prueba que determina la ubicación del cursor.
point
Especifica un objeto CPoint
que contiene las coordenadas de pantalla x e y de la posición del cursor. Estas coordenadas siempre son relativas a la esquina superior izquierda de la pantalla.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcRButtonDown
El marco llama a esta función miembro cuando el usuario presiona el botón derecho del mouse mientras el cursor está dentro de un área no cliente.
afx_msg void OnNcRButtonDown(
UINT nHitTest,
CPoint point);
Parámetros
nHitTest
Especifica el código de prueba de posicionamiento. Una prueba de posicionamiento es una prueba que determina la ubicación del cursor.
point
Especifica un objeto CPoint
que contiene las coordenadas de pantalla x e y de la posición del cursor. Estas coordenadas siempre son relativas a la esquina superior izquierda de la pantalla.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcRButtonUp
El marco llama a esta función miembro cuando el usuario suelta el botón derecho del mouse mientras el cursor está dentro de un área no cliente.
afx_msg void OnNcRButtonUp(
UINT nHitTest,
CPoint point);
Parámetros
nHitTest
Especifica el código de prueba de posicionamiento. Una prueba de posicionamiento es una prueba que determina la ubicación del cursor.
point
Especifica un objeto CPoint
que contiene las coordenadas de pantalla x e y de la posición del cursor. Estas coordenadas siempre son relativas a la esquina superior izquierda de la pantalla.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcRenderingChanged
El marco llama a este miembro cuando la directiva de representación del área no cliente ha cambiado.
afx_msg void OnNcRenderingChanged(BOOL bIsRendering);
Parámetros
bIsRendering
[entrada] TRUE
si la representación del Administrador de ventanas de escritorio (DWM) está habilitada para el área no cliente de la ventana; FALSE
si la representación está deshabilitada.
Comentarios
Este método recibe la notificación WM_DWMNCRENDERINGCHANGED
, descrita en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcXButtonDblClk
El marco llama a esta función miembro cuando el usuario hace doble clic en XBUTTON1
o XBUTTON2
mientras el cursor está en el área no cliente de una ventana.
void OnNcXButtonDblClk(
short nHitTest,
UINT nButton,
CPoint point);
Parámetros
nHitTest
[entrada] El valor de prueba de posicionamiento devuelto por la función CWnd::DefWindowProc
como resultado del procesamiento del mensaje WM_NCHITTEST
.
nButton
[entrada] Un valor de XBUTTON1
si se hace doble clic en el primer botón X de Microsoft Intellimouse, o XBUTTON2
si se hace doble clic en el segundo botón X.
point
[entrada] Un objeto CPoint
que especifica las coordenadas x
y y
del cursor en relación con la esquina superior izquierda del área cliente.
Comentarios
Este método recibe la notificación WM_XBUTTONDBLCLK
, descrita en Windows SDK. Este mensaje se publica en la ventana que contiene el cursor. Si una ventana ha capturado el mouse, este mensaje no se publica.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcXButtonDown
El marco llama a esta función miembro cuando el usuario presiona XBUTTON1
o XBUTTON2
del mouse mientras el cursor está en el área no cliente de una ventana.
afx_msg void OnNcXButtonDown(
short nHitTest,
UINT nButton,
CPoint point);
Parámetros
nHitTest
[entrada] El valor de prueba de posicionamiento devuelto por la función CWnd::DefWindowProc
como resultado del procesamiento del mensaje WM_NCHITTEST
.
nButton
[entrada] El valor de XBUTTON1
si se presiona el primer botón X del mouse, o XBUTTON2
si se presiona el segundo botón X.
point
[entrada] Un objeto CPoint
que especifica las coordenadas x
y y
del cursor en relación con la esquina superior izquierda de la pantalla.
Comentarios
Este método recibe la notificación WM_NCXBUTTONDOWN
, descrita en Windows SDK. Este mensaje se publica en la ventana que contiene el cursor. Si una ventana ha capturado el mouse, este mensaje no se publica.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNcXButtonUp
El marco llama a esta función miembro cuando el usuario libera XBUTTON1
o XBUTTON2
del mouse mientras el cursor está en el área no cliente de una ventana.
afx_msg void OnNcXButtonUp(
short nHitTest,
UINT nButton,
CPoint point);
Parámetros
nHitTest
[entrada] El valor de prueba de posicionamiento devuelto por la función CWnd::DefWindowProc
como resultado del procesamiento del mensaje WM_NCHITTEST
.
nButton
[entrada] El valor de XBUTTON1
si se libera el primer botón X del mouse, o XBUTTON2
si se libera el segundo botón X.
point
[entrada] Un objeto CPoint
que especifica las coordenadas x e y del cursor en relación con la esquina superior izquierda de la pantalla.
Comentarios
Este método recibe la notificación WM_NCXBUTTONUP
, descrita en Windows SDK. Este mensaje se publica en la ventana que contiene el cursor. Si una ventana ha capturado el mouse, este mensaje no se publica.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNextMenu
El marco llama a esta función miembro cuando la tecla de dirección derecha o izquierda se utiliza para pasar de la barra de menús al menú del sistema.
afx_msg void OnNextMenu(
UINT nKey,
LPMDINEXTMENU lpMdiNextMenu);
Parámetros
nKey
[entrada] Una combinación bit a bit (OR
) de marcas que indica qué teclas modificadoras se presionan. Por ejemplo, la marca MK_CONTROL
indica que se presiona la tecla CTRL. Para obtener una lista de marcas, consulte la sección «Parámetros del mensaje» en Acerca de las entrada del mouse.
lpMdiNextMenu
[entrada] Un puntero a una estructura MDINEXTMENU
que contiene información sobre el menú que se va a activar.
Comentarios
Este método recibe la notificación WM_UNINITMENUPOPUP
, descrita en Windows SDK. En respuesta a este mensaje, la aplicación puede establecer el miembro hmenuNext
de la estructura MDINEXTMENU
para especificar el menú al que cambiar, y el miembro hwndNext
para especificar la ventana para recibir mensajes de notificación de menú.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnNotify
El marco llama a esta función miembro para informar a la ventana primaria de un control de que se ha producido un evento en el control o de que el control requiere algún tipo de información.
virtual BOOL OnNotify(
WPARAM wParam,
LPARAM lParam,
LRESULT* pResult);
Parámetros
wParam
Identifica el control que envía el mensaje si el mensaje procede de un control. De lo contrario, wParam
es 0.
lParam
Un puntero a una estructura (NMHDR
) de mensaje de notificación que contiene el código de notificación e información adicional. Para algunos mensajes de notificación, este parámetro apunta a una estructura mayor que tiene la estructura NMHDR
como su primer miembro.
pResult
Un puntero a una variable LRESULT
en la que almacenar el código de resultado si se controla el mensaje.
Valor devuelto
Una aplicación devuelve un valor distinto de cero si procesa este mensaje; de lo contrario, 0.
Comentarios
OnNotify
procesa el mapa de mensajes para la notificación de control.
Invalide esta función miembro en la clase derivada para controlar el mensaje WM_NOTIFY
. Una invalidación no procesará el mapa de mensajes a menos que se llame a la clase base OnNotify
.
Para obtener más información sobre el mensaje WM_NOTIFY
, vea la Nota técnica 61 (TN061) ON_NOTIFY
y los mensajes WM_NOTIFY
. También puede estar interesado en los temas relacionados descritos en Temas de control y TN062, Reflexión de mensajes para controles de Windows.
CWnd::OnNotifyFormat
El marco llama a esta función miembro para determinar si la ventana actual acepta estructuras ANSI o Unicode en el mensaje de notificación WM_NOTIFY
.
afx_msg UINT OnNotifyFormat(
CWnd* pWnd,
UINT nCommand);
Parámetros
pWnd
[entrada] Un puntero a un objeto CWnd
que representa la ventana que envía el mensaje WM_NOTIFY
. Este parámetro es el puntero a un control si el parámetro nCommand
es NF_QUERY
o el puntero a la ventana primaria de un control si nCommand
es NF_REQUERY
.
nCommand
[entrada] El valor de comando que especializa el mensaje WM_NOTIFY
. Los valores posibles son:
NF_QUERY
: El mensaje es una consulta para determinar si las estructuras ANSI o Unicode deben usarse en los mensajesWM_NOTIFY
. Este mensaje se envía desde un control a su ventana primaria durante la creación de un control y en respuesta al formularioNF_REQUERY
de este mensaje.NF_REQUERY
: El mensaje es una solicitud para que un control envíe el formularioNF_QUERY
de este mensaje a su ventana primaria. Esta solicitud se envía desde la ventana primaria y solicita al control que vuelva a consultar al elemento primario sobre el tipo de estructura que se va a usar en los mensajesWM_NOTIFY
. Si el parámetronCommand
esNF_REQUERY
, el valor devuelto es el resultado de la operación de repetición de la consulta.
Valor devuelto
Valor devuelto | Significado |
---|---|
NFR_ANSI |
Las estructuras ANSI deben usarse en los mensajes WM_NOTIFY enviados por el control. |
NFR_UNICODE |
Las estructuras Unicode deben usarse en los mensajes WM_NOTIFY enviados por el control. |
0 | Se produjo un error. |
Comentarios
Este método recibe la notificación WM_NOTIFYFORMAT
, descrita en Windows SDK. Los mensajes WM_NOTIFY
se envían desde un control común a su ventana primaria y desde la ventana primaria al control común.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnPaint
El marco llama a esta función miembro cuando Windows o una aplicación realizan una solicitud para volver a pintar una parte de la ventana de una aplicación.
afx_msg void OnPaint();
Comentarios
El mensaje WM_PAINT
se envía cuando se llama a la función miembro UpdateWindow
o RedrawWindow
.
Una ventana puede recibir mensajes de pintura internos como resultado de llamar a la función miembro RedrawWindow
con la marca RDW_INTERNALPAINT
establecida. En este caso, es posible que la ventana no tenga una región de actualización. Una aplicación debe llamar a la función miembro GetUpdateRect
para determinar si la ventana tiene una región de actualización. Si GetUpdateRect
devuelve 0, la aplicación no debe llamar a las funciones miembro BeginPaint
y EndPaint
.
Es responsabilidad de una aplicación comprobar si hay que volver a pintar o actualizar internamente mediante el examen de sus estructuras de datos internas para cada mensaje WM_PAINT
, porque un mensaje WM_PAINT
puede haber sido causado tanto por un área no válida como por una llamada a la función miembro RedrawWindow
con la marca RDW_INTERNALPAINT
establecida.
Windows envía un mensaje interno WM_PAINT
una sola vez. Una vez que la función miembro UpdateWindow
envía un mensaje interno WM_PAINT
a una ventana, no se enviarán ni publicarán más mensajes WM_PAINT
hasta que se invalide la ventana o hasta que se vuelva a llamar a la función miembro RedrawWindow
con la marca RDW_INTERNALPAINT
establecida.
Para obtener información sobre cómo representar una imagen en aplicaciones de documento o vista, consulte CView::OnDraw
.
Para obtener más información sobre el uso de WM_Paint
, consulte los temas siguientes de Windows SDK:
CWnd::OnPaintClipboard
Un visor del Portapapeles llama a la función miembro OnPaintClipboard
de un propietario del Portapapeles cuando este ha colocado datos en el Portapapeles con el formato CF_OWNERDISPLAY
y el área de cliente del visor del Portapapeles necesita volver a dibujarse.
afx_msg void OnPaintClipboard(
CWnd* pClipAppWnd,
HGLOBAL hPaintStruct);
Parámetros
pClipAppWnd
Especifica un puntero para la ventana de la aplicación del Portapapeles. El puntero puede ser temporal y no se debe almacenar para su uso posterior.
hPaintStruct
Identifica una estructura de datos PAINTSTRUCT
que define qué parte del área cliente pintar.
Comentarios
Para determinar si necesita volver a pintarse el área cliente completa o solamente una parte de ella, el propietario del Portapapeles debe comparar las dimensiones del área de dibujo especificadas en el miembro rcpaint
de la estructura PAINTSTRUCT
con las dimensiones indicadas en la llamada más reciente de la función miembro OnSizeClipboard
.
OnPaintClipboard
debe usar la función de Windows GlobalLock
para bloquear la memoria que contiene la estructura de datos PAINTSTRUCT
y desbloquear esa memoria con la función de Windows GlobalUnlock
antes de salir.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnPaletteChanged
El marco llama a esta función miembro para todas las ventanas de nivel superior después de que la ventana con foco de entrada haya realizado su paleta lógica, cambiando así la paleta del sistema.
afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
Parámetros
pFocusWnd
Especifica un puntero a la ventana que ha causado que la paleta del sistema cambie. El puntero puede ser temporal y no se debe almacenar.
Comentarios
Esta llamada permite que una ventana sin el foco de entrada que usa una paleta de colores realice sus paletas lógicas y actualice su área cliente.
Se llama a la función miembro OnPaletteChanged
para todas las ventanas de nivel superior y superpuestas, incluida la que ha cambiado la paleta del sistema y provocado que se envíe el mensaje WM_PALETTECHANGED
. Si alguna ventana secundaria usa una paleta de colores, este mensaje debe pasársele.
Para evitar un bucle infinito, la ventana no debe realizar su paleta a menos que determine que pFocusWnd
no contiene un puntero a sí mismo.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnPaletteIsChanging
El marco llama a esta función miembro para informar a las aplicaciones de que una aplicación va a realizar su paleta lógica.
afx_msg void OnPaletteIsChanging(CWnd* pRealizeWnd);
Parámetros
pRealizeWnd
Especifica la ventana que está a punto de realizar su paleta lógica.
Comentarios
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnParentNotify
El marco llama a la función miembro OnParentNotify
de un elemento primario cuando se crea o se destruye su ventana secundaria, o cuando el usuario hace clic en un botón del mouse mientras el cursor está sobre la ventana secundaria.
afx_msg void OnParentNotify(
UINT message,
LPARAM lParam);
Parámetros
message
Especifica el evento para el que se notifica al elemento primario, así como el identificador de la ventana secundaria. El evento es la palabra de valor inferior de message
. Si el evento es WM_CREATE
o WM_DESTROY
, la palabra de valor superior de message
es el identificador de la ventana secundaria; de lo contrario, la palabra de valor superior no está definida. El evento (palabra de valor inferior de message
) puede tomar cualquiera de estos valores:
WM_CREATE
Se está creando la ventana secundaria.WM_DESTROY
Se está destruyendo la ventana secundaria.WM_LBUTTONDOWN
El usuario ha colocado el cursor del mouse sobre la ventana secundaria y ha hecho clic en el botón izquierdo del mouse.WM_MBUTTONDOWN
El usuario ha colocado el cursor del mouse sobre la ventana secundaria y ha hecho clic en el botón central del mouse.WM_RBUTTONDOWN
El usuario ha colocado el cursor del mouse sobre la ventana secundaria y ha hecho clic en el botón derecho del mouse.
lParam
Si el evento (palabra de valor inferior) de message
es WM_CREATE
o WM_DESTROY
, lParam
especifica el identificador de ventana de la ventana secundaria; de lo contrario, lParam
contiene las coordenadas x e y del cursor. La coordenada x está en la palabra de valor inferior y la coordenada y está en la palabra de valor superior.
Comentarios
Cuando se está creando la ventana secundaria, el sistema llama a OnParentNotify
justo antes de que vuelva la función miembro Create
que crea la ventana. Cuando se está destruyendo la ventana secundaria, el sistema llama a OnParentNotify
antes de que se produzca cualquier proceso para destruir la ventana.
Se llama a OnParentNotify
para todas las ventanas antecesoras de la ventana secundaria, incluida la ventana de nivel superior.
Todas las ventanas secundarias excepto las que tienen el estilo WS_EX_NOPARENTNOTIFY
envían este mensaje a sus ventanas primarias. De forma predeterminada, las ventanas secundarias de un cuadro de diálogo tienen el estilo WS_EX_NOPARENTNOTIFY
a menos que la ventana secundaria se haya creado sin este estilo mediante la llamada a la función miembro CreateEx
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnPowerBroadcast
El marco llama a esta función miembro cuando se produce un evento de administración de energía.
afx_msg UINT OnPowerBroadcast(
UINT nPowerEvent,
UINT nEventData);
Parámetros
nPowerEvent
[entrada] Un evento de administración de energía.
nEventData
[entrada] Datos específicos del evento.
Valor devuelto
Si el evento es una solicitud, devuelva TRUE
para conceder la solicitud, o BROADCAST_QUERY_DENY
para denegarla.
Comentarios
Este método recibe el mensaje WM_POWERBROADCAST
, descrito en Windows SDK.
El parámetro nPowerEvent
especifica eventos como que el nivel de la batería es bajo, el estado de energía ha cambiado, el permiso para suspender la operación se ha solicitado o denegado, una operación se está reanudando automáticamente después de un evento, el sistema está suspendiendo la operación o una operación se está reanudando después de haber estado suspendida. El parámetro nEventData
normalmente no se usa. Para obtener más información, consulte los parámetros wParam
y lParam
del mensaje WM_POWERBROADCAST
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnQueryDragIcon
El marco llama a esta función miembro mediante una ventana minimizada (de icono) que no tiene un icono definido para su clase.
afx_msg HCURSOR OnQueryDragIcon();
Valor devuelto
Valor de doble palabra que contiene un identificador de cursor o de icono en la palabra de valor inferior. El cursor o el icono debe ser compatible con la resolución del controlador de pantalla. Si la aplicación devuelve NULL
, el sistema muestra el cursor predeterminado. El valor devuelto predeterminado es NULL
.
Comentarios
El sistema realiza esta llamada para obtener el cursor que se va a mostrar mientras el usuario arrastra la ventana minimizada. Si una aplicación devuelve el identificador de un icono o cursor, el sistema lo convierte en blanco y negro. Si una aplicación devuelve un identificador, el identificador debe identificar un cursor o icono monocromático compatible con la resolución del controlador de pantalla. La aplicación puede llamar a las funciones miembro CWinApp::LoadCursor
o CWinApp::LoadIcon
para cargar un cursor o icono desde los recursos de su archivo ejecutable y para obtener este identificador.
CWnd::OnQueryEndSession
El marco llama a esta función miembro cuando el usuario elige finalizar la sesión de Windows o cuando una aplicación llama a la función de Windows ExitWindows
.
afx_msg BOOL OnQueryEndSession();
Valor devuelto
Distinto de cero si una aplicación se puede apagar convenientemente; de lo contrario, 0.
Comentarios
Si alguna aplicación devuelve 0, la sesión de Windows no finaliza. Windows deja de llamar a OnQueryEndSession
tan pronto como una aplicación devuelve 0 y envía el mensaje WM_ENDSESSION
con un valor de parámetro de FALSE
para cualquier aplicación que ya haya devuelto un valor distinto de cero.
CWnd::OnQueryNewPalette
El marco llama a esta función miembro cuando el objeto CWnd
está a punto de recibir el foco de entrada, lo que da la oportunidad a CWnd
de realizar su paleta lógica cuando recibe el foco.
afx_msg BOOL OnQueryNewPalette();
Valor devuelto
Distinto de cero si CWnd
realiza su paleta lógica; en caso contrario, 0.
CWnd::OnQueryOpen
El marco llama a esta función miembro cuando se minimiza el objeto CWnd
y el usuario solicita que se restaure CWnd
al tamaño y posición previos a la minimización.
afx_msg BOOL OnQueryOpen();
Valor devuelto
Distinto de cero si se puede abrir el icono, o 0 para evitar que se abra el icono.
Comentarios
Mientras esté en OnQueryOpen
, CWnd
no debe realizar ninguna acción que pueda provocar un cambio de activación o de foco (por ejemplo, crear un cuadro de diálogo).
CWnd::OnQueryUIState
Se llama para recuperar el estado de la interfaz de usuario de una ventana.
afx_msg UINT OnQueryUIState();
Valor devuelto
El valor devuelto es NULL
si los indicadores de foco y los aceleradores de teclado están visibles. De lo contrario, el valor devuelto puede ser uno o varios de los valores siguientes:
UISF_HIDEFOCUS
Los indicadores de foco están ocultos.UISF_HIDEACCEL
Los aceleradores de teclado están ocultos.UISF_ACTIVE
Windows XP: se debe dibujar un control en el estilo usado para los controles activos.
Comentarios
Esta función miembro se usa para emular la funcionalidad del mensaje WM_QUERYUISTATE
, tal como se describe en Windows SDK.
CWnd::OnRawInput
El marco llama a esta función miembro cuando la ventana actual obtiene una entrada sin procesar.
afx_msg void OnRawInput(
UINT nInputCode,
HRAWINPUT hRawInput);
Parámetros
nInputCode
[entrada] Código de entrada que indica si la entrada se ha producido mientras la aplicación estaba en primer plano o no. En cualquier caso, la aplicación debe llamar a CWnd::DefWindowProc
para que el sistema pueda realizar la limpieza. Este parámetro puede establecerse con uno de los siguientes valores:
RIM_INPUT
: La entrada se ha producido mientras la aplicación estaba en primer plano.RIM_INPUTSINK
: La entrada ha producido mientras la aplicación no estaba en primer plano.
hRawInput
[entrada] El identificador a una estructura RAWINPUT
que contiene la entrada sin procesar del dispositivo.
Comentarios
Este método recibe la notificación WM_INPUT
, descrita en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnRButtonDblClk
El marco llama a esta función miembro cuando el usuario hace doble clic en el botón derecho del mouse.
afx_msg void OnRButtonDblClk(
UINT nFlags,
CPoint point);
Parámetros
nFlags
Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser una combinación de los siguientes valores:
MK_CONTROL
Se establece si la tecla CTRL está presionada.MK_LBUTTON
Se establece si el botón izquierdo del mouse está presionado.MK_MBUTTON
Se establece si el botón central del mouse está presionado.MK_RBUTTON
Se establece si el botón derecho del mouse está presionado.MK_SHIFT
Se establece si la tecla MAYÚS está presionada.
point
Especifica las coordenadas x e y del cursor. Las coordenadas siempre son relativas a la esquina superior izquierda de la ventana.
Comentarios
Solo las ventanas que tienen el estilo WNDCLASS
de CS_DBLCLKS pueden recibir llamadas de OnRButtonDblClk
. Este es el valor predeterminado para las ventanas de la biblioteca MFC. Windows llama a OnRButtonDblClk
cuando el usuario presiona, suelta y vuelve a presionar el botón derecho del mouse dentro del límite de tiempo de doble clic del sistema. Al hacer doble clic en el botón derecho del mouse, se generan cuatro eventos: los mensajes WM_RBUTTONDOWN
y WM_RBUTTONUP
, la llamada de OnRButtonDblClk
, y otro mensaje WM_RBUTTONUP cuando se suelta el botón.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnRButtonDown
El marco llama a esta función miembro cuando el usuario presiona el botón derecho del mouse.
afx_msg void OnRButtonDown(
UINT nFlags,
CPoint point);
Parámetros
nFlags
Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser una combinación de los siguientes valores:
MK_CONTROL
Se establece si la tecla CTRL está presionada.MK_LBUTTON
Se establece si el botón izquierdo del mouse está presionado.MK_MBUTTON
Se establece si el botón central del mouse está presionado.MK_RBUTTON
Se establece si el botón derecho del mouse está presionado.MK_SHIFT
Se establece si la tecla MAYÚS está presionada.
point
Especifica las coordenadas x e y del cursor. Las coordenadas siempre son relativas a la esquina superior izquierda de la ventana.
Comentarios
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnRButtonUp
El marco llama a esta función miembro cuando el usuario suelta el botón derecho del mouse.
afx_msg void OnRButtonUp(
UINT nFlags,
CPoint point);
Parámetros
nFlags
Indica si hay varias teclas virtuales presionadas. Este parámetro puede ser una combinación de los siguientes valores:
MK_CONTROL
Se establece si la tecla CTRL está presionada.MK_LBUTTON
Se establece si el botón izquierdo del mouse está presionado.MK_MBUTTON
Se establece si el botón central del mouse está presionado.MK_SHIFT
Se establece si la tecla MAYÚS está presionada.
point
Especifica las coordenadas x e y del cursor. Las coordenadas siempre son relativas a la esquina superior izquierda de la ventana.
Comentarios
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnRegisteredMouseWheel
El marco llama a esta función miembro en el momento en que un usuario gira la rueda del mouse y encuentra la siguiente muesca de la rueda.
afx_msg LRESULT OnRegisteredMouseWheel(
WPARAM wParam,
LPARAM lParam);
Parámetros
wParam
La posición horizontal del puntero.
lParam
La posición vertical del puntero.
Valor devuelto
Insignificante en este momento. Siempre cero.
Comentarios
A menos que se invalide, OnRegisteredMouseWheel
enruta el mensaje a la ventana adecuada (la ventana primaria con foco) y llama al controlador WM_MOUSEWHEEL
de esa ventana.
Invalide esta función miembro para proporcionar su propio enrutamiento de mensajes o para modificar el comportamiento de desplazamiento con la rueda del mouse.
Nota:
OnRegisteredMouseWheel
controla los mensajes de Windows 95/98 y Windows NT 3.51. Para el control de mensajes de Windows NT 4.0, use OnMouseWheel
.
CWnd::OnRenderAllFormats
El marco llama a la función miembro OnRenderAllFormats
del propietario del Portapapeles cuando se está destruyendo la aplicación propietaria.
afx_msg void OnRenderAllFormats();
Comentarios
El propietario del Portapapeles debe representar los datos en todos los formatos que es capaz de generar y pasar al Portapapeles un identificador de datos para cada formato llamando a la función de Windows SetClipboardData
. Esto garantiza que el Portapapeles contenga datos válidos aunque la aplicación que representa los datos se destruya. La aplicación debe llamar a la función miembro OpenClipboard
antes de llamar a la función de Windows SetClipboardData
, y llamar a la función de Windows CloseClipboard
después.
CWnd::OnRenderFormat
El marco llama a la función miembro OnRenderFormat
del propietario del Portapapeles cuando es necesario representar un formato determinado con representación retrasada.
afx_msg void OnRenderFormat(UINT nFormat);
Parámetros
nFormat
Especifica el formato del Portapapeles.
Comentarios
El receptor debe representar los datos en ese formato y pasarlo al Portapapeles llamando a la función de Windows SetClipboardData
.
No llame a la función miembro OpenClipboard
ni a la función de Windows CloseClipboard
desde dentro de OnRenderFormat
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnSessionChange
El marco llama a esta función miembro para notificar a una aplicación un cambio en el estado de sesión.
afx_msg void OnSessionChange(
UINT nSessionState,
UINT nId);
Parámetros
nSessionState
[entrada] Un código de estado describe el cambio de estado de sesión.
nId
[entrada] El identificador de la sesión.
Comentarios
Este método recibe la notificación WM_WTSSESSION_CHANGE
, descrita en Windows SDK.
El parámetro nSessionState
especifica si una sesión está conectada o desconectada de la consola o de un terminal remoto, un usuario ha iniciado o cerrado sesión, una sesión está bloqueada o desbloqueada, o una sesión ha cambiado al estado controlado de forma remota. Para obtener más información, vea el parámetro wParam
del mensaje WM_WTSSESSION_CHANGE
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnSetCursor
El marco llama a esta función miembro si no se captura la entrada del mouse y el mouse provoca el movimiento del cursor dentro del objeto CWnd
.
afx_msg BOOL OnSetCursor(
CWnd* pWnd,
UINT nHitTest,
UINT message);
Parámetros
pWnd
Especifica un puntero a la ventana que contiene el cursor. El puntero puede ser temporal y no se debe almacenar para su uso posterior.
nHitTest
Especifica el código del área de prueba de posicionamiento. La prueba de posicionamiento determina la ubicación del cursor.
message
Especifica el número del mensaje del mouse.
Valor devuelto
Distinto de cero para detener el procesamiento adicional, o 0 para continuar.
Comentarios
La implementación predeterminada llama al OnSetCursor
de la ventana primaria antes del procesamiento. Si la ventana primaria devuelve TRUE
, se detiene el procesamiento. Llamar a la ventana primaria proporciona a la ventana primaria el control sobre la configuración del cursor en una ventana secundaria.
La implementación predeterminada establece el cursor en una flecha si no está en el área cliente o en el cursor de clase registrada si está en el área cliente.
Si nHitTest
es HTERROR
y message
es un mensaje de botón presionado del mouse, se llama a la función miembro MessageBeep
.
El parámetro message es 0 cuando CWnd
entra en el modo de menú.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnSetFocus
El marco llama a esta función miembro después de obtener el foco de entrada.
afx_msg void OnSetFocus(CWnd* pOldWnd);
Parámetros
pOldWnd
Contiene el objeto CWnd
que pierde el foco de entrada (puede ser NULL
). El puntero puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Para mostrar un cursor de inserción, CWnd
debe llamar a las funciones de cursor de inserción adecuadas en este momento.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnSettingChange
El marco llama a OnSettingChange
para todas las ventanas de nivel superior cuando la función SystemParametersInfo de Win32 cambia una configuración de todo el sistema.
afx_msg void OnSettingChange(
UINT uFlags,
LPCTSTR lpszSection);
Parámetros
uFlags
Cuando el sistema envía el mensaje como resultado de una llamada de SystemParametersInfo
, este parámetro es una marca que indica el parámetro del sistema que se ha cambiado. Para obtener una lista de valores, consulte SystemParametersInfo
en Windows SDK. Cuando una aplicación envía el mensaje, este parámetro debe ser 0.
lpszSection
Apunta a una cadena que especifica el nombre de la sección que ha cambiado. (La cadena no incluye los corchetes que encierran el nombre de sección).
Comentarios
Una aplicación debe enviar el mensaje a todas las ventanas de nivel superior cuando realice cambios en los parámetros del sistema, y Windows enviará el mensaje si el usuario cambia la configuración a través del Panel de control.
El mensaje ON_WM_SETTINGCHANGE
es similar al mensaje ON_WM_WININICHANGE
, con la siguiente diferencia:
Use
ON_WM_SETTINGCHANGE
al ejecutar Windows NT 4.0 o posterior, o en Windows 95/98.Use
ON_WININICHANGE
al ejecutar Windows NT 3.51 o una versión anterior. Este mensaje ahora está obsoleto.
Solo debe tener una de estas macros en el mapa de mensajes. Para escribir un programa que funcione para Windows 95/98 y Windows NT 4.0, escriba un controlador para ON_WM_SETTINGCHANGE
. En Windows NT 3.51, OnSettingChange
llamará al controlador y uFlags
siempre será cero.
CWnd::OnShowWindow
El marco llama a esta función miembro cuando el objeto CWnd
está a punto de ocultarse o mostrarse.
afx_msg void OnShowWindow(
BOOL bShow,
UINT nStatus);
Parámetros
bShow
Especifica si se está mostrando una ventana. Es TRUE
si se está mostrando la ventana; es FALSE
si se está ocultando la ventana.
nStatus
Especifica el estado de la ventana que se está mostrando. Es 0 si el mensaje se envía debido a una llamada de función miembro ShowWindow
; de lo contrario, nStatus
es uno de los siguientes:
SW_PARENTCLOSING
La ventana primaria se está cerrando (se está haciendo icono) o se está ocultando una ventana emergente.SW_PARENTOPENING
La ventana primaria se está abriendo (se está mostrando) o se está mostrando una ventana emergente.
Comentarios
Una ventana se oculta o se muestra cuando se llama a la función miembro ShowWindow
, cuando se maximiza o restaura una ventana superpuesta, o cuando una ventana emergente o superpuesta se cierra (se hace icono) o se abre (se muestra en la pantalla). Cuando se cierra una ventana superpuesta, todas las ventanas emergentes asociadas a esa ventana se ocultan.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnSize
El marco llama a esta función miembro después de que el tamaño de la ventana haya cambiado.
afx_msg void OnSize(
UINT nType,
int cx,
int cy);
Parámetros
nType
Especifica el tipo de cambio de tamaño solicitado. Este parámetro puede establecerse con uno de los siguientes valores:
SIZE_MAXIMIZED
La ventana se ha maximizado.SIZE_MINIMIZED
La ventana se ha minimizado.SIZE_RESTORED
Se ha cambiado el tamaño de la ventana, pero no se aplican niSIZE_MINIMIZED
niSIZE_MAXIMIZED
.SIZE_MAXHIDE
El mensaje se envía a todas las ventanas emergentes cuando se maximiza alguna otra ventana.SIZE_MAXSHOW
El mensaje se envía a todas las ventanas emergentes cuando alguna otra ventana se ha restaurado a su tamaño anterior.
cx
Especifica el nuevo ancho del área cliente.
cy
Especifica el nuevo alto de del área cliente.
Comentarios
Si se llama a la función miembro SetScrollPos
o MoveWindow
para una ventana secundaria desde OnSize
, el parámetro bRedraw
de SetScrollPos
o MoveWindow
debe ser distinto de cero para que CWnd
se vuelva a pintar.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
Ejemplo
// Resize the edit control contained in the view to
// fill the entire view when the view's window is
// resized. CMdiView is a CView derived class.
void CMdiView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// Resize edit to fill the whole view.
// OnSize can be called before OnInitialUpdate
// so make sure the edit control has been created.
if (::IsWindow(m_Edit.GetSafeHwnd()))
{
m_Edit.MoveWindow(0, 0, cx, cy);
}
}
CWnd::OnSizeClipboard
El visor del Portapapeles llama a la función miembro OnSizeClipboard
del propietario del Portapapeles cuando el Portapapeles contiene datos con el atributo CF_OWNERDISPLAY
y el tamaño del área cliente de la ventana del visor del Portapapeles ha cambiado.
afx_msg void OnSizeClipboard(
CWnd* pClipAppWnd,
HGLOBAL hRect);
Parámetros
pClipAppWnd
Identifica la ventana de la aplicación Portapapeles. El puntero puede ser temporal y no se debe almacenar.
hRect
Identifica un objeto de memoria global. El objeto de memoria contiene una estructura de datos RECT
que especifica el área que va a pintar el propietario del Portapapeles.
Comentarios
Se llama a la función miembro OnSizeClipboard
con un rectángulo nulo (0,0,0,0) como nuevo tamaño cuando la aplicación Portapapeles está a punto de destruirse o minimizarse. Esto permite al propietario del Portapapeles liberar sus recursos de visualización.
Dentro de OnSizeClipboard
, una aplicación debe usar la función de Windows GlobalLock
para bloquear la memoria que contiene la estructura de datos RECT
. Haga que la aplicación desbloquee esa memoria con la función de Windows GlobalUnlock
antes de que ceda o devuelva el control.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnSizing
El marco llama a esta función miembro para indicar que el usuario está cambiando el tamaño del rectángulo.
afx_msg void OnSizing(
UINT nSide,
LPRECT lpRect);
Parámetros
nSide
El borde de la ventana que se va a mover.
lpRect
La dirección del CRect
o la estructura RECT
que contendrá las coordenadas del elemento.
Comentarios
Al procesar este mensaje, una aplicación puede supervisar el tamaño y la posición del rectángulo de arrastre y, si fuera necesario, cambiar su tamaño o posición.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
Ejemplo
void CSplitChildFrm::OnSizing(UINT fwSide, LPRECT pRect)
{
CMDIChildWnd::OnSizing(fwSide, pRect);
// Resize the splitter window in the frame. m_wndSplitter is of
// type CSplitterWnd
int nWidth = (pRect->right) - (pRect->left);
m_wndSplitter.SetColumnInfo(0, nWidth / 2, 10);
m_wndSplitter.SetColumnInfo(1, nWidth / 2, 10);
m_wndSplitter.RecalcLayout();
}
CWnd::OnSpoolerStatus
El marco llama a esta función miembro desde el Administrador de impresión cada vez que un trabajo se agrega a la cola del Administrador de impresión o se quita de ella.
afx_msg void OnSpoolerStatus(
UINT nStatus,
UINT nJobs);
Parámetros
nStatus
Especifica la marca SP_JOBSTATUS
.
nJobs
Especifica el número de trabajos restantes en la cola del Administrador de impresión.
Comentarios
Esta llamada sólo tiene fines informativos.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnStyleChanged
El marco llama a esta función miembro después de que la función SetWindowLong
haya cambiado uno o varios estilos de la ventana.
afx_msg void OnStyleChanged(
int nStyleType,
LPSTYLESTRUCT lpStyleStruct);
Parámetros
nStyleType
Especifica si los estilos extendidos o no extendidos de la ventana han cambiado. Este parámetro puede ser una combinación de los siguientes valores:
GWL_EXSTYLE
Los estilos extendidos de la ventana han cambiado.GWL_STYLE
Los estilos no extendidos de la ventana han cambiado.
lpStyleStruct
Apunta a una estructura STYLESTRUCT
que contiene los nuevos estilos para la ventana. Una aplicación puede examinar los estilos, pero no puede cambiarlos.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnStyleChanging
El marco llama a esta función miembro cuando la función SetWindowLong
está a punto de cambiar uno o varios estilos de la ventana.
afx_msg void OnStyleChanging(
int nStyleType,
LPSTYLESTRUCT lpStyleStruct);
Parámetros
nStyleType
Especifica si los estilos extendidos o no extendidos de la ventana han cambiado. Este parámetro puede ser una combinación de los siguientes valores:
GWL_EXSTYLE
Los estilos extendidos de la ventana han cambiado.GWL_STYLE
Los estilos no extendidos de la ventana han cambiado.
lpStyleStruct
Apunta a una estructura STYLESTRUCT
que contiene los nuevos estilos para la ventana. Una aplicación puede examinar los estilos y cambiarlos.
Comentarios
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnSysChar
El marco llama a esta función miembro si CWnd
tiene el foco de entrada y los mensajes WM_SYSKEYUP
y WM_SYSKEYDOWN
están traducidos.
afx_msg void OnSysChar(
UINT nChar,
UINT nRepCnt,
UINT nFlags);
Parámetros
nChar
Especifica el código de tecla de carácter ASCII de una tecla del menú Control.
nRepCnt
Especifica el recuento de repeticiones, es decir, el número de veces que se repite la pulsación de tecla como resultado de que el usuario mantenga presionada la tecla.
nFlags
El parámetro nFlags
puede tener estos valores:
Valor | Significado |
---|---|
0-15 | Especifica el recuento de repeticiones. El valor es el número de veces que se repite la pulsación de tecla como resultado de que el usuario mantenga presionada la tecla. |
16-23 | Especifica el código de examen. El valor depende del fabricante del equipo original (OEM). |
24 | Especifica si la tecla es una tecla extendida, como las teclas ALT y CTRL de la derecha que aparecen en un teclado mejorado de 101 o 102 teclas. El valor es 1 si es una tecla extendida; de lo contrario, es 0. |
25-28 | Windows los usa de manera interna. |
29 | Especifica el código de contexto. El valor es 1 si la tecla ALT se mantiene presionada mientras se presiona la tecla; de lo contrario, el valor es 0. |
30 | Especifica el estado de tecla anterior. El valor es 1 si la tecla está presionada antes de que se envíe el mensaje, o es 0 si la tecla no está presionada. |
31 | Especifica el estado de transición. El valor es 1 si se está liberando la tecla, o 0 si se está presionando la tecla. |
Comentarios
Especifica el código de tecla virtual de la tecla del menú de Control. (Para obtener una lista de códigos de tecla virtual estándar, consulte Winuser.h).
Cuando el código de contexto es 0, WM_SYSCHAR
puede pasar el mensaje WM_SYSCHAR
a la función de Windows TranslateAccelerator
, que lo controlará como si fuera un mensaje de una tecla normal en lugar de una tecla de carácter del sistema. Esto permite usar las teclas de aceleración con la ventana activa incluso si la ventana activa no tiene el foco de entrada.
Para los teclados IBM mejorados con 101 o 102 teclas, las teclas mejoradas son las teclas ALT derecha y CTRL derecha en la sección principal del teclado; las teclas INS, SUPR, INICIO, FIN, REPÁG, AVPÁG y las teclas con flechas en los clústeres a la izquierda del teclado numérico, así como las teclas de barra diagonal (/) y ENTRAR en el teclado numérico. Otros teclados pueden admitir el bit de tecla extendida en nFlags
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnSysColorChange
El marco llama a esta función miembro para todas las ventanas de nivel superior cuando se realiza un cambio en la configuración de color del sistema.
afx_msg void OnSysColorChange();
Comentarios
Windows llama a OnSysColorChange
para cualquier ventana afectada por un cambio de color del sistema.
Las aplicaciones que tienen pinceles que usan los colores del sistema existentes deben eliminar esos pinceles y volver a crearlos con los nuevos colores del sistema.
CWnd::OnSysCommand
El marco llama a esta función miembro cuando el usuario selecciona un comando en el menú Control, o cuando el usuario selecciona el botón para maximizar o minimizar.
afx_msg void OnSysCommand(
UINT nID,
LPARAM lParam);
Parámetros
nID
Especifica el tipo de comando de sistema solicitado. Este parámetro puede establecerse en uno de los siguientes valores:
SC_CLOSE
Cerrar el objetoCWnd
.SC_HOTKEY
Activar el objetoCWnd
asociado a la tecla activa especificada por la aplicación. La palabra de valor inferior delParam
identifica elHWND
de la ventana que se va a activar.SC_HSCROLL
Realizar un desplazamiento horizontal.SC_KEYMENU
Recuperar un menú a través de una pulsación de tecla.SC_MAXIMIZE
(oSC_ZOOM
) Maximizar el objetoCWnd
.SC_MINIMIZE
(oSC_ICON
) Minimizar el objetoCWnd
.SC_MOUSEMENU
Recuperar un menú mediante un clic del mouse.SC_MOVE
Mover el objetoCWnd
.SC_NEXTWINDOW
Desplazarse a la ventana siguiente.SC_PREVWINDOW
Desplazarse a la ventana anterior.SC_RESTORE
Restaurar la ventana a la posición y el tamaño normales.SC_SCREENSAVE
Ejecutar la aplicación de protector de pantalla especificada en la sección [arranque] del archivoSYSTEM.INI
.SC_SIZE
Ajustar el tamaño del objetoCWnd
.SC_TASKLIST
Ejecutar o activar la aplicación Administrador de tareas de Windows.SC_VSCROLL
Realizar un desplazamiento vertical.
lParam
Si se elige un comando del menú de Control con el mouse, lParam
contiene las coordenadas del cursor. La palabra de valor inferior contiene la coordenada x, y la palabra de valor superior contiene la coordenada y. En caso contrario, este parámetro no se usa.
SC_HOTKEY
Activar la ventana asociada a la tecla activa especificada por la aplicación. La palabra de valor inferior delParam
identifica la ventana que se va a activar.SC_SCREENSAVE
Ejecutar la aplicación de protector de pantalla especificada en la sección Escritorio de Panel de control.
Comentarios
De forma predeterminada, OnSysCommand
lleva a cabo la solicitud del menú Control para las acciones predefinidas especificadas en la tabla anterior.
En los mensajes WM_SYSCOMMAND
, Windows usa internamente los cuatro bits de valor inferior del parámetro nID
. Cuando una aplicación prueba el valor de nID
, debe combinar el valor 0xFFF0 con el valor nID
mediante el operador bit a bit AND para obtener el resultado correcto.
Los elementos de menú de un menú Control se pueden modificar con las funciones miembro GetSystemMenu
, AppendMenu
, InsertMenu
y ModifyMenu
. Las aplicaciones que modifican el menú Control deben procesar mensajes WM_SYSCOMMAND
, y todos los mensajes WM_SYSCOMMAND
no administrados por la aplicación deben pasarse a OnSysCommand
. Todos los valores de comando agregados por una aplicación debe procesarlos la aplicación y no se pueden pasar a OnSysCommand
.
Una aplicación puede llevar a cabo cualquier comando del sistema en cualquier momento pasando un mensaje WM_SYSCOMMAND
a OnSysCommand
.
Las pulsaciones de tecla de aceleración (método abreviado) que se definen para seleccionar elementos del menú Control se traducen en llamadas de OnSysCommand
; todas las demás pulsaciones de tecla de aceleración se traducen en mensajes WM_COMMAND
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnSysDeadChar
El marco llama a esta función miembro si el objeto CWnd
tiene el foco de entrada cuando se llama a la función miembro OnSysKeyUp
o OnSysKeyDown
.
afx_msg void OnSysDeadChar(
UINT nChar,
UINT nRepCnt,
UINT nFlags);
Parámetros
nChar
Especifica el valor del carácter de tecla inactiva.
nRepCnt
Especifica el recuento de repeticiones.
nFlags
Contiene el código de examen, el código de transición de teclas, el estado de tecla anterior y el código de contexto, como se muestra en la lista siguiente:
Valor | Significado |
---|---|
0-7 | Código de examen (valor dependiente del OEM). Byte bajo de palabra de valor superior. |
8 | Tecla extendida, como una tecla de función o una tecla del teclado numérico (1 si es una tecla extendida; en caso contrario, 0). |
9-10 | No utilizado. |
11-12 | Windows los usa de manera interna. |
13 | Código de contexto (1 si se mantiene presionada la tecla ALT mientras se presiona la tecla; en caso contrario, 0). |
14 | Estado de tecla anterior (1 si la tecla está presionada antes de la llamada, 0 si la tecla no está presionada). |
15 | Estado de transición (1 si se está liberando la tecla, 0 si se está presionando la tecla). |
Comentarios
Especifica el valor de carácter de una tecla inactiva.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnSysKeyDown
Si el objeto CWnd
tiene el foco de entrada, el marco llama a la función miembro OnSysKeyDown
cuando el usuario mantiene presionada la tecla ALT y, a continuación, presiona otra tecla.
afx_msg void OnSysKeyDown(
UINT nChar,
UINT nRepCnt,
UINT nFlags);
Parámetros
nChar
Especifica el código de tecla virtual de la tecla que se está presionando. Para obtener una lista de códigos de tecla virtual estándar, consulte Winuser.h.
nRepCnt
Especifica el recuento de repeticiones.
nFlags
Contiene el código de examen, el código de transición de teclas, el estado de tecla anterior y el código de contexto, como se muestra en la lista siguiente:
Valor | Significado |
---|---|
0-7 | Código de examen (valor dependiente del OEM). Byte bajo de palabra de valor superior. |
8 | Tecla extendida, como una tecla de función o una tecla del teclado numérico (1 si es una tecla extendida; en caso contrario, 0). |
9-10 | No utilizado. |
11-12 | Windows los usa de manera interna. |
13 | Código de contexto (1 si se mantiene presionada la tecla ALT mientras se presiona la tecla; en caso contrario, 0). |
14 | Estado de tecla anterior (1 si la tecla está presionada antes de que se envíe el mensaje, 0 si la tecla no está presionada). |
15 | Estado de transición (1 si se está liberando la tecla, 0 si se está presionando la tecla). |
En el caso de las llamadas de OnSysKeyDown
, el bit de transición de tecla (bit 15) es 0. El bit de código de contexto (bit 13) es 1 si la tecla ALT está presionada mientras se presiona la tecla; es 0 si el mensaje se envía a la ventana activa porque ninguna ventana tiene el foco de entrada.
Comentarios
Si actualmente no hay ninguna ventana con el foco de entrada, se llama a la función miembro OnSysKeyDown
de la ventana activa. El objeto CWnd
que recibe el mensaje puede distinguir entre estos dos contextos comprobando el código de contexto en nFlags
.
Cuando el código de contexto es 0, el mensaje WM_SYSKEYDOWN
que recibe OnSysKeyDown
se puede pasar a la función de Windows TranslateAccelerator
, que lo controlará como si fuera un mensaje de una tecla normal en lugar de una tecla de carácter del sistema. Esto permite usar las teclas de aceleración con la ventana activa incluso si la ventana activa no tiene el foco de entrada.
Debido a la repetición automática, puede producirse más de una llamada de OnSysKeyDown
antes de que se reciba el mensaje WM_SYSKEYUP
. El estado de tecla anterior (bit 14) se puede usar para determinar si la llamada de OnSysKeyDown
indica la primera transición descendente o una transición descendente repetida.
Para los teclados IBM mejorados con 101 y 102 teclas, las teclas mejoradas son las teclas ALT derecha y CTRL derecha en la sección principal del teclado; las teclas INS, SUPR, INICIO, FIN, REPÁG, AVPÁG y las teclas con flechas en los clústeres a la izquierda del teclado numérico, así como las teclas de barra diagonal (/) y ENTRAR en el teclado numérico. Otros teclados pueden admitir el bit de tecla extendida en nFlags
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnSysKeyUp
Si el objeto CWnd
tiene el foco, el marco llama a la función miembro OnSysKeyUp
cuando el usuario libera una tecla que ha presionado mientras se mantiene presionada la tecla ALT.
afx_msg void OnSysKeyUp(
UINT nChar,
UINT nRepCnt,
UINT nFlags);
Parámetros
nChar
Especifica el código de tecla virtual de la tecla que se está presionando. Para obtener una lista de códigos de tecla virtual estándar, consulte Winuser.h
.
nRepCnt
Especifica el recuento de repeticiones.
nFlags
Contiene el código de examen, el código de transición de teclas, el estado de tecla anterior y el código de contexto, como se muestra en la lista siguiente:
Valor | Significado |
---|---|
0-7 | Código de examen (valor dependiente del OEM). Byte bajo de palabra de valor superior. |
8 | Tecla extendida, como una tecla de función o una tecla del teclado numérico (1 si es una tecla extendida; en caso contrario, 0). |
9-10 | No utilizado. |
11-12 | Windows los usa de manera interna. |
13 | Código de contexto (1 si se mantiene presionada la tecla ALT mientras se presiona la tecla; en caso contrario, 0). |
14 | Estado de tecla anterior (1 si la tecla está presionada antes de que se envíe el mensaje, 0 si la tecla no está presionada). |
15 | Estado de transición (1 si se está liberando la tecla, 0 si se está presionando la tecla). |
En el caso de las llamadas de OnSysKeyUp
, el bit de transición de tecla (bit 15) es 1. El bit de código de contexto (bit 13) es 1 si la tecla ALT está presionada mientras se presiona la tecla; es 0 si el mensaje se envía a la ventana activa porque ninguna ventana tiene el foco de entrada.
Comentarios
Si actualmente no hay ninguna ventana con el foco de entrada, se llama a la función miembro OnSysKeyUp
de la ventana activa. El objeto CWnd
que recibe la llamada puede distinguir entre estos dos contextos comprobando el código de contexto en nFlags
.
Cuando el código de contexto es 0, el mensaje WM_SYSKEYUP
que recibe OnSysKeyUp
se puede pasar a la función de Windows TranslateAccelerator
, que lo controlará como si fuera un mensaje de una tecla normal en lugar de una tecla de carácter del sistema. Esto permite usar las teclas de aceleración (método abreviado) con la ventana activa incluso si la ventana activa no tiene el foco de entrada.
Para los teclados IBM mejorados con 101 o 102 teclas, las teclas mejoradas son las teclas ALT derecha y CTRL derecha en la sección principal del teclado; las teclas INS, SUPR, INICIO, FIN, REPÁG, AVPÁG y las teclas con flechas en los clústeres a la izquierda del teclado numérico, así como las teclas de barra diagonal (/) y ENTRAR en el teclado numérico. Algunos teclados pueden admitir el bit de tecla extendida en nFlags.
Para los teclados mejorados de 102 teclas que no son de EE. UU., la tecla ALT derecha se controla como la combinación de teclas CTRL+ALT. A continuación se muestra la secuencia de mensajes y llamadas que resultan cuando el usuario presiona y suelta esta tecla:
Secuencia | Función a la que se ha accedido | Mensaje que se ha pasado |
---|---|---|
1. | WM_KEYDOWN |
VK_CONTROL |
2. | WM_KEYDOWN |
VK_MENU |
3. | WM_KEYUP |
VK_CONTROL |
4. | WM_SYSKEYUP |
VK_MENU |
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnTCard
El marco llama a esta función miembro cuando el usuario hace clic en un botón que se puede modificar.
afx_msg void OnTCard(
UINT idAction,
DWORD dwActionData);
Parámetros
idAction
Indica la acción que ha realizado el usuario. El parámetro puede ser uno de estos valores:
IDABORT
El usuario ha hecho clic en un botón Anular que se puede modificar.IDCANCEL
El usuario ha hecho clic en un botón Cancelar que se puede modificar.IDCLOSE
El usuario ha cerrado la tarjeta de entrenamiento.IDHELP
El usuario ha hecho clic en un botón de ayuda de Windows que se puede modificar.IDIGNORE
El usuario ha hecho clic en un botón Ignorar que se puede modificar.IDOK
El usuario ha hecho clic en un botón Aceptar que se puede modificar.IDNO
El usuario ha hecho clic en un botón No que se puede modificar.IDRETRY
El usuario ha hecho clic en un botón Reintentar que se puede modificar.HELP_TCARD_DATA
El usuario ha hecho clic en un botón que se puede modificar. El parámetrodwActionData
contiene un entero largo especificado por el autor de la ayuda.HELP_TCARD_NEXT
El usuario ha hecho clic en un botón Siguiente que se puede modificar.HELP_TCARD_OTHER_CALLER
Otra aplicación ha solicitado tarjetas de entrenamiento.IDYES
El usuario ha hecho clic en un botón Sí que se puede modificar.
dwActionData
Si idAction
especifica HELP_TCARD_DATA
, este parámetro es un entero largo especificado por el autor de la ayuda. De lo contrario, este parámetro es cero.
Comentarios
Se llama a esta función sólo cuando una aplicación ha iniciado una tarjeta de entrenamiento con la Ayuda de Windows. Una aplicación inicia una tarjeta de entrenamiento especificando el comando HELP_TCARD
en una llamada a la función WinHelp
.
CWnd::OnTimeChange
El marco llama a esta función miembro después de que la hora del sistema haya cambiado.
afx_msg void OnTimeChange();
Comentarios
Haga que cualquier aplicación que cambie la hora del sistema envíe este mensaje a todas las ventanas de nivel superior. Para enviar el mensaje WM_TIMECHANGE
a todas las ventanas de nivel superior, una aplicación puede usar la función de Windows SendMessage
con su parámetro hwnd
establecido en HWND_BROADCAST
.
CWnd::OnTimer
El marco llama a esta función miembro después de cada intervalo especificado en la función miembro SetTimer
usada para instalar un temporizador.
afx_msg void OnTimer(UINT_PTR nIDEvent);
Parámetros
nIDEvent
Especifica el identificador del temporizador.
Comentarios
La función de Windows DispatchMessage
envía un mensaje WM_TIMER
cuando no hay ningún otro mensaje en la cola de mensajes de la aplicación.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
Ejemplo
Consulte el ejemplo de CWnd::SetTimer
.
CWnd::OnToolHitTest
El marco llama a esta función miembro para determinar si un punto está en el rectángulo delimitador de la herramienta especificada.
virtual INT_PTR OnToolHitTest(
CPoint point,
TOOLINFO* pTI) const;
Parámetros
point
Especifica las coordenadas x e y del cursor. Las coordenadas siempre son relativas a la esquina superior izquierda de la ventana.
pTI
Un puntero a una estructura TOOLINFO
. Los siguientes valores de estructura se establecen de forma predeterminada:
hwnd
=m_hWnd
Identificador de una ventanauId
=(UINT)hWndChild
Identificador de una ventana secundariauFlags
|=TTF_IDISHWND
Identificador de la herramientalpszText
=LPSTR_TEXTCALLBACK
Puntero a la cadena que se va a mostrar en la ventana especificada
Valor devuelto
Si se ha encontrado el control de información sobre herramientas, el Id. del control de ventana. Si no se ha encontrado el control de información sobre herramientas, -1.
Comentarios
Si el punto está en el rectángulo, recupera información sobre la herramienta.
Si el área con la que está asociada la información sobre herramientas no es un botón, OnToolHitTest
establece las marcas de estructura en TTF_NOTBUTTON
y TTF_CENTERTIP
.
Invalide OnToolHitTest
para proporcionar información diferente a la predeterminada.
Consulte TOOLINFO
de Windows SDK para obtener más información sobre la estructura.
CWnd::OnTouchInput
Procese una única entrada de tecnología táctil de Windows.
virtual BOOL OnTouchInput(
CPoint pt,
int nInputNumber,
int nInputsCount,
PTOUCHINPUT pInput);
Parámetros
pt
El punto en el que se ha tocado la pantalla (en las coordenadas cliente).
nInputNumber
El número de entrada táctil.
nInputsCount
El número total de entradas táctiles.
pInput
Puntero a la estructura TOUCHINPUT
.
Valor devuelto
TRUE
si la aplicación procesa la entrada táctil de Windows; de lo contrario, FALSE
.
Comentarios
CWnd::OnTouchInputs
Procesa entradas táctiles de Windows.
virtual BOOL OnTouchInputs(
UINT nInputsCount,
PTOUCHINPUT pInputs);
Parámetros
nInputsCount
Número total de entradas táctiles de Windows.
pInputs
Matriz de TOUCHINPUT
.
Valor devuelto
TRUE
si la aplicación procesa entradas táctiles de Windows; de lo contrario, FALSE
.
Comentarios
CWnd::OnUniChar
El marco llama a esta función miembro cuando se presiona una tecla. Es decir, la ventana actual tiene el foco del teclado y la función TranslateMessage
traduce un mensaje WM_KEYDOWN
.
afx_msg void OnUniChar(
UINT nChar,
UINT nRepCnt,
UINT nFlags);
Parámetros
nChar
[entrada] Especifica el código de carácter de la tecla presionada.
nRepCnt
[entrada] Especifica el recuento de repeticiones para el mensaje actual. El valor es el número de veces que se repite la pulsación de tecla como resultado de que el usuario mantenga presionada la tecla. Si la tecla se mantiene presionada durante un tiempo suficiente, se envían varios mensajes. Sin embargo, el recuento de repeticiones no es acumulativo.
nFlags
[entrada] Las marcas que especifican el código de examen, la tecla extendida, el código de contexto, el estado de tecla anterior y el estado de transición, como se muestra en la tabla siguiente:
Los bits de marca | Descripción |
---|---|
0-7 | Especifica el código de examen. El valor depende del fabricante del equipo original (OEM). |
8 | Especifica si la tecla es una tecla extendida, como las teclas ALT y CTRL de la derecha que aparecen en un teclado mejorado de 101 o 102 teclas. La marca es 1 si la tecla es una tecla extendida; de lo contrario, es 0. |
9-12 | Windows los usa de manera interna. |
13 | Especifica el código de contexto. El valor es 1 si la tecla ALT se mantiene presionada mientras se presiona la tecla; de lo contrario, el valor es 0. |
14 Especifica el estado de tecla anterior. El valor es 1 si la tecla está presionada antes de que se envíe el mensaje, o 0 si la tecla no está presionada. | |
15 | Especifica el estado de transición. El valor es 1 si se está liberando la tecla, o 0 si se está presionando la tecla. |
Comentarios
Este método recibe la notificación WM_UNICHAR
, descrita en Windows SDK. El mensaje WM_UNICHAR
está diseñado para enviar o publicar caracteres Unicode en ventanas ANSI. Es equivalente al mensaje WM_CHAR
, pero usa la codificación de Formato de transformación Unicode-32 (UTF-32), mientras que el mensaje WM_CHAR
usa UTF-16.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnUnInitMenuPopup
El marco llama a esta función miembro cuando se ha destruido un menú o un submenú desplegable.
afx_msg void OnUnInitMenuPopup(
CMenu* pPopupMenu,
UINT nFlags);
Parámetros
pMenu
[entrada] El puntero al objeto CMenu
que representa el menú o submenú.
nFlags
[entrada] El menú que se ha destruido. Actualmente, solo puede ser el menú de la ventana, MF_SYSMENU
.
Comentarios
Este método recibe la notificación WM_UNINITMENUPOPUP
, descrita en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnUpdateUIState
Se llama para cambiar el estado de la interfaz de usuario de la ventana especificada y de todas sus ventanas secundarias.
afx_msg void OnUpdateUIState(
UINT nAction,
UINT nUIElement);
Parámetros
nAction
Especifica la acción que se va a realizar. Puede ser uno de los siguientes valores:
UIS_CLEAR
El elemento de estado de la interfaz de usuario (especificado pornUIElement
) debe estar oculto.UIS_INITIALIZE
El elemento de estado de la interfaz de usuario (especificado pornUIElement
) debe cambiarse en función del último evento de entrada. Para obtener más información, consulte la sección Comentarios deWM_UPDATEISTATE
.UIS_SET
El elemento de estado de la interfaz de usuario (especificado pornUIElement
) debe ser visible.
nUIElement
Especifica qué elementos de estado de la interfaz de usuario se ven afectados, o el estilo del control. Puede ser uno de los siguientes valores:
UISF_HIDEACCEL
Aceleradores de teclado.UISF_HIDEFOCUS
Indicadores de foco.UISF_ACTIVE
Windows XP: se debe dibujar un control en el estilo usado para los controles activos.
Comentarios
Esta función miembro se usa para emular la funcionalidad del mensaje WM_UPDATEUISTATE
, tal como se describe en Windows SDK.
CWnd::OnUserChanged
El marco llama a este miembro para todas las ventanas después de que el usuario haya iniciado o cerrado sesión.
afx_msg void OnUserChanged();
Comentarios
Este método recibe un mensaje de notificación WM_USERCHANGED
, descrito en Windows SDK. Cuando el usuario inicia o cierra sesión, el sistema operativo actualiza la configuración específica del usuario. El sistema envía este mensaje inmediatamente después de actualizar la configuración.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnVKeyToItem
Si el objeto CWnd
posee un cuadro de lista con el estilo LBS_WANTKEYBOARDINPUT
, el cuadro de lista enviará el mensaje WM_VKEYTOITEM
en respuesta a un mensaje WM_KEYDOWN
.
afx_msg int OnVKeyToItem(
UINT nKey,
CListBox* pListBox,
UINT nIndex);
Parámetros
nKey
Especifica el código de tecla virtual de la tecla que ha presionado el usuario. Para obtener una lista de códigos de tecla virtual estándar, consulte Winuser.h
.
pListBox
Especifica un puntero al cuadro de lista. El puntero puede ser temporal y no se debe almacenar para su uso posterior.
nIndex
Especifica la posición actual del cursor de inserción.
Valor devuelto
Especifica la acción que ha realizado la aplicación en respuesta al mensaje. Un valor devuelto de -2 indica que la aplicación ha controlado todos los aspectos de la selección del elemento y no requiere ninguna acción adicional por parte del cuadro de lista. Si el valor devuelto es -1, el cuadro de lista debe realizar la acción predeterminada en respuesta a la pulsación de tecla. Un valor devuelto que sea 0 o mayor que 0 especifica el índice de base cero de un elemento en el cuadro de lista e indica que el cuadro de lista debe realizar la acción predeterminada para la pulsación de tecla en el elemento especificado.
Comentarios
El marco sólo llama a esta función miembro para los cuadros de lista que tienen el estilo LBS_HASSTRINGS
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnVScroll
El marco llama a esta función miembro cuando el usuario hace clic en la barra de desplazamiento vertical de una ventana.
afx_msg void OnVScroll(
UINT nSBCode,
UINT nPos,
CScrollBar* pScrollBar);
Parámetros
nSBCode
Especifica un código de barra de desplazamiento que indica la solicitud de desplazamiento del usuario. Este parámetro puede ser uno de los siguientes:
SB_BOTTOM
Desplazamiento al final.SB_ENDSCROLL
Fin del desplazamiento.SB_LINEDOWN
Desplazamiento de una línea hacia abajo.SB_LINEUP
Desplazamiento de una línea hacia arriba.SB_PAGEDOWN
Desplazamiento de una página hacia abajo.SB_PAGEUP
Desplazamiento de una página hacia arriba.SB_THUMBPOSITION
Desplazamiento a la posición absoluta. La posición actual se proporciona ennPos
.SB_THUMBTRACK
Arrastre del cuadro de desplazamiento hasta la posición especificada. La posición actual se proporciona ennPos
.SB_TOP
Desplazamiento al principio.
nPos
Contiene la posición actual del cuadro de desplazamiento si el código de barra de desplazamiento es SB_THUMBPOSITION
o SB_THUMBTRACK
; de lo contrario, no se usa. En función del intervalo de desplazamiento inicial, nPos
puede ser negativo y debe convertirse a un int
si es necesario.
pScrollBar
Si el mensaje de desplazamiento procede de un control de barra de desplazamiento, contiene un puntero al control. Si el usuario hace clic en la barra de desplazamiento de una ventana, este parámetro es NULL
. El puntero puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
OnVScroll
lo usan normalmente las aplicaciones que proporcionan información mientras se arrastra el cuadro de desplazamiento.
Si OnVScroll
desplaza el contenido del objeto CWnd
, también debe restablecer la posición del cuadro de desplazamiento con la función miembro SetScrollPos
.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnVScrollClipboard
El visor del Portapapeles llama a la función miembro OnVScrollClipboard
del propietario del Portapapeles cuando los datos del Portapapeles tienen el formato CF_OWNERDISPLAY
y hay un evento en la barra de desplazamiento vertical del visor del Portapapeles.
afx_msg void OnVScrollClipboard(
CWnd* pClipAppWnd,
UINT nSBCode,
UINT nPos);
Parámetros
pClipAppWnd
Especifica un puntero a una ventana del visor del Portapapeles. El puntero puede ser temporal y no se debe almacenar para su uso posterior.
nSBCode
Especifica uno de los siguientes valores de barra de desplazamiento:
SB_BOTTOM
Desplazamiento al final.SB_ENDSCROLL
Fin del desplazamiento.SB_LINEDOWN
Desplazamiento de una línea hacia abajo.SB_LINEUP
Desplazamiento de una línea hacia arriba.SB_PAGEDOWN
Desplazamiento de una página hacia abajo.SB_PAGEUP
Desplazamiento de una página hacia arriba.SB_THUMBPOSITION
Desplazamiento a la posición absoluta. La posición actual se proporciona ennPos
.SB_TOP
Desplazamiento al principio.
nPos
Contiene la posición del cuadro de desplazamiento si el código de barra de desplazamiento es SB_THUMBPOSITION
; de lo contrario, nPos
no se usa.
Comentarios
El propietario tiene que desplazarse por la imagen del Portapapeles, invalidar la sección correspondiente y actualizar los valores de la barra de desplazamiento.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnWindowMaximizedChanged
El marco llama a este miembro cuando se maximiza la ventana actual y el Administrador de ventanas de escritorio (DWM) ha compuesto la ventana.
afx_msg void OnWindowMaximizedChanged(BOOL bIsMaximized);
Parámetros
bIsMaximized
[entrada] TRUE
si la ventana actual está maximizada y FALSE
si no es así.
Comentarios
Este método recibe un mensaje de notificación WM_DWMWINDOWMAXIMIZEDCHANGE
, descrito en Windows SDK.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnWindowPosChanged
El marco llama a esta función miembro cuando el tamaño, la posición o el orden Z ha cambiado como resultado de una llamada a la función miembro SetWindowPos
o a otra función de administración de ventanas.
afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
Parámetros
lpwndpos
Apunta a una estructura de datos WINDOWPOS
que contiene información sobre los nuevos tamaño y posición de la ventana.
Comentarios
La implementación predeterminada envía los mensajes WM_SIZE
y WM_MOVE
a la ventana. Estos mensajes no se envían si una aplicación controla la llamada de OnWindowPosChanged
sin llamar a su clase base. Es más eficaz realizar cualquier procesamiento de movimiento o de cambio de tamaño durante la llamada a OnWindowPosChanged
sin llamar a su clase base.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnWindowPosChanging
El marco llama a esta función miembro cuando el tamaño, la posición o el orden Z va a cambiarse como resultado de una llamada a la función miembro SetWindowPos
o a otra función de administración de ventanas.
afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
Parámetros
lpwndpos
Apunta a una estructura de datos WINDOWPOS
que contiene información sobre los nuevos tamaño y posición de la ventana.
Comentarios
Una aplicación puede impedir cambios en la ventana estableciendo o borrando los bits adecuados en el miembro flags
de la estructura WINDOWPOS
.
Para una ventana con el estilo WS_OVERLAPPED
o WS_THICKFRAME
, la implementación predeterminada envía un mensaje WM_GETMINMAXINFO
a la ventana. Esto se hace para validar los nuevos tamaño y posición de la ventana y para aplicar los estilos de cliente CS_BYTEALIGNCLIENT
y CS_BYTEALIGN
. Una aplicación puede invalidar esta funcionalidad sin llamar a su clase base.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnWinIniChange
El marco llama a esta función miembro después de que se realice un cambio en el archivo de inicialización de Windows, WIN.INI
.
afx_msg void OnWinIniChange(LPCTSTR lpszSection);
Parámetros
lpszSection
Apunta a una cadena que especifica el nombre de la sección que ha cambiado. (La cadena no incluye los corchetes que encierran el nombre de sección).
Comentarios
La función de Windows SystemParametersInfo
llama a OnWinIniChange
después de que una aplicación use la función para cambiar una configuración en el archivo WIN.INI
.
Para enviar el mensaje WM_WININICHANGE
a todas las ventanas de nivel superior, una aplicación puede usar la función de Windows SendMessage
con su parámetro hwnd
establecido en HWND_BROADCAST
.
Si una aplicación cambia muchas secciones diferentes en WIN.INI
al mismo tiempo, la aplicación debe enviar un mensaje WM_WININICHANGE
con lpszSection
establecido en NULL
. De lo contrario, una aplicación debe enviar WM_WININICHANGE
cada vez que realiza un cambio en WIN.INI
.
Si una aplicación recibe una llamada de OnWinIniChange
con lpszSection
establecida en NULL
, la aplicación debe comprobar todas las secciones de WIN.INI que afectan a la aplicación.
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnWndMsg
Se llama a esta función miembro mediante WindowProc
, o durante la reflexión del mensaje.
virtual BOOL OnWndMsg(
UINT message,
WPARAM wParam,
LPARAM lParam,
LRESULT* pResult);
Parámetros
message
Especifica el mensaje que se va a enviar.
wParam
Proporciona información adicional dependiente del mensaje.
lParam
Proporciona información adicional dependiente del mensaje.
pResult
El valor devuelto de WindowProc
. Depende del mensaje; puede ser NULL
.
Valor devuelto
TRUE si se ha controlado el mensaje; en caso contrario, FALSE.
Comentarios
OnWndMsg
determina el tipo de mensaje y llama a la función de marco adecuada (por ejemplo, OnCommand
para WM_COMMAND
), o bien busca el mensaje adecuado en el mapa de mensajes.
Para obtener más información sobre la reflexión de mensajes, consulte Control de mensajes reflejados.
CWnd::OnXButtonDblClk
El marco llama a esta función miembro cuando el usuario hace doble clic en XBUTTON1
o XBUTTON2
mientras el cursor está en el área cliente de una ventana.
afx_msg void OnXButtonDblClk(
UINT nFlags,
UINT nButton,
CPoint point);
Parámetros
nFlags
[entrada] Una combinación bit a bit (OR) de marcas que indica qué teclas modificadoras están presionadas. Por ejemplo, la marca MK_CONTROL
indica que se presiona la tecla CTRL.
nButton
[entrada] Un valor de XBUTTON1
si se hace doble clic en el primer botón X de Microsoft Intellimouse, o XBUTTON2 si se hace doble clic en el segundo botón X.
point
[entrada] Un objeto CPoint
que especifica las coordenadas x
y y
del cursor en relación con la esquina superior izquierda del área cliente.
Comentarios
Este método recibe la notificación WM_XBUTTONDBLCLK
, descrita en Windows SDK. Si el mouse no se captura, el mensaje se publica en la ventana debajo del cursor. De lo contrario, el mensaje se publica en la ventana que ha capturado el mouse.
El parámetro nFlags
puede ser una combinación de las teclas modificadoras enumeradas en la tabla siguiente. Para obtener más información, consulte Acerca de la entrada del mouse.
Tecla modificadora | Descripción |
---|---|
MK_CONTROL |
Se presiona la tecla CTRL. |
MK_LBUTTON |
Se presiona el botón izquierdo del mouse. |
MK_MBUTTON |
Se presiona el botón central del mouse. |
MK_RBUTTON |
Se presiona el botón derecho del mouse. |
MK_SHIFT |
Se presiona la tecla MAYÚS. |
MK_XBUTTON1 |
Se presiona el botón del mouse XBUTTON1 de Microsoft IntelliMouse. |
MK_XBUTTON2 |
Se presiona el botón del mouse XBUTTON2 de Microsoft IntelliMouse. |
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnXButtonDown
El marco llama a esta función miembro cuando el usuario presiona XBUTTON1
o XBUTTON2
mientras el cursor está en el área cliente de una ventana.
afx_msg void OnXButtonDown(
UINT nFlags,
UINT nButton,
CPoint point);
Parámetros
nFlags
[entrada] Una combinación bit a bit (OR) de marcas que indica qué teclas modificadoras están presionadas. Por ejemplo, la marca MK_CONTROL
indica que se presiona la tecla CTRL.
nButton
[entrada] Un valor de XBUTTON1
si se hace clic en el primer botón X de Microsoft Intellimouse, o XBUTTON2
si se hace clic en el segundo botón X.
point
[entrada] Un objeto CPoint
que especifica las coordenadas x
y y
del cursor en relación con la esquina superior izquierda del área cliente.
Comentarios
Este método recibe la notificación WM_XBUTTONDOWN
, descrita en Windows SDK. Si el mouse no se captura, el mensaje se publica en la ventana debajo del cursor. De lo contrario, el mensaje se publica en la ventana que ha capturado el mouse.
El parámetro nFlags
puede ser una combinación de las teclas modificadoras enumeradas en la tabla siguiente. Para obtener más información, consulte Acerca de la entrada del mouse.
Tecla modificadora | Descripción |
---|---|
MK_CONTROL |
Se presiona la tecla CTRL. |
MK_LBUTTON |
Se presiona el botón izquierdo del mouse. |
MK_MBUTTON |
Se presiona el botón central del mouse. |
MK_RBUTTON |
Se presiona el botón derecho del mouse. |
MK_SHIFT |
Se presiona la tecla MAYÚS. |
MK_XBUTTON1 |
Se presiona el botón del mouse XBUTTON1 de Microsoft IntelliMouse. |
MK_XBUTTON2 |
Se presiona el botón del mouse XBUTTON2 de Microsoft IntelliMouse. |
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OnXButtonUp
El marco llama a esta función miembro cuando el usuario libera XBUTTON1
o XBUTTON2
mientras el cursor está en el área cliente de una ventana.
afx_msg void OnXButtonUp(
UINT nFlags,
UINT nButton,
CPoint point);
Parámetros
nFlags
[entrada] Una combinación bit a bit (OR) de marcas que indica qué teclas modificadoras están presionadas. Por ejemplo, la marca MK_CONTROL
indica que se presiona la tecla CTRL.
nButton
[entrada] Un valor de XBUTTON1
si se hace doble clic en el primer botón X de Microsoft Intellimouse, o XBUTTON2
si se hace doble clic en el segundo botón X.
point
[entrada] Un objeto CPoint
que especifica las coordenadas x
y y
del cursor en relación con la esquina superior izquierda del área cliente.
Comentarios
Este método recibe la notificación WM_XBUTTONUP
, descrita en Windows SDK. Si el mouse no se captura, el mensaje se publica en la ventana debajo del cursor. De lo contrario, el mensaje se publica en la ventana que ha capturado el mouse.
El parámetro nFlags
puede ser una combinación de las teclas modificadoras enumeradas en la tabla siguiente. Para obtener más información, consulte Acerca de la entrada del mouse.
Tecla modificadora | Descripción |
---|---|
MK_CONTROL |
Se presiona la tecla CTRL. |
MK_LBUTTON |
Se presiona el botón izquierdo del mouse. |
MK_MBUTTON |
Se presiona el botón central del mouse. |
MK_RBUTTON |
Se presiona el botón derecho del mouse. |
MK_SHIFT |
Se presiona la tecla MAYÚS. |
MK_XBUTTON1 |
Se presiona el botón del mouse XBUTTON1 de Microsoft IntelliMouse. |
MK_XBUTTON2 |
Se presiona el botón del mouse XBUTTON2 de Microsoft IntelliMouse. |
Nota:
El marco de trabajo llama a esta función miembro para que la aplicación pueda controlar un mensaje de Windows. Los parámetros que se pasaron a la función reflejan los parámetros recibidos por el marco de trabajo cuando se recibió el mensaje. Si llama a la implementación de la clase base de esta función, esa implementación usará los parámetros que se pasaron originalmente con el mensaje y no los parámetros que proporciona a la función.
CWnd::OpenClipboard
Abre el Portapapeles.
BOOL OpenClipboard();
Valor devuelto
Distinto de cero si el Portapapeles se abre a través de CWnd
, o 0 si otra aplicación o ventana ha abierto el Portapapeles.
Comentarios
Otras aplicaciones no podrán modificar el Portapapeles hasta que se llame a la función de Windows CloseClipboard
.
El objeto CWnd
actual no se convertirá en el propietario del Portapapeles hasta que se llame a la función de Windows EmptyClipboard
.
Ejemplo
//handler for Edit | Copy menu
void CMdiView::OnEditCopy()
{
if (!OpenClipboard())
{
AfxMessageBox(_T("Cannot open the Clipboard"));
return;
}
// Remove the current Clipboard contents
if (!EmptyClipboard())
{
AfxMessageBox(_T("Cannot empty the Clipboard"));
return;
}
// Get the currently selected data, hData handle to
// global memory of data
CString str;
m_Edit.GetWindowText(str);
size_t cbStr = (str.GetLength() + 1) * sizeof(TCHAR);
HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);
memcpy_s(GlobalLock(hData), cbStr, str.LockBuffer(), cbStr);
GlobalUnlock(hData);
str.UnlockBuffer();
// For the appropriate data formats...
UINT uiFormat = (sizeof(TCHAR) == sizeof(WCHAR)) ? CF_UNICODETEXT : CF_TEXT;
if (::SetClipboardData(uiFormat, hData) == NULL)
{
AfxMessageBox(_T("Unable to set Clipboard data"));
CloseClipboard();
return;
}
CloseClipboard();
}
CWnd::operator HWND
Use este operador para obtener el identificador del objeto CWnd
.
operator HWND() const;
CWnd::operator !=
Compara dos objetos CWnd
para determinar si no tienen el mismo m_hWnd
.
BOOL operator!=(const CWnd& wnd) const;
Parámetros
wnd
Referencia a un objeto CWnd
.
Valor devuelto
Distinto de cero si es igual; de lo contrario, 0.
CWnd::operator ==
Compara dos objetos CWnd
para determinar si tienen el mismo m_hWnd
.
BOOL operator==(const CWnd& wnd) const;
Parámetros
wnd
Referencia a un objeto CWnd
.
Valor devuelto
Distinto de cero si es igual; de lo contrario, 0.
CWnd::PaintWindowlessControls
Dibuja controles sin ventanas en el contenedor del control.
BOOL PaintWindowlessControls(CDC* pDC);
Parámetros
pDC
El contexto del dispositivo en el que se van a dibujar los controles sin ventana.
Valor devuelto
Devuelve TRUE
si hay un contenedor de controles y los controles sin ventana se dibujan correctamente; de lo contrario, FALSE
.
CWnd::PostMessage
Pone un mensaje en la cola de mensajes de la ventana y vuelve sin esperar a que la ventana correspondiente procese el mensaje.
BOOL PostMessage(
UINT message,
WPARAM wParam = 0,
LPARAM lParam = 0);
Parámetros
message
Especifica el mensaje que se va a publicar.
wParam
Especifica información adicional del mensaje. El contenido de este parámetro depende del mensaje que se está publicando.
lParam
Especifica información adicional del mensaje. El contenido de este parámetro depende del mensaje que se está publicando.
Valor devuelto
Distinto de cero si se publica el mensaje; de lo contrario, 0.
Comentarios
Los mensajes de una cola de mensajes se recuperan mediante llamadas a la función de Windows GetMessage
o PeekMessage
.
La función PostMessage
de Windows se puede usar para acceder a otra aplicación.
Ejemplo
Vea el ejemplo de AfxGetMainWnd
.
CWnd::PostNcDestroy
Lo llama la función miembro OnNcDestroy
predeterminada después de que se haya destruido la ventana.
virtual void PostNcDestroy();
Comentarios
Las clases derivadas pueden usar esta función para la limpieza personalizada, como la eliminación del puntero this
.
CWnd::PreCreateWindow
Lo llama el marco antes de crear la ventana de Windows asociada a este objeto CWnd
.
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
Parámetros
cs
Un estructura CREATESTRUCT
.
Valor devuelto
Distinto de cero si la creación de la ventana debe continuar; 0 para indicar un error de creación.
Comentarios
Advertencia
CWnd::PreCreateWindow
asigna ahora el miembro de hMenu de cs
al puntero this
si el menú es NULL
y el estilo contiene WS_CHILD
. Para obtener una funcionalidad adecuada, asegúrese de que el control de diálogo tiene un Id. que no sea NULL
.
Este cambio corrige un bloqueo en escenarios de interoperabilidad administrados o nativos. Una instrucción TRACE
en alertas CWnd::Create
al desarrollador del problema.
Nunca llame a esta función directamente.
La implementación predeterminada de esta función comprueba si hay un nombre de clase de ventana NULL
y sustituye un valor predeterminado adecuado. Invalide esta función miembro para modificar la estructura CREATESTRUCT
antes de que se cree la ventana.
Cada clase derivada de CWnd
agrega su propia funcionalidad a su invalidación de PreCreateWindow
. Por diseño, estas derivaciones de PreCreateWindow
no están documentadas. Para determinar los estilos adecuados para cada clase y las interdependencias entre los estilos, puede examinar el código fuente de MFC para la clase base de la aplicación. Si decide invalidar PreCreateWindow,
, puede determinar si los estilos usados en la clase base de la aplicación proporcionan la funcionalidad que necesita mediante la información recopilada del código fuente de MFC.
Para obtener más información sobre cómo cambiar los estilos de ventana, consulte Cambiar los estilos de una ventana creada por MFC.
Ejemplo
// alter the styles of the mdi frame window
BOOL CMdiChildFrame::PreCreateWindow(CREATESTRUCT &cs)
{
// Create a window without min/max buttons or sizable border
cs.style |= WS_OVERLAPPED | WS_SYSMENU | WS_BORDER;
// Size the window to 1/3 screen size and center it
cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 3;
cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3;
cs.y = ((cs.cy * 3) - cs.cy) / 2;
cs.x = ((cs.cx * 3) - cs.cx) / 2;
return CMDIChildWnd::PreCreateWindow(cs);
}
CWnd::PreSubclassWindow
El marco llama a esta función miembro para permitir que se produzcan otras asignaciones como subclase necesarias antes de que se asigne la ventana como subclase.
virtual void PreSubclassWindow();
Comentarios
La invalidación de esta función miembro permite la asignación dinámica de los controles como subclase. Se trata de una invalidación avanzada.
CWnd::PreTranslateMessage
Utilizado por la clase CWinApp
para traducir los mensajes de ventana antes de que se distribuyan a las funciones de Windows TranslateMessage
y DispatchMessage
.
virtual BOOL PreTranslateMessage(MSG* pMsg);
Parámetros
pMsg
Apunta a una estructura MSG
,que contiene el mensaje que se va a procesar.
Valor devuelto
Distinto de cero si el mensaje se ha traducido y no se debe distribuir; 0 si el mensaje no se ha traducido y se debe distribuir.
CWnd::Print
Llame a esta función miembro para dibujar la ventana actual en el contexto de dispositivo especificado, que suele ser en un contexto de dispositivo de impresora.
void Print(
CDC* pDC,
DWORD dwFlags) const;
Parámetros
pDC
Puntero a un contexto de dispositivo.
dwFlags
Especifica las opciones de dibujo. Este parámetro puede ser una o varias de estas marcas:
PRF_CHECKVISIBLE
Dibujar la ventana solo si está visible.PRF_CHILDREN
Dibujar todas las ventanas secundarias visibles.PRF_CLIENT
Dibujar el área cliente de la ventana.PRF_ERASEBKGND
Borrar el fondo antes de dibujar la ventana.PRF_NONCLIENT
Dibujar el área no cliente de la ventana.PRF_OWNED
Dibuja todas las ventanas de propiedad.
Comentarios
La función CWnd::DefWindowProc
procesa este mensaje en función de la opción de dibujo que se especifica:
Si se especifica
PRF_CHECKVISIBLE
y la ventana no está visible, no hace nada.Si se especifica
PRF_NONCLIENT
, dibuja el área no cliente en el contexto de dispositivo especificado.Si se especifica
PRF_ERASEBKGND
, envía un mensajeWM_ERASEBKGND
a la ventana.Si se especifica
PRF_CLIENT
, envía un mensajeWM_PRINTCLIENT
a la ventana.Si se establece
PRF_CHILDREN
, envía un mensajeWM_PRINT
a cada ventana secundaria visible.Si se establece
PRF_OWNED
, envía un mensajeWM_PRINT
a cada ventana de propiedad que está visible.
CWnd::PrintClient
Llame a esta función miembro para dibujar cualquier ventana en el contexto de dispositivo especificado (normalmente un contexto de dispositivo de impresora).
void PrintClient(
CDC* pDC,
DWORD dwFlags) const;
Parámetros
pDC
Puntero a un contexto de dispositivo.
dwFlags
Especifica las opciones de dibujo. Este parámetro puede ser una o varias de estas marcas:
PRF_CHECKVISIBLE
Dibujar la ventana solo si está visible.PRF_CHILDREN
Dibujar todas las ventanas secundarias visibles.PRF_CLIENT
Dibujar el área cliente de la ventana.PRF_ERASEBKGND
Borrar el fondo antes de dibujar la ventana.PRF_NONCLIENT
Dibujar el área no cliente de la ventana.PRF_OWNED
Dibuja todas las ventanas de propiedad.
CWnd::PrintWindow
Copia una ventana visual en el contexto de dispositivo especificado (normalmente, un DC de impresora).
BOOL PrintWindow(
CDC* pDC,
UINT nFlags) const;
Parámetros
pDC
Un puntero al contexto del dispositivo en el que se va a imprimir.
nFlags
Especifica las opciones de dibujo. Para obtener una lista de los valores posibles, vea PrintWindow
.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, 0.
Comentarios
Esta función miembro emula la funcionalidad de la función PrintWindow
, tal y como se describe en Windows SDK.
CWnd::RedrawWindow
Actualiza el rectángulo o la región especificados en el área cliente de la ventana dada.
BOOL RedrawWindow(
LPCRECT lpRectUpdate = NULL,
CRgn* prgnUpdate = NULL,
UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);
Parámetros
lpRectUpdate
Apunta a una estructura RECT
que contiene las coordenadas del rectángulo de actualización. Este parámetro se ignora si prgnUpdate
contiene un identificador de región válido.
prgnUpdate
Identifica la región de actualización. Si tanto prgnUpdate
como lpRectUpdate
son NULL
, se agrega toda el área cliente a la región de actualización.
flags
Las marcas siguientes se usan para invalidar la ventana:
RDW_ERASE
Hace que la ventana reciba un mensajeWM_ERASEBKGND
cuando se vuelve a pintar la ventana. La marcaRDW_INVALIDATE
también se debe especificar; de lo contrario, RDW_ERASE no tiene ningún efecto.RDW_FRAME
Hace que cualquier parte del área no cliente de la ventana que se interseca con la región de actualización reciba un mensajeWM_NCPAINT
. La marcaRDW_INVALIDATE
también se debe especificar; de lo contrario,RDW_FRAME
no tiene ningún efecto.RDW_INTERNALPAINT
Hace que se publique un mensajeWM_PAINT
en la ventana independientemente de que la ventana contenga una región no válida.RDW_INVALIDATE
InvalidalpRectUpdate
oprgnUpdate
(sólo uno puede no serNULL
). Si ambos sonNULL
, se invalida toda la ventana.
Las marcas siguientes se usan para validar la ventana:
RDW_NOERASE
Suprime todos los mensajesWM_ERASEBKGND
pendientes.RDW_NOFRAME
Suprime todos los mensajesWM_NCPAINT
pendientes. Esta marca debe usarse conRDW_VALIDATE
y normalmente se usa conRDW_NOCHILDREN
. Esta opción debe usarse con cuidado, ya que podría impedir que algunas partes de una ventana se pinten correctamente.RDW_NOINTERNALPAINT
Suprime los mensajesWM_PAINT
internos que están pendientes. Esta marca no afecta a los mensajesWM_PAINT
resultantes de áreas no válidas.RDW_VALIDATE
ValidalpRectUpdate
oprgnUpdate
(sólo uno puede no serNULL
). Si ambos sonNULL
, se valida toda la ventana. Esta marca no afecta a los mensajes internosWM_PAINT
.
Las siguientes marcas controlan cuándo se vuelve a pintar. La función RedrawWindow
no realiza la pintura a menos que se especifique uno de estos bits.
RDW_ERASENOW
Hace que las ventanas afectadas (especificadas por las marcasRDW_ALLCHILDREN
yRDW_NOCHILDREN
) reciban los mensajesWM_NCPAINT
yWM_ERASEBKGND
, si fuera necesario, antes de que la función vuelva. Los mensajesWM_PAINT
se aplazan.RDW_UPDATENOW
Hace que las ventanas afectadas (especificadas por las marcasRDW_ALLCHILDREN
yRDW_NOCHILDREN
) reciban los mensajesWM_NCPAINT
,WM_ERASEBKGND
yWM_PAINT
, si fuera necesario, antes de que la función vuelva.
De forma predeterminada, las ventanas afectadas por la función RedrawWindow
dependen de que la ventana especificada tenga el estilo WS_CLIPCHILDREN
o no. Las ventanas secundarias de las ventanas WS_CLIPCHILDREN
no se ven afectadas. Sin embargo, las ventanas que no son ventanas WS_CLIPCHILDREN
se validan o invalidan de forma recursiva hasta que se encuentra una ventana WS_CLIPCHILDREN
. Las marcas siguientes controlan qué ventanas se ven afectadas por la función RedrawWindow
:
RDW_ALLCHILDREN
Incluye ventanas secundarias, si las hubiera, en la operación de volver a pintar.RDW_NOCHILDREN
Excluye las ventanas secundarias, si las hubiera, de la operación de volver a pintar.
Valor devuelto
Distinto de cero si la ventana se ha vuelto a dibujar correctamente; de lo contrario, 0.
Comentarios
Cuando la función miembro RedrawWindow
se usa para invalidar parte de la ventana de escritorio, esa ventana no recibe un mensaje WM_PAINT
. Para volver a pintar el escritorio, una aplicación debe usar CWnd::ValidateRgn
, CWnd::InvalidateRgn
, CWnd::UpdateWindow
o RedrawWindow
.
CWnd::ReflectChildNotify
El marco llama a esta función de mensaje desde OnChildNotify
.
BOOL ReflectChildNotify(
UINT message,
WPARAM wParam,
LPARAM lParam,
LRESULT* pResult);
Parámetros
message
Especifica el mensaje que se va a reflejar.
wParam
Proporciona información adicional dependiente del mensaje.
lParam
Proporciona información adicional dependiente del mensaje.
pResult
El resultado generado por la ventana secundaria que va a devolver la ventana primaria. Puede ser NULL
.
Valor devuelto
TRUE
si se ha reflejado el mensaje; en caso contrario, FALSE
.
Comentarios
Es una función del asistente que refleja message
a su origen.
Los mensajes reflejados se envían directamente a CWnd::OnWndMsg
o CCmdTarget::OnCmdMsg
.
Para obtener más información sobre la reflexión de mensajes, consulte Control de mensajes reflejados.
CWnd::ReflectLastMsg
El marco llama a esta función miembro para reflejar el último mensaje en la ventana secundaria.
static BOOL PASCAL ReflectLastMsg(
HWND hWndChild,
LRESULT* pResult = NULL);
Parámetros
hWndChild
Un identificador de una ventana secundaria.
pResult
El resultado generado por la ventana secundaria que va a devolver la ventana primaria. Puede ser NULL
.
Valor devuelto
Distinto de cero si se ha controlado el mensaje; de lo contrario, 0.
Comentarios
Esta función miembro llama a SendChildNotifyLastMsg
si la ventana identificada por hWndChild
es un control OLE o una ventana en el mapa permanente.
Para obtener más información sobre la reflexión de mensajes, consulte Control de mensajes reflejados.
CWnd::ReleaseDC
Libera un contexto de dispositivo para que lo usen otras aplicaciones.
int ReleaseDC(CDC* pDC);
Parámetros
pDC
Identifica el contexto de dispositivo que se va a liberar.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
El efecto de la función miembro ReleaseDC
depende del tipo de contexto del dispositivo.
La aplicación debe llamar a la función miembro ReleaseDC
para cada llamada a la función miembro GetWindowDC
y para cada llamada a la función miembro GetDC
.
CWnd::RepositionBars
Se llama para cambiar la posición y el tamaño de las barras de control en el área cliente de una ventana.
void RepositionBars(UINT nIDFirst,
UINT nIDLast,
UINT nIDLeftOver,
UINT nFlag = reposDefault,
LPRECT lpRectParam = NULL,
LPCRECT lpRectClient = NULL,
BOOL bStretch = TRUE) ;
Parámetros
nIDFirst
El Id. de la primera barra de control dentro de un intervalo de barras de control cuya posición y tamaño se van a cambiar.
nIDLast
El Id. de la última barra de control dentro de un intervalo de barras de control cuya posición y tamaño se van a cambiar.
nIDLeftOver
Especifica el Id. del panel que rellena el resto del área cliente.
nFlag
Puede tener uno de los siguientes valores:
CWnd::reposDefault
Realiza el diseño de las barras de control.lpRectParam
no se usa y puede serNULL
.CWnd::reposQuery
No se realiza el diseño de las barras de control; en su lugar,lpRectParam
se inicializa con el tamaño del área cliente, como si el diseño se hubiera realizado realmente.CWnd::reposExtra
Agrega los valores delpRectParam
al área cliente denIDLast
y también realiza el diseño.
lpRectParam
Apunta a una estructura RECT
cuyo uso depende del valor de nFlag
.
lpRectClient
Apunta a una estructura RECT
que contiene el área cliente disponible. Si es NULL
, se usará el área cliente de la ventana.
bStretch
Indica si la barra debe ajustarse al tamaño del marco o no.
Comentarios
Los parámetros nIDFirst
y nIDLast
definen un intervalo de Id. de barras de control cuya posición en el área cliente se va a cambiar. El parámetro nIDLeftOver
especifica el Id. de la ventana secundaria (normalmente, la vista) que se cambia de posición y de tamaño para rellenar el resto del área cliente que no han rellenado las barras de control.
CWnd::RunModalLoop
Llame a esta función miembro para recuperar, traducir o distribuir mensajes hasta que ContinueModal
devuelva FALSE
.
int RunModalLoop(DWORD dwFlags = 0);
Parámetros
dwFlags
Especifica el mensaje de Windows que se va a enviar. Puede ser uno de los siguientes valores:
MLF_NOIDLEMSG
No envía mensajesWM_ENTERIDLE
al elemento primario.MLF_NOKICKIDLE
No envía mensajesWM_KICKIDLE
a la ventana.MLF_SHOWONIDLE
Muestra la ventana cuando la cola de mensajes se vuelve inactiva.
Valor devuelto
Especifica el valor del parámetro nResult
pasado a la función miembro EndModalLoop
, que se usa a continuación para finalizar el bucle modal.
Comentarios
De forma predeterminada, ContinueModal
devuelve FALSE
después de que se llame a EndModalLoop
. Devuelve el valor proporcionado como nResult
a EndModalLoop
.
CWnd::ScreenToClient
Convierte las coordenadas de pantalla de un punto o rectángulo determinado en pantalla en las coordenadas de pantalla.
void ScreenToClient(LPPOINT lpPoint) const; void ScreenToClient(LPRECT lpRect) const;
Parámetros
lpPoint
Apunta a un objeto CPoint
o estructura POINT
que contiene las coordenadas de pantalla que se van a convertir.
lpRect
Apunta a un objeto CRect
o estructura RECT
que contiene las coordenadas de pantalla que se van a convertir.
Comentarios
La función miembro ScreenToClient
reemplaza las coordenadas de pantalla especificadas en lpPoint
o lpRect
por coordenadas de cliente. Las nuevas coordenadas son relativas a la esquina superior izquierda del área cliente CWnd
.
Ejemplo
Vea el ejemplo de CListCtrl::GetItemRect
.
CWnd::ScrollWindow
Desplaza el contenido del área cliente del objeto CWnd
actual.
void ScrollWindow(
int xAmount,
int yAmount,
LPCRECT lpRect = NULL,
LPCRECT lpClipRect = NULL);
Parámetros
xAmount
Especifica la cantidad, en unidades de dispositivo, de desplazamiento horizontal. Este parámetro debe tener un valor negativo para desplazarse a la izquierda.
yAmount
Especifica la cantidad, en unidades de dispositivo, de desplazamiento vertical. Este parámetro debe tener un valor negativo para desplazarse hacia arriba.
lpRect
Apunta a un objeto CRect
o estructura RECT
que especifica la parte del área cliente que se va a desplazar. Si lpRect
es NULL
, se desplaza toda el área cliente. El cursor de inserción se cambia de posición si el rectángulo del cursor se interseca con el rectángulo de desplazamiento.
lpClipRect
Apunta a un objeto CRect
o estructura RECT
que especifica el rectángulo de recorte que se va a desplazar. Solo se desplazan los bits dentro de este rectángulo. Los bits fuera de este rectángulo no se ven afectados aunque estén en el rectángulo lpRect
. Si lpClipRect
es NULL
, no se realiza ningún recorte en el rectángulo de desplazamiento.
Comentarios
Si el cursor de inserción está en el CWnd
que se desplaza, ScrollWindow
oculta automáticamente el cursor de inserción para evitar que se borre y, a continuación, una vez finalizado el desplazamiento, restaura el cursor de inserción. La posición del cursor de inserción se ajusta en consecuencia.
El área descubierta por la función miembro ScrollWindow
no se vuelve a pintar, pero se combina en la región de actualización del objeto CWnd
actual. Eventualmente, la aplicación recibirá un mensaje WM_PAINT
que le notificará que es necesario volver a pintar la región. Para volver a dibujar el área descubierta al mismo tiempo que se realiza el desplazamiento, llame a la función miembro UpdateWindow
inmediatamente después de llamar a ScrollWindow
.
Si lpRect
es NULL
, las posiciones de las ventanas secundarias de la ventana se desplazan en una cantidad especificada por xAmount
y yAmount
, y las áreas no válidas (sin pintar) de CWnd
también se desplazan. ScrollWindow
es más rápido cuando lpRect
es NULL
.
Si lpRect
no es NULL
, las posiciones de las ventanas secundarias no cambian y las áreas no válidas de CWnd
no se desplazan. Para evitar problemas de actualización cuando lpRect
no es NULL
, llame a la función miembro UpdateWindow
para volver a pintar CWnd
antes de llamar a ScrollWindow
.
CWnd::ScrollWindowEx
Desplaza el contenido del área cliente de una ventana.
int ScrollWindowEx(
int dx,
int dy,
LPCRECT lpRectScroll,
LPCRECT lpRectClip,
CRgn* prgnUpdate,
LPRECT lpRectUpdate,
UINT flags);
Parámetros
dx
Especifica la cantidad, en unidades de dispositivo, de desplazamiento horizontal. Este parámetro debe tener un valor negativo para desplazarse a la izquierda.
dy
Especifica la cantidad, en unidades de dispositivo, de desplazamiento vertical. Este parámetro debe tener un valor negativo para desplazarse hacia arriba.
lpRectScroll
Apunta a una estructura RECT
que especifica la parte del área cliente que se va a desplazar. Si este parámetro es NULL
, se desplaza toda el área cliente.
lpRectClip
Apunta a una estructura RECT
que especifica el rectángulo de recorte que se va a desplazar. Esta estructura tiene prioridad sobre el rectángulo al que apunta lpRectScroll
. Solo se desplazan los bits dentro de este rectángulo. Los bits fuera de este rectángulo no se ven afectados aunque estén en el rectángulo lpRectScroll
. Si este parámetro es NULL
, no se realiza ningún recorte en el rectángulo de desplazamiento.
prgnUpdate
Identifica la región que se modifica para contener la región invalidada mediante el desplazamiento. Este parámetro puede ser NULL
.
lpRectUpdate
Apunta a una estructura RECT
que recibirá los límites del rectángulo invalidado por el desplazamiento. Este parámetro puede ser NULL
.
flags
Puede tener uno de los siguientes valores:
SW_ERASE
Cuando se especifica conSW_INVALIDATE
, borra la región recién invalidada mediante el envío de un mensajeWM_ERASEBKGND
a la ventana.SW_INVALIDATE
Invalida la región que identificaprgnUpdate
después del desplazamiento.SW_SCROLLCHILDREN
Desplaza todas las ventanas secundarias que se intersecan con el rectángulo al que apuntalpRectScroll
en el número de píxeles especificados endx
ydy
. Windows envía un mensajeWM_MOVE
a todas las ventanas secundarias que se intersecan conlpRectScroll
, incluso si no se mueven. El cursor de inserción se cambia de posición cuando se desplaza una ventana secundaria y el rectángulo del cursor se interseca con el rectángulo de desplazamiento.
Valor devuelto
El valor devuelto es SIMPLEREGION
(región invalidada rectangular), COMPLEXREGION
(región invalidada no rectangular; rectángulos superpuestos) o NULLREGION
(región no invalidada), si la función se ejecuta correctamente; de lo contrario, el valor devuelto es ERROR
.
Comentarios
Esta función es similar a la función ScrollWindow
, con algunas características adicionales.
Si SW_INVALIDATE
y SW_ERASE
no se especifican, la función miembro ScrollWindowEx
no invalida el área no invalida el área de la que se aleja el desplazamiento. Si se establece alguna de estas marcas, ScrollWindowEx
invalida esta área. El área no se actualiza hasta que la aplicación llama a la función miembro UpdateWindow
, llama a la función miembro RedrawWindow
(especificando RDW_UPDATENOW
o RDW_ERASENOW
) o recupera el mensaje WM_PAINT
de la cola de aplicaciones.
Si la ventana tiene el estilo WS_CLIPCHILDREN
, las áreas devueltas especificadas por prgnUpdate
y lpRectUpdate
representan el área total de la ventana desplazada que se debe actualizar, incluidas las áreas de ventanas secundarias que necesitan actualizarse.
Si se especifica la marca SW_SCROLLCHILDREN
, Windows no actualizará correctamente la pantalla si se desplaza parte de una ventana secundaria. La parte de la ventana secundaria desplazada que se encuentra fuera del rectángulo de origen no se borrará y no se volverá a dibujar correctamente en su nuevo destino. Use la función de Windows DeferWindowPos
para mover ventanas secundarias que no se encuentran completamente dentro del rectángulo lpRectScroll
. El cursor se cambia de posición si la marca SW_SCROLLCHILDREN
está establecida y el rectángulo del cursor de inserción se interseca con el rectángulo de desplazamiento.
Se supone que todas las coordenadas de entrada y salida (para lpRectScroll
, lpRectClip
, lpRectUpdate
y prgnUpdate
) están en coordenadas de cliente, independientemente de que la ventana tenga el estilo de clase CS_OWNDC
o CS_CLASSDC
. Use las funciones de Windows LPtoDP
y DPtoLP
para convertir a y desde coordenadas lógicas, si fuera necesario.
CWnd::SendChildNotifyLastMsg
El marco llama a esta función miembro para proporcionar un mensaje de notificación a una ventana secundaria, desde la ventana primaria, para que la ventana secundaria pueda controlar una tarea.
BOOL SendChildNotifyLastMsg(LRESULT* pResult = NULL);
Parámetros
pResult
El resultado generado por la ventana secundaria que va a devolver la ventana primaria.
Valor devuelto
Distinto de cero si la ventana secundaria ha controlado el mensaje enviado a su elemento primario; de lo contrario, 0.
Comentarios
SendChildNotifyLastMsg
envía el mensaje actual al origen si es un mensaje que se refleja.
Para obtener más información sobre la reflexión de mensajes, consulte Control de mensajes reflejados.
CWnd::SendDlgItemMessage
Envía un mensaje a un control.
LRESULT SendDlgItemMessage(
int nID,
UINT message,
WPARAM wParam = 0,
LPARAM lParam = 0);
Parámetros
nID
Especifica el identificador del control de diálogo que recibirá el mensaje.
message
Especifica el mensaje que se va a enviar.
wParam
Proporciona información adicional dependiente del mensaje.
lParam
Proporciona información adicional dependiente del mensaje.
Valor devuelto
Especifica el valor devuelto por el procedimiento de ventana del control, o 0 si no se encuentra el control.
Comentarios
La función miembro SendDlgItemMessage
no devuelve un valor hasta que se haya procesado el mensaje.
Usar SendDlgItemMessage
es idéntico a obtener un CWnd
* al control especificado y llamar a la función miembro SendMessage
.
Ejemplo
void CMyDlg::SetSpinRange()
{
//set the min and max range of the up/down or spin control
SendDlgItemMessage(IDC_SPIN1, UDM_SETRANGE, 0, (LPARAM)MAKELONG(8, 1));
}
CWnd::SendMessage
Envía el mensaje especificado a esta ventana.
LRESULT SendMessage(
UINT message,
WPARAM wParam = 0,
LPARAM lParam = 0);
Parámetros
message
Especifica el mensaje que se va a enviar.
wParam
Proporciona información adicional dependiente del mensaje.
lParam
Proporciona información adicional dependiente del mensaje.
Valor devuelto
El resultado del procesamiento del mensaje, cuyo valor depende del mensaje enviado.
Comentarios
La función miembro SendMessage
llama directamente al procedimiento de ventana y no vuelve hasta que ese procedimiento de ventana ha procesado el mensaje. Esto contrasta con la función miembro PostMessage
, que coloca el mensaje en la cola de mensajes de la ventana y vuelve inmediatamente.
Ejemplo
void CAboutDlg::OnPaint()
{
// This code, normally emitted by the Application Wizard for a dialog-
// based project for the dialog's WM_PAINT handler, runs only if the
// window is iconic. The window erases the icon's area, then
// paints the icon referenced by m_hIcon.
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM)dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
CWnd::SendMessageToDescendants
Llame a esta función miembro para enviar el mensaje de Windows especificado a todas las ventanas descendientes.
void SendMessageToDescendants(
UINT message,
WPARAM wParam = 0,
LPARAM lParam = 0,
BOOL bDeep = TRUE,
BOOL bOnlyPerm = FALSE);
Parámetros
message
Especifica el mensaje que se va a enviar.
wParam
Proporciona información adicional dependiente del mensaje.
lParam
Proporciona información adicional dependiente del mensaje.
bDeep
Especifica el nivel en el que se va a buscar. Si es TRUE
, busca de forma recursiva todos los elementos secundarios; si es FALSE
, busca solo elementos secundarios inmediatos.
bOnlyPerm
Especifica si las ventanas temporales recibirán el mensaje. Si es TRUE
, las ventanas temporales pueden recibir el mensaje; si es FALSE
, solo las ventanas permanentes reciben el mensaje. Para obtener más información sobre las ventanas temporales, consulte Nota técnica 3.
Comentarios
Si bDeep
es FALSE
, el mensaje se envía sólo a los elementos secundarios inmediatos de la ventana; de lo contrario, el mensaje se envía a todas las ventanas descendientes.
Si bDeep
y bOnlyPerm
son TRUE
, la búsqueda continúa por debajo de las ventanas temporales. En este caso, solo las ventanas permanentes que se han encontrado durante la búsqueda reciben el mensaje. Si bDeep
es FALSE
, el mensaje sólo se envía a los elementos secundarios inmediatos de la ventana.
Ejemplo
// The following code fragment is from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog.
// change font of child controls of a dialog
LOGFONT lf = {0};
// redraw of child controls not needed in OnInitDialog
// since controls aren't drawn yet.
short int fRedraw = FALSE;
lf.lfHeight = 15; // Request a 15-pixel-high font
// with face name "Arial".
wcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"));
m_font.CreateFontIndirect(&lf); // Create the font.
SendMessageToDescendants(WM_SETFONT,
(WPARAM)m_font.m_hObject, //handle to font
MAKELONG((WORD)fRedraw, 0),
FALSE); // send to all descendants(TRUE) or
// just children of *this (FALSE)
CWnd::SendNotifyMessage
Envía el mensaje especificado a la ventana.
BOOL SendNotifyMessage(
UINT message,
WPARAM wParam,
LPARAM lParam);
Parámetros
message
Especifica el mensaje que se va a enviar.
wParam
Proporciona información adicional dependiente del mensaje.
lParam
Proporciona información adicional dependiente del mensaje.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Si el subproceso que realiza la llamada ha creado la ventana, SendNotifyMessage
llama al procedimiento de ventana para la ventana y no vuelve hasta que el procedimiento de ventana haya procesado el mensaje. Si un subproceso diferente ha creado la ventana, SendNotifyMessage
pasa el mensaje al procedimiento de ventana y vuelve inmediatamente; no espera a que el procedimiento de ventana termine de procesar el mensaje.
CWnd::SetActiveWindow
Hace de CWnd
la ventana activa.
CWnd* SetActiveWindow();
Valor devuelto
La ventana que estaba activa anteriormente.
El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
La función miembro SetActiveWindow
debe usarse con cuidado, ya que permite que una aplicación tome el control de la ventana activa y el foco de entrada de manera arbitraria. Normalmente, Windows se encarga de todas la activaciones.
CWnd::SetCapture
Hace que todas las entradas posteriores del mouse se envíen al objeto CWnd
actual, independientemente de la posición del cursor.
CWnd* SetCapture();
Valor devuelto
Un puntero al objeto de ventana que ha recibido previamente toda la entrada del mouse. Es NULL
si no hay tal ventana. El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Cuando CWnd
ya no requiere toda la entrada del mouse, la aplicación debe llamar a la función ReleaseCapture
para que otras ventanas puedan recibir la entrada del mouse.
Mientras se captura la entrada del mouse, no se envían mensajes WM_NCHITTEST
ni WM_SETCURSOR
a la ventana activa.
CWnd::SetCaretPos
Establece la posición del cursor de inserción.
static void PASCAL SetCaretPos(POINT point);
Parámetros
point
Especifica las nuevas coordenadas x e y (en coordenadas de cliente) del cursor de inserción.
Comentarios
La función miembro SetCaretPos
mueve el cursor de inserción sólo si es propiedad de una ventana de la tarea actual. SetCaretPos
mueve el cursor de inserción tanto si el cursor de inserción está oculto como si no lo está.
El cursor de inserción es un recurso compartido. Una ventana no debe mover el cursor de inserción si no es propietaria del cursor de inserción.
Ejemplo
// The following code snippet shows a caret when the left
// mouse button is pressed, and sets the caret's position to
// the cursor's position.
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
//create a solid caret, the width is 2, the length is 20.
CreateSolidCaret(2, 20);
SetCaretPos(point);
ShowCaret();
CView::OnLButtonDown(nFlags, point);
}
CWnd::SetClipboardViewer
Agrega esta ventana a la cadena de ventanas a las que se notifica (mediante el mensaje WM_DRAWCLIPBOARD
) cada vez que se cambia el contenido del Portapapeles.
HWND SetClipboardViewer();
Valor devuelto
Un identificador para la siguiente ventana de la cadena del visor del Portapapeles si se ejecuta correctamente. Las aplicaciones deben guardar este identificador (se puede almacenar como una variable miembro) y usarlo al responder a los mensajes de la cadena del visor del Portapapeles.
Comentarios
Una ventana que forma parte de la cadena del visor del Portapapeles debe responder a los mensajes WM_DRAWCLIPBOARD
, WM_CHANGECBCHAIN
y WM_DESTROY
y pasar el mensaje a la siguiente ventana de la cadena.
Esta función miembro envía un mensaje WM_DRAWCLIPBOARD
a la ventana. Puesto que el identificador de la siguiente ventana de la cadena del visor del Portapapeles aún no se ha devuelto, la aplicación no debe pasar el mensaje WM_DRAWCLIPBOARD
que recibe durante la llamada a SetClipboardViewer
.
Para quitarse de la cadena del visor del Portapapeles, una aplicación debe llamar a la función miembro ChangeClipboardChain
.
CWnd::SetDlgCtrlID
Establece el Id. de ventana o el Id. de control de la ventana en un nuevo valor.
int SetDlgCtrlID(int nID);
Parámetros
nID
El nuevo valor que se va a establecer para el identificador del control.
Valor devuelto
El identificador anterior de la ventana, si se ejecuta correctamente; de lo contrario, 0.
Comentarios
La ventana puede ser cualquier ventana secundaria, no solo un control de un cuadro de diálogo. La ventana no puede ser una ventana de nivel superior.
CWnd::SetDlgItemInt
Establece el texto de un control dado en un cuadro de diálogo en la representación de cadena de un valor entero especificado.
void SetDlgItemInt(
int nID,
UINT nValue,
BOOL bSigned = TRUE);
Parámetros
nID
Especifica el Id. entero del control que se va a cambiar.
nValue
Especifica el valor entero utilizado para generar el texto del elemento.
bSigned
Especifica si el valor entero tiene signo o no. Si este parámetro es TRUE
, nValue
tiene signo. Si este parámetro es TRUE
y nValue
es menor que 0, se coloca un signo menos antes del primer dígito de la cadena. Si este parámetro es FALSE
, nValue
no tiene signo.
Comentarios
SetDlgItemInt
envía un mensaje WM_SETTEXT
al control especificado.
Ejemplo
Vea el ejemplo de CWnd::SetDlgItemText
.
CWnd::SetDlgItemText
Establece el título o el texto de un control propiedad de una ventana o un cuadro de diálogo.
void SetDlgItemText(
int nID,
LPCTSTR lpszString);
Parámetros
nID
Identifica el control cuyo texto se va a establecer.
lpszString
Apunta a un objeto CString
o cadena terminada en NULL que contiene el texto que se va a copiar en el control.
Comentarios
SetDlgItemText
envía un mensaje WM_SETTEXT
al control especificado.
Ejemplo
// The following code fragment is from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog.
// Initialize dialog controls
SetDlgItemText(IDC_EDITNAME, _T("Type in text"));
SetDlgItemInt(IDC_EDITNUM, 100);
CWnd::SetForegroundWindow
Pone en primer plano el subproceso que creó la ventana y activa la ventana.
BOOL SetForegroundWindow();
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
La entrada del teclado se dirige a la ventana y se cambian varias indicaciones visuales para el usuario. La ventana en primer plano es la ventana con la que el usuario está trabajando actualmente. La ventana en primer plano solo se aplica a las ventanas de nivel superior (ventanas de marco o cuadros de diálogo).
Ejemplo
Vea el ejemplo de CWnd::FindWindow
.
CWnd::SetFocus
Reclama el foco de entrada.
CWnd* SetFocus();
Valor devuelto
Un puntero al objeto de ventana que tenía el foco de entrada anteriormente. Es NULL
si no hay tal ventana. El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
El foco de entrada dirige todas las entradas de teclado posteriores a esta ventana. Cualquier ventana que tuviera previamente el foco de entrada lo pierde.
La función miembro SetFocus
envía un mensaje WM_KILLFOCUS
a la ventana que pierde el foco de entrada y un mensaje WM_SETFOCUS
a la ventana que recibe el foco de entrada. También activa o bien la ventana, o bien su elemento primario.
Si la ventana actual está activa, pero no tiene el foco (es decir, ninguna ventana tiene el foco), cualquier tecla presionada generará los mensajes WM_SYSCHAR
, WM_SYSKEYDOWN
o WM_SYSKEYUP
.
CWnd::SetFont
Envía el mensaje WM_SETFONT
a la ventana para usar la fuente especificada.
void SetFont(
CFont* pFont,
BOOL bRedraw = TRUE);
Parámetros
pFont
Un puntero a un objeto CFont
.
bRedraw
TRUE
para que la ventana se vuelva a dibujar inmediatamente después de procesar el mensaje WM_SETFONT
; de lo contrario, FALSE
.
Comentarios
Este método no tiene ningún efecto a menos que la ventana procese el mensaje WM_SETFONT
. Muchas clases de MFC que derivan de CWnd
procesan este mensaje porque están asociadas a una clase de ventana predefinida que incluye un controlador de mensajes para el mensaje WM_SETFONT
. Para usar este método, las clases derivadas de CWnd
deben definir un controlador de método para el mensaje WM_SETFONT
.
CWnd::SetIcon
Llame a esta función miembro para establecer el identificador en un icono específico, tal como lo identifica hIcon
.
HICON SetIcon(
HICON hIcon,
BOOL bBigIcon);
Parámetros
hIcon
Un identificador de un icono anterior.
bBigIcon
Especifica un icono de 32 píxeles por 32 píxeles si es TRUE
; especifica un icono de 16 píxeles por 16 píxeles si es FALSE
.
Valor devuelto
Identificador de un icono.
Comentarios
Cuando se registra la clase de ventana, selecciona un icono.
Ejemplo
Vea el ejemplo de CWnd::GetSystemMenu
.
CWnd::SetLayeredWindowAttributes
Establece la clave de color de transparencia y opacidad de una ventana superpuesta.
BOOL SetLayeredWindowAttributes(
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags);
Parámetros
crKey
Un puntero a un valor COLORREF
que especifica la clave de color de transparencia que se va a usar al componer la ventana superpuesta. Todos los píxeles pintados por la ventana de este color serán transparentes. Para generar un COLORREF
, use la macro RGB
.
bAlpha
El valor alfa utilizado para describir la opacidad de la ventana superpuesta. Para obtener más información, consulte el miembro SourceConstantAlpha
de la estructura BLENDFUNCTION
. Cuando bAlpha
es 0, la ventana es completamente transparente. Cuando bAlpha
es 255, la ventana es opaca.
dwFlags
Especifica una acción que se va a realizar. Este parámetro puede ser uno o más de los siguientes valores. Para obtener una lista de los valores posibles, vea SetLayeredWindowAttributes
.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, 0.
Comentarios
Esta función miembro emula la funcionalidad de la función SetLayeredWindowAttributes
, tal y como se describe en Windows SDK.
CWnd::SetMenu
Establece el menú actual en el menú especificado.
BOOL SetMenu(CMenu* pMenu);
Parámetros
pMenu
Identifica el nuevo menú. Si este parámetro es NULL
, se quita el menú actual.
Valor devuelto
Distinto de cero si se cambia el menú; de lo contrario, 0.
Comentarios
Hace que la ventana se vuelva a dibujar para reflejar el cambio de menú.
SetMenu
no destruirá un menú anterior. Una aplicación debe llamar a la función miembro CMenu::DestroyMenu
para realizar esta tarea.
Ejemplo
Vea el ejemplo de CMenu::LoadMenu
.
CWnd::SetOwner
Establece el propietario de la ventana actual en el objeto de ventana especificado.
void SetOwner(CWnd* pOwnerWnd);
Parámetros
pOwnerWnd
Identifica el nuevo propietario del objeto de ventana. Si este parámetro es NULL
, el objeto de ventana no tiene propietario.
Comentarios
Este propietario puede recibir mensajes de comando del objeto de ventana actual. De forma predeterminada, el elemento primario de la ventana actual es su propietario.
A menudo resulta útil establecer conexiones entre objetos de ventana que no están relacionados mediante la jerarquía de ventanas. Por ejemplo, CToolBar
envía notificaciones a su propietario en lugar de a su elemento primario. Esto permite que la barra de herramientas se convierta en el elemento secundario de una ventana (como una ventana de aplicación de contenedor OLE) al mismo tiempo que envía notificaciones a otra ventana (como la ventana de marco en contexto). Además, cuando se desactiva o activa una ventana del servidor durante la edición en contexto, cualquier otra ventana propiedad de la ventana de marco se oculta o se muestra. Esta propiedad se establece explícitamente con una llamada a SetOwner
.
El concepto de propiedad de esta función es diferente del concepto de propiedad de GetWindow
.
CWnd::SetParent
Cambia la ventana primaria de una ventana secundaria.
CWnd* SetParent(CWnd* pWndNewParent);
Parámetros
pWndNewParent
Identifica la nueva ventana primaria.
Valor devuelto
Un puntero al objeto de ventana primaria anterior si se ejecuta correctamente. El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
Si la ventana secundaria está visible, Windows vuelve a dibujar y a pintar adecuadamente.
CWnd::SetProperty
Llame a esta función miembro para establecer la propiedad de control OLE especificada por dwDispID
.
void AFX_CDECL SetProperty(
DISPID dwDispID,
VARTYPE vtProp, ...);
Parámetros
dwDispID
Identifica la propiedad que se va a establecer.
vtProp
Especifica el tipo de la propiedad que se va a establecer. Para los valores posibles, consulte la sección Comentarios para COleDispatchDriver::InvokeHelper
.
...
Un parámetro único del tipo especificado por vtProp
.
Comentarios
Nota:
Solo se debe llamar a esta función en un objeto CWnd
que represente un control OLE.
Para obtener más información sobre el uso de esta función miembro con contenedores de controles OLE, consulte el artículo Contenedores de controles ActiveX: Programación de controles ActiveX en un contenedor de controles ActiveX.
CWnd::SetRedraw
Una aplicación llama a SetRedraw
para permitir o evitar que los cambios se vuelvan a dibujar.
void SetRedraw(BOOL bRedraw = TRUE);
Parámetros
bRedraw
Especifica el estado de la marca de volver a dibujar. Si este parámetro es TRUE
, se establece la marca de volver a dibujar; si es FALSE
, se borra la marca.
Comentarios
Esta función miembro establece o borra la marca de volver a dibujar. Mientras se borra la marca de volver a dibujar, el contenido no se actualizará después de cada cambio y no se volverá a pintar hasta que se establezca la marca de volver a dibujar. Por ejemplo, una aplicación que necesita agregar varios elementos a un cuadro de lista puede borrar la marca de volver a dibujar, agregar los elementos y, a continuación, establecer la marca de volver a dibujar. Por último, la aplicación puede llamar a la función miembro Invalidate
o InvalidateRect
para que se vuelva a pintar el cuadro de lista.
Ejemplo
// Updating a control or window with large amounts of data may cause
// flicker. In such cases it may be better to turn off drawing
//m_list is a member of type CListCtrl
m_List.SetRedraw(FALSE); // turn drawing off regardless of list mode
//
// Update control
//
m_List.SetRedraw(TRUE); // turn drawing back on and update the window
// invalidate the entire control, force painting
m_List.Invalidate();
m_List.UpdateWindow();
CWnd::SetScrollInfo
Llame a esta función miembro para establecer la información que la estructura SCROLLINFO
mantiene sobre una barra de desplazamiento.
BOOL SetScrollInfo(
int nBar,
LPSCROLLINFO lpScrollInfo,
BOOL bRedraw = TRUE);
Parámetros
nBar
Especifica si la barra de desplazamiento es un control o parte del área no cliente de una ventana. Si forma parte del área no cliente, nBar también indica si la barra de desplazamiento está colocada horizontalmente, verticalmente o ambas. Debe ser uno de los siguientes:
SB_CTL
Contiene los parámetros de un control de la barra de desplazamiento. El miembro de datosm_hWnd
debe ser el identificador del control de la barra de desplazamiento.SB_HORZ
Especifica que la ventana es una barra de desplazamiento horizontal.SB_VERT
Especifica que la ventana es una barra de desplazamiento vertical.
lpScrollInfo
Un puntero a una estructura SCROLLINFO
. Consulte Windows SDK para obtener más información sobre esta estructura.
bRedraw
Especifica si se debe volver a dibujar la barra de desplazamiento para reflejar la nueva posición. Si bRedraw
es TRUE
, la barra de desplazamiento se vuelve a dibujar. Si es FALSE
, no se vuelve a dibujar. De forma predeterminada, la barra se vuelve a dibujar.
Valor devuelto
Si se ejecuta correctamente, se devuelve TRUE
. De lo contrario, es FALSE
.
Comentarios
La estructura SCROLLINFO
contiene información sobre una barra de desplazamiento, incluidas las posiciones de desplazamiento mínima y máxima, el tamaño de página y la posición del cuadro de desplazamiento (el control). Consulte el tema de estructura SCROLLINFO
de Windows SDK para más información sobre cómo cambiar los valores predeterminados de la estructura.
Los controladores de mensajes de Windows de MFC que indican la posición de la barra de desplazamiento, CWnd::OnHScroll
y CWnd::OnVScroll
, proporcionan solo 16 bits de datos de posición. GetScrollInfo
y SetScrollInfo
proporcionan 32 bits de datos de posición de barra de desplazamiento. Por lo tanto, una aplicación puede llamar a GetScrollInfo
al procesar CWnd::OnHScroll
o CWnd::OnVScroll
para obtener datos de posición de barra de desplazamiento de 32 bits.
Nota:
CWnd::GetScrollInfo
permite a las aplicaciones usar posiciones de barra de desplazamiento de 32 bits.
CWnd::SetScrollPos
Establece la posición actual de un cuadro de desplazamiento y, si se solicita, vuelve a dibujar la barra de desplazamiento para reflejar la nueva posición del cuadro de desplazamiento.
int SetScrollPos(
int nBar,
int nPos,
BOOL bRedraw = TRUE);
Parámetros
nBar
Especifica la barra de desplazamiento que se va a establecer. Este parámetro puede ser uno de los siguientes:
SB_HORZ
Establece la posición del cuadro de desplazamiento en la barra de desplazamiento horizontal de la ventana.SB_VERT
Establece la posición del cuadro de desplazamiento en la barra de desplazamiento vertical de la ventana.
nPos
Especifica la nueva posición del cuadro de desplazamiento. Debe estar dentro del rango de desplazamiento.
bRedraw
Especifica si se debe volver a pintar la barra de desplazamiento para reflejar la nueva posición del cuadro de desplazamiento. Si este parámetro es TRUE
, la barra de desplazamiento se vuelve a pintar; si es FALSE
, la barra de desplazamiento no se vuelve a pintar.
Valor devuelto
La posición anterior del cuadro de desplazamiento.
Comentarios
Establecer bRedraw
en FALSE
es útil siempre que la barra de desplazamiento se vuelva a dibujar mediante una llamada posterior a otra función.
CWnd::SetScrollRange
Establece los valores de posición mínimo y máximo de la barra de desplazamiento especificada.
void SetScrollRange(
int nBar,
int nMinPos,
int nMaxPos,
BOOL bRedraw = TRUE);
Parámetros
nBar
Especifica la barra de desplazamiento que se va a establecer. Este parámetro puede tener uno de los valores siguientes:
SB_HORZ
Establece el intervalo de la barra de desplazamiento horizontal de la ventana.SB_VERT
Establece el intervalo de la barra de desplazamiento vertical de la ventana.
nMinPos
Especifica la posición de desplazamiento mínima.
nMaxPos
Especifica la posición de desplazamiento máxima.
bRedraw
Especifica si se debe volver a dibujar la barra de desplazamiento para reflejar el cambio. Si bRedraw
es TRUE
, la barra de desplazamiento se vuelve a dibujar; si es FALSE
, la barra de desplazamiento no se vuelve a dibujar.
Comentarios
También se puede usar para ocultar o mostrar barras de desplazamiento estándar.
Una aplicación no debe llamar a esta función para ocultar una barra de desplazamiento mientras se procesa un mensaje de notificación de barra de desplazamiento.
Si la llamada a SetScrollRange
ocurre inmediatamente después de una llamada a la función miembro SetScrollPos
, el parámetro bRedraw
de la función miembro SetScrollPos
debe ser 0 para evitar que la barra de desplazamiento se dibuje dos veces.
El intervalo predeterminado de una barra de desplazamiento estándar es de 0 a 100. El intervalo predeterminado de un control de barra de desplazamiento está vacío (ambos valores, nMinPos
y nMaxPos
, son 0). La diferencia entre los valores especificados por nMinPos
y nMaxPos
no debe ser mayor que INT_MAX
.
CWnd::SetTimer
Instala un temporizador del sistema.
UINT_PTR SetTimer(
UINT_PTR nIDEvent,
UINT nElapse,
void (CALLBACK* lpfnTimer)(HWND,
UINT,
UINT_PTR,
DWORD));
Parámetros
nIDEvent
Especifica un identificador de temporizador distinto de cero. Si el identificador del temporizador es único, SetTimer
devuelve este mismo valor. De lo contrario, SetTimer
determina un nuevo valor único y lo devuelve. Para un temporizador de ventana (que tiene una función de devolución de llamada NULL
), el valor sólo debe ser único para los temporizadores de otras ventanas asociadas a la ventana actual. Para un temporizador de devolución de llamada, el valor debe ser único para todos los temporizadores de todos los procesos. Por lo tanto, al crear un temporizador de devolución de llamada, es más probable que el valor devuelto sea diferente del valor especificado.
nElapse
Especifica el valor de tiempo de espera, o intervalo, en milisegundos.
lpfnTimer
Especifica la dirección de la función de devolución de llamada TimerProc
proporcionada por la aplicación que procesa los mensajes WM_TIMER
. Si este parámetro es NULL
, los mensajes WM_TIMER
se colocan en la cola de mensajes de la aplicación y se controlan mediante el objeto CWnd
.
Valor devuelto
El identificador del temporizador del nuevo temporizador si la función se ejecuta correctamente. Este valor puede ser o no igual que el valor que se ha pasado a través del parámetro nIDEvent
. Una aplicación siempre debe pasar el valor devuelto a la función miembro KillTimer
para eliminar el temporizador. Distinto de cero si se realiza correctamente; en caso contrario, 0.
Comentarios
Se especifica un valor de intervalo y, cada vez que transcurre el intervalo, el sistema publica un mensaje WM_TIMER
en la cola de mensajes de instalación de la aplicación de instalación, o pasa el mensaje a una función de devolución de llamada TimerProc
definida por la aplicación.
La función de devolución de llamada lpfnTimer
no debe tener el nombre TimerProc
, pero debe declararse como estática y definirse como se indica a continuación.
void CALLBACK TimerProc(
HWND hWnd, // handle of CWnd that called SetTimer
UINT nMsg, // WM_TIMER
UINT_PTR nIDEvent, // timer identification
DWORD dwTime // system time);
Ejemplo
En este ejemplo se usan CWnd::SetTimer
, CWnd::OnTimer
y CWnd::KillTimer
para controlar los mensajes WM_TIMER
. El primer temporizador se configura para enviar un mensaje WM_TIMER
a la ventana de marco principal cada 2 segundos en OnStartTimer
. El controlador de eventos OnTimer
controla los mensajes WM_TIMER
de la ventana de marco principal. Este método hace que el altavoz del equipo pite cada 2 segundos. El segundo temporizador envía un mensaje a la función de devolución de llamada cada 3,75 segundos. OnStopTimer
detendrá ambos temporizadores llamando a CWnd::KillTimer
para cada Id. de temporizador.
void CMainFrame::OnStartTimer()
{
// This timer uses a WM_TIMER message, not a callback.
// Therefore, the timer is specific to this window.
// m_nWindowTimer is a UINT_PTR field.
m_nWindowTimer = SetTimer(1, 2000, NULL);
// For this demo, we specify an interval that won't overlap
// with the window timer.
m_nCallbackTimer = SetTimer(2, 3750, &CMainFrame::MyTimerProc);
// See whether we got the ID we requested in the first parameter.
#ifdef _DEBUG
CString str;
str.Format(_T("m_ncallbackTImer ID = %d"), m_nCallbackTimer);
TRACE(str);
#endif
}
void CALLBACK CMainFrame::MyTimerProc(
HWND hWnd, // handle of CWnd that called SetTimer
UINT nMsg, // WM_TIMER
UINT_PTR nIDEvent, // timer identification
DWORD dwTime // system time
)
{
MessageBeep(0x00000030L); // Windows question sound.
}
void CMainFrame::OnStopTimer()
{
KillTimer(m_nWindowTimer);
KillTimer(m_nCallbackTimer);
}
void CMainFrame::OnTimer(UINT nIDEvent)
{
MessageBeep(0xFFFFFFFF); // Beep
// Call base class handler.
CMDIFrameWnd::OnTimer(nIDEvent);
}
CWnd::SetWindowContextHelpId
Llame a esta función miembro para asociar un identificador de contexto de ayuda con la ventana especificada.
BOOL SetWindowContextHelpId(DWORD dwContextHelpId);
Parámetros
dwContextHelpId
El identificador de contexto de ayuda.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Si una ventana secundaria no tiene un identificador de contexto de ayuda, hereda el identificador de su ventana primaria. Del mismo modo, si una ventana que es propiedad de otra no tiene un identificador de contexto de ayuda, hereda el identificador de la ventana propietaria. Esta herencia de identificadores de contexto de ayuda permite a una aplicación establecer solo un identificador para un cuadro de diálogo y todos sus controles.
Ejemplo
// The following code fragment is from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog.
// Associate a help context id with the control.
// IDC_TESTHELP_CONTROL is the id of the control
// and HIDC_TESTHELP_CONTROL is its help context
// id associated with the control.
CWnd *pWnd = GetDlgItem(IDC_TESTHELP_CONTROL);
pWnd->SetWindowContextHelpId(HIDC_TESTHELP_CONTROL);
CWnd::SetWindowPlacement
Establece el estado de visualización y las posiciones normal (restaurada), minimizada y maximizada de una ventana.
BOOL SetWindowPlacement(const WINDOWPLACEMENT* lpwndpl);
Parámetros
lpwndpl
Apunta a una estructura WINDOWPLACEMENT
que especifica los nuevos estado de presentación y posiciones.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
CWnd::SetWindowPos
Cambia el tamaño, la posición y el orden Z de las ventanas secundarias, emergentes y de nivel superior.
BOOL SetWindowPos(
const CWnd* pWndInsertAfter,
int x,
int y,
int cx,
int cy,
UINT nFlags);
Parámetros
pWndInsertAfter
Identifica el objeto CWnd
que precederá (será mayor que) este objeto CWnd
en el orden Z. Este parámetro puede ser un puntero a CWnd
o un puntero a uno de los siguientes valores:
wndBottom
Coloca la ventana al final del orden Z. Si estaCWnd
es una ventana superior, la ventana pierde su estado de nivel más alto; el sistema coloca la ventana por debajo de todas las demás ventanas.wndTop
Coloca la ventana al principio del orden Z.wndTopMost
Coloca la ventana encima de todas las ventanas no superiores. La ventana mantiene su posición superior incluso cuando está desactivada.wndNoTopMost
Recoloca la ventana antes de todas las ventanas no superiores (es decir, detrás de todas las ventanas superiores). Esta marca no tiene ningún efecto si la ventana ya es una ventana no superior.
Para obtener reglas sobre cómo usar este parámetro, vea la sección «Comentarios» de este tema.
x
Especifica la nueva posición del lado izquierdo de la ventana.
y
Especifica la nueva posición de la parte superior de la ventana.
cx
Especifica el nuevo ancho de la ventana.
cy
Especifica el nuevo alto de la ventana.
nFlags
Especifica las opciones de ajuste de tamaño y posición. Este parámetro puede ser una combinación de las marcas siguientes:
SWP_DRAWFRAME
Dibuja un marco (definido al crear la ventana) alrededor de la ventana.SWP_FRAMECHANGED
Envía un mensajeWM_NCCALCSIZE
a la ventana, incluso si no se está cambiando el tamaño de la ventana. Si no se especifica esta marca,WM_NCCALCSIZE
sólo se envía cuando se está cambiando el tamaño de la ventana.SWP_HIDEWINDOW
Oculta la ventana.SWP_NOACTIVATE
No activa la ventana. Si no se establece esta marca, la ventana se activa y se mueve a la parte superior del grupo superior o del grupo no superior (según la configuración del parámetropWndInsertAfter
).SWP_NOCOPYBITS
Descarta el contenido del área cliente. Si no se especifica esta marca, el contenido válido del área cliente se guarda y se vuelve a copiar en el área cliente después de cambiar el tamaño o la posición de la ventana.SWP_NOMOVE
Conserva la posición actual (ignora los parámetrosx
yy
).SWP_NOOWNERZORDER
No cambia la posición de la ventana propietaria en el orden Z.SWP_NOREDRAW
No vuelve a dibujar los cambios. Si se establece esta marca, no se vuelve a pintar nada. Esto se aplica al área cliente, al área no cliente (incluidas las barras de título y desplazamiento) y a cualquier parte de la ventana primaria que esté descubierta como resultado del movimiento de la ventana. Cuando se establece esta marca, la aplicación debe invalidar explícitamente o volver a dibujar las partes de la ventana y la ventana primaria que se deben volver a dibujar.SWP_NOREPOSITION
Igual queSWP_NOOWNERZORDER
.SWP_NOSENDCHANGING
Impide que la ventana reciba el mensajeWM_WINDOWPOSCHANGING
.SWP_NOSIZE
Conserva la posición actual (ignora los parámetroscx
ycy
).SWP_NOZORDER
Conserva el orden actual (ignorapWndInsertAfter
).SWP_SHOWWINDOW
Muestra la ventana.
Valor devuelto
Es distinto de cero si la función se ejecuta correctamente; de lo contrario, es 0.
Comentarios
Las ventanas se ordenan en la pantalla según su orden Z; la ventana al principio del orden Z aparece encima de todas las demás ventanas en el orden.
Todas las coordenadas de las ventanas secundarias son coordenadas de cliente (relativas a la esquina superior izquierda del área cliente de la ventana primaria).
Una ventana se puede mover a la parte superior del orden Z estableciendo el parámetro pWndInsertAfter
en &wndTopMost
y asegurándose de que la marca SWP_NOZORDER
no esté establecida, o bien estableciendo el orden Z de una ventana para que esté por encima de cualquier ventana superior existente. Cuando una ventana no superior se hace superior, sus ventanas propiedad también devienen superiores. Sus propietarios no cambian.
Una ventana superior ya no es superior si se cambia su posición a la parte inferior (&wndBottom
) del orden Z o después de cualquier ventana que no sea superior. Cuando una ventana superior se convierte en no superior, todos sus propietarios y sus ventanas propiedad también se convierten en ventanas no superiores.
Si no se especifican SWP_NOACTIVATE
ni SWP_NOZORDER
(es decir, cuando la aplicación solicita que una ventana se active y, simultáneamente, se coloque en el orden Z especificado), el valor especificado en pWndInsertAfter
solo se usa en las siguientes circunstancias:
Ni
&wndTopMost
ni&wndNoTopMost
se especifican en el parámetropWndInsertAfter
.Esta ventana no es la ventana activa.
Una aplicación no puede activar una ventana inactiva sin llevarla a la parte superior del orden Z. Las aplicaciones pueden cambiar el orden Z de una ventana activada sin restricciones.
Una ventana que no sea superior puede ser propietaria de una ventana superior, pero no viceversa. Cualquier ventana (por ejemplo, un cuadro de diálogo) propiedad de una ventana superior se convierte en una ventana superior para asegurarse de que todas las ventanas propiedad permanezcan por encima de su propietario.
Con las versiones 3.1 y posteriores de Windows, las ventanas se pueden mover a la parte superior del orden Z y se pueden bloquear allí estableciendo sus estilos WS_EX_TOPMOST
. Una ventana en la posición superior mantiene dicha posición superior incluso cuando se desactiva. Por ejemplo, al seleccionar el comando de WinHelp Always On Top, la ventana Ayuda se hace superior, y permanece visible cuando el usuario vuelve a la aplicación.
Para crear una ventana superior, llame a SetWindowPos
con el parámetro pWndInsertAfter
igual a &wndTopMost
o establezca el estilo WS_EX_TOPMOST
al crear la ventana.
Si el orden Z contiene ventanas con el estilo WS_EX_TOPMOST
, una ventana que se mueva con el valor &wndTopMost
se coloca en la parte superior de todas las ventanas no superiores, pero debajo de las ventanas superiores. Cuando una aplicación activa una ventana inactiva sin el bit WS_EX_TOPMOST
, la ventana se mueve por encima de todas las ventanas no superiores, pero debajo de las ventanas superiores.
Si se llama a SetWindowPos
cuando el parámetro pWndInsertAfter
es &wndBottom
y CWnd
es una ventana superior, la ventana pierde su estado superior (se borra WS_EX_TOPMOST
) y el sistema coloca la ventana al final del orden Z.
Ejemplo
void CMyApp::OnHideApplication()
{
//m_pMainWnd is the main application window, a member of CMyApp
ASSERT_VALID(m_pMainWnd);
// hide the application's windows before closing all the documents
m_pMainWnd->ShowWindow(SW_HIDE);
m_pMainWnd->ShowOwnedPopups(FALSE);
// put the window at the bottom of z-order, so it isn't activated
m_pMainWnd->SetWindowPos(&CWnd::wndBottom, 0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
}
CWnd::SetWindowRgn
Llame a esta función miembro para establecer la región de una ventana.
int SetWindowRgn(
HRGN hRgn,
BOOL bRedraw);
Parámetros
hRgn
Un identificador de una región.
bRedraw
Si es TRUE
, el sistema operativo vuelve a dibujar la ventana después de establecer la región; de lo contrario, no la dibuja. En general, se establece bRedraw
en TRUE
si la ventana está visible. Si se establece en TRUE
, el sistema envía los mensajes WM_WINDOWPOSCHANGING
y WM_WINDOWPOSCHANGED
a la ventana.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es distinto de cero. Si la función no se realiza correctamente, el valor devuelto es cero.
Comentarios
Las coordenadas de la región de ventana de una ventana son relativas a la esquina superior izquierda de la ventana, no al área cliente de la ventana.
Después de una llamada correcta a SetWindowRgn
, el sistema operativo es propietario de la región especificada por el identificador de región hRgn
. El sistema operativo no realiza una copia de la región; por ello, no realice ninguna llamada de función adicional con este identificador de región y no cierre este identificador de región.
CWnd::SetWindowText
Establece el título de la ventana en el texto especificado.
void SetWindowText(LPCTSTR lpszString);
Parámetros
lpszString
Apunta a un objeto CString
o a una cadena terminada en NULL que se usará como nuevo texto de título o control.
Comentarios
Si la ventana es un control, se establece el texto dentro del control.
Esta función hace que se envíe un mensaje WM_SETTEXT
a esta ventana.
Ejemplo
// set the text in IDC_EDITNAME
CWnd *pWnd = GetDlgItem(IDC_EDITNAME);
pWnd->SetWindowText(_T("Gerald Samper"));
// Get the text back. CString is convenient, because MFC
// will automatically allocate enough memory to hold the
// text--no matter how large it is.
CString str;
pWnd->GetWindowText(str);
ASSERT(str == _T("Gerald Samper"));
// The LPTSTR override works, too, but it might be too short.
// If we supply a buffer that's too small, we'll only get those
// characters that fit.
TCHAR sz[10];
int nRet = pWnd->GetWindowText(sz, 10);
// Nine characters, plus terminating null
ASSERT(_tcscmp(sz, _T("Gerald Sa")) == 0);
ASSERT(nRet == 9);
// You can query the length of the text without the length of
// the string using CWnd::GetWindowTextLength()
nRet = pWnd->GetWindowTextLength();
ASSERT(nRet == 13);
CWnd::ShowCaret
Muestra el cursor de inserción en la pantalla en la posición actual del cursor de inserción.
void ShowCaret();
Comentarios
Ya en pantalla, el cursor de intersección comienza a parpadear automáticamente.
La función miembro ShowCaret
muestra el cursor de inserción solo si tiene una forma actual y no se ha ocultado dos o más veces consecutivamente. Si el cursor de inserción no pertenece a esta ventana, no se muestra el cursor de inserción.
Ocultar el cursor de inserción es acumulativo. Si se ha llamado a la función miembro HideCaret
cinco veces consecutivamente, ShowCaret
se debe llamar cinco veces para mostrar el cursor de inserción.
El cursor de inserción es un recurso compartido. La ventana debe mostrar el cursor de inserción solo cuando tiene el foco de entrada o está activa.
Ejemplo
Vea el ejemplo de CWnd::CreateCaret
.
CWnd::ShowOwnedPopups
Muestra u oculta todas las ventanas emergentes propiedad de esta ventana.
void ShowOwnedPopups(BOOL bShow = TRUE);
Parámetros
bShow
Especifica si se van a mostrar u ocultar ventanas emergentes. Si este parámetro es TRUE
, se muestran todas las ventanas emergentes que están ocultas. Si este parámetro es FALSE
, se ocultan todas las ventanas emergentes visibles.
Ejemplo
Vea el ejemplo de CWnd::SetWindowPos
.
CWnd::ShowScrollBar
Muestra u oculta una barra de desplazamiento.
void ShowScrollBar(
UINT nBar,
BOOL bShow = TRUE);
Parámetros
nBar
Especifica si la barra de desplazamiento es un control o parte del área no cliente de una ventana. Si forma parte del área no cliente, nBar
también indica si la barra de desplazamiento está colocada horizontalmente, verticalmente o ambas. Debe ser uno de los siguientes:
SB_BOTH
Especifica las barras de desplazamiento horizontal y vertical de la ventana.SB_HORZ
Especifica que la ventana es una barra de desplazamiento horizontal.SB_VERT
Especifica que la ventana es una barra de desplazamiento vertical.
bShow
Especifica si Windows muestra u oculta la barra de desplazamiento. Si este parámetro es TRUE
, se muestra la barra de desplazamiento; de lo contrario, la barra de desplazamiento se oculta.
Comentarios
Una aplicación no debe llamar a ShowScrollBar
para ocultar una barra de desplazamiento mientras se procesa un mensaje de notificación de barra de desplazamiento.
CWnd::ShowWindow
Establece el estado de visibilidad de la ventana.
BOOL ShowWindow(int nCmdShow);
Parámetros
nCmdShow
Especifica cómo se va a mostrar CWnd
. Debe tener uno de los siguientes valores:
SW_HIDE
Oculta esta ventana y pasa la activación a otra ventana.SW_MINIMIZE
Minimiza la ventana y activa la ventana de nivel superior en la lista del sistema.SW_RESTORE
Activa y muestra la ventana. Si la ventana está minimizada o maximizada, Windows la restaura a su tamaño y posición originales.SW_SHOW
Activa la ventana y la muestra en su tamaño y posición actuales.SW_SHOWMAXIMIZED
Activa la ventana y la muestra como una ventana maximizada.SW_SHOWMINIMIZED
Activa la ventana y la muestra como un icono.SW_SHOWMINNOACTIVE
Muestra la ventana como un icono. La ventana que está activa actualmente permanece activa.SW_SHOWNA
Muestra la ventana en su estado actual. La ventana que está activa actualmente permanece activa.SW_SHOWNOACTIVATE
Muestra la ventana en su tamaño y posición más recientes. La ventana que está activa actualmente permanece activa.SW_SHOWNORMAL
Activa y muestra la ventana. Si la ventana está minimizada o maximizada, Windows la restaura a su tamaño y posición originales.
Valor devuelto
Distinto de cero si la ventana era visible anteriormente; 0 si CWnd
se estaba ocultada previamente.
Comentarios
Solo se debe llamar a ShowWindow
una vez por aplicación para la ventana principal con CWinApp::m_nCmdShow
. Las llamadas posteriores a ShowWindow
deben usar uno de los valores enumerados anteriormente en lugar del valor especificado por CWinApp::m_nCmdShow
.
Ejemplo
Vea el ejemplo de CWnd::CalcWindowRect
.
CWnd::SubclassDlgItem
Llame a esta función miembro para «asignar dinámicamente como subclase» un control creado a partir de una plantilla de diálogo y asociarlo a este objeto CWnd
.
BOOL SubclassDlgItem(
UINT nID,
CWnd* pParent);
Parámetros
nID
El Id. del control.
pParent
El elemento primario del control (normalmente, un cuadro de diálogo).
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Cuando un control se asigna dinámicamente como subclase, los mensajes de ventana se enrutarán a través del mapa de mensajes de CWnd
y llamarán primero a los controladores de mensajes de la clase de CWnd
. Los mensajes que se pasan a la clase base se pasarán al controlador de mensajes predeterminado en el control.
Esta función miembro asocia el control de Windows a un objeto CWnd
y reemplaza las funciones WndProc
y AfxWndProc
del control. La función almacena el antiguo WndProc
en la ubicación devuelta por la función miembro GetSuperWndProcAddr
.
Ejemplo
// The following code fragment is from CMyDlg::OnInitDialog
// CMyDlg is derived from CDialog.
// IDC_BUTTON1 is the ID for a button on the
// dialog template used for CMyDlg.
m_MyButton.SubclassDlgItem(IDC_BUTTON1, this);
CWnd::SubclassWindow
Llame a esta función miembro para «asignar dinámicamente como subclase» una ventana y asociarla a este objeto CWnd
.
BOOL SubclassWindow(HWND hWnd);
Parámetros
hWnd
Un identificador de la ventana.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, es 0.
Comentarios
Cuando una ventana se asigna dinámicamente como subclase, los mensajes de ventana se enrutarán a través del mapa de mensajes de CWnd
y llamarán a los controladores de mensajes de la clase CWnd
primero. Los mensajes que se pasan a la clase base se pasarán al controlador de mensajes predeterminado en la ventana.
Esta función miembro asocia el control de Windows a un objeto CWnd
y reemplaza las funciones WndProc
y AfxWndProc
de la ventana. La función almacena un puntero al antiguo WndProc
en el objeto CWnd
.
Nota:
La ventana aún no debe estar asociada a un objeto MFC cuando se llama a esta función.
Ejemplo
// The following code shows how to subclass the edit control and list box
// controls inside a combo box. It uses WM_CTLCOLOR for subclassing.
// CSuperComboBox represents the combo box
HBRUSH CSuperComboBox::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
if (nCtlColor == CTLCOLOR_EDIT)
{
//Edit control
if (m_edit.GetSafeHwnd() == NULL)
m_edit.SubclassWindow(pWnd->GetSafeHwnd());
}
else if (nCtlColor == CTLCOLOR_LISTBOX)
{
//ListBox control
if (m_listbox.GetSafeHwnd() == NULL)
m_listbox.SubclassWindow(pWnd->GetSafeHwnd());
}
HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
void CSuperComboBox::OnDestroy()
{
//unsubclass edit and list box before destruction
if (m_edit.GetSafeHwnd() != NULL)
m_edit.UnsubclassWindow();
if (m_listbox.GetSafeHwnd() != NULL)
m_listbox.UnsubclassWindow();
CComboBox::OnDestroy();
}
CWnd::UnlockWindowUpdate
Llame a esta función miembro para desbloquear una ventana bloqueada con CWnd::LockWindowUpdate
.
void UnlockWindowUpdate();
Comentarios
Solo se puede bloquear una ventana a la vez mediante LockWindowUpdate
. Consulte CWnd::LockWindowUpdate
o la función de Win32 LockWindowUpdate
para obtener más información sobre cómo bloquear ventanas.
CWnd::UnsubclassWindow
Llame a esta función miembro para devolver WndProc
a su valor original y desasociar la ventana identificada por HWND del objeto CWnd
.
HWND UnsubclassWindow();
Valor devuelto
Un identificador de la ventana que se ha asignado como subclase.
Ejemplo
Vea el ejemplo de CWnd::SubclassWindow
.
CWnd::UpdateData
Llame a esta función miembro para inicializar los datos en un cuadro de diálogo o para recuperar y validar los datos del diálogo.
BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
Parámetros
bSaveAndValidate
La marca que indica si el cuadro de diálogo se está inicializando (FALSE
) o se están recuperando datos (TRUE
).
Valor devuelto
Distinto de cero si la operación es correcta; de lo contrario, 0. Si bSaveAndValidate
es TRUE
, un valor devuelto distinto de cero significa que los datos se han validado correctamente.
Comentarios
El marco llama automáticamente a UpdateData
con bSaveAndValidate
establecido en FALSE
cuando se crea un cuadro de diálogo modal en la implementación predeterminada de CDialog::OnInitDialog
. La llamada se produce antes de que el cuadro de diálogo esté visible. La implementación predeterminada de CDialog::OnOK
llama a esta función miembro con bSaveAndValidate
establecido en TRUE
para recuperar los datos y, si se ejecuta correctamente, cerrará el cuadro de diálogo. (Si se hace clic en el botón Cancelar en el cuadro de diálogo, el cuadro de diálogo se cierra sin que se recuperen los datos).
CWnd::UpdateDialogControls
Llame a esta función miembro para actualizar el estado de los botones de diálogo y de otros controles de un cuadro de diálogo o ventana que usa el mecanismo de devolución de llamada ON_UPDATE_COMMAND_UI
.
void UpdateDialogControls(
CCmdTarget* pTarget,
BOOL bDisableIfNoHndler);
Parámetros
pTarget
Apunta a la ventana de marco principal de la aplicación y se usa para enrutar mensajes de actualización.
bDisableIfNoHndler
Una marca que indica si un control que no tiene controlador de actualización debe mostrarse automáticamente como deshabilitado.
Comentarios
Si un control secundario no tiene un controlador y bDisableIfNoHndler
es TRUE
, el control secundario se deshabilitará.
El marco llama a esta función miembro para los controles de barras de diálogo o barras de herramientas como parte del procesamiento inactivo de la aplicación.
CWnd::UpdateLayeredWindow
Actualiza la posición, el tamaño, la forma, el contenido y la transparencia de una ventana superpuesta.
BOOL UpdateLayeredWindow(
CDC* pDCDst,
POINT* pptDst,
SIZE* psize,
CDC* pDCSrc,
POINT* pptSrc,
COLORREF crKey,
BLENDFUNCTION* pblend,
DWORD dwFlags);
Parámetros
pDCDst
Un puntero a un contexto de dispositivo para la pantalla. Se usa para la coincidencia de colores de paleta cuando se actualiza el contenido de la ventana. Si pDCDst
es NULL
, se usará la paleta predeterminada.
Si pDCSrc
es NULL
, pDCDst
debe ser NULL
.
pptDst
Un puntero a una estructura POINT
que especifica la nueva posición de pantalla de la ventana superpuesta. Si la posición actual no cambia, pptDst
puede ser NULL
.
psize
Un puntero a una estructura SIZE
que especifica el nuevo tamaño de la ventana superpuesta. Si el tamaño de la ventana no cambia, psize
puede ser NULL
.
Si pDCSrc
es NULL
, psize
debe ser NULL
.
pDCSrc
Un puntero a un controlador de dominio (DC) para la superficie que define la ventana superpuesta. Si la forma y el contexto visual de la ventana no cambian, pDCSrc
puede ser NULL
.
pptSrc
Un puntero a una estructura POINT
que especifica la ubicación de la capa en el contexto del dispositivo.
Si pDCSrc
es NULL
, pptSrc
debe ser NULL
.
crKey
Un puntero a un valor COLORREF
que especifica la clave de color de transparencia que se va a usar al componer la ventana superpuesta. Todos los píxeles pintados por la ventana de este color serán transparentes. Para generar un COLORREF
, use la macro RGB.
pblend
Un puntero a un valor BLENDFUNCTION
que especifica el valor de transparencia que se va a usar al componer la ventana superpuesta.
dwFlags
Especifica una acción que se va a realizar. Este parámetro puede ser uno o más de los siguientes valores. Para obtener una lista de los valores posibles, vea UpdateLayeredWindow
.
Valor devuelto
Es distinto de cero si la función se realiza correctamente; de lo contrario, 0.
Comentarios
Esta función miembro emula la funcionalidad de la función UpdateLayeredWindow
, tal y como se describe en Windows SDK.
CWnd::UpdateWindow
Actualiza el área cliente mediante el envío de un mensaje WM_PAINT
si la región de actualización no está vacía.
void UpdateWindow();
Comentarios
La función miembro UpdateWindow
envía un mensaje WM_PAINT
directamente, evitando la cola de aplicaciones. Si la región de actualización está vacía, WM_PAINT
no se envía.
Ejemplo
// In this example a rectangle is drawn in a view.
// The OnChangeRect() function changes the dimensions
// of the rectangle and then calls CWnd::Invalidate() so the
// client area of the view will be redrawn next time the
// window is updated. It then calls CWnd::UpdateWindow
// to force the new rectangle to be painted.
void CMdiView::OnChangeRect()
{
// Change Rectangle size.
m_rcBox = CRect(20, 20, 210, 210);
// Invalidate window so entire client area
// is redrawn when UpdateWindow is called.
Invalidate();
// Update Window to cause View to redraw.
UpdateWindow();
}
// On Draw function draws the rectangle.
void CMdiView::OnDraw(CDC *pDC)
{
// Other draw code here.
pDC->Draw3dRect(m_rcBox, 0x00FF0000, 0x0000FF00);
}
CWnd::ValidateRect
Valida el área cliente dentro del rectángulo dado quitando dicho rectángulo de la región de actualización de la ventana.
void ValidateRect(LPCRECT lpRect);
Parámetros
lpRect
Apunta a un objeto CRect
o una estructura RECT
que contiene las coordenadas de cliente del rectángulo que se va a quitar de la región de actualización. Si lpRect
es NULL
, se valida toda la ventana.
Comentarios
La función miembro BeginPaint
valida automáticamente toda el área cliente. No se debe llamar ni a la función miembro ValidateRect
ni a la función miembro ValidateRgn
cuando es necesario validar una parte de la región de actualización antes de que se genere WM_PAINT
a continuación.
Windows sigue generando mensajes WM_PAINT
hasta que se valida la región de actualización actual.
CWnd::ValidateRgn
Valida el área cliente dentro de la región dada quitando la región de la región de actualización actual de la ventana.
void ValidateRgn(CRgn* pRgn);
Parámetros
pRgn
Un puntero a un objeto CRgn
que identifica una región que define el área que se va a quitar de la región de actualización. Si este parámetro es NULL
, se quita toda el área cliente.
Comentarios
Una función de región debe haber creado previamente la región especificada. Se supone que las coordenadas de la región son coordenadas de cliente.
La función miembro BeginPaint
valida automáticamente toda el área cliente. No se debe llamar ni a la función miembro ValidateRect
ni a la función miembro ValidateRgn
cuando es necesario validar una parte de la región de actualización antes de que se genere el mensaje WM_PAINT
a continuación.
CWnd::WindowFromPoint
Recupera la ventana que contiene el punto especificado; point
debe especificar las coordenadas de pantalla de un punto en la pantalla.
static CWnd* PASCAL WindowFromPoint(POINT point);
Parámetros
point
Especifica un objeto CPoint
o una estructura de datos POINT
que define el punto que se va a comprobar.
Valor devuelto
Un puntero al objeto de ventana en el que se encuentra el punto. Es NULL
si no existe ninguna ventana en el punto especificado. El puntero devuelto puede ser temporal y no se debe almacenar para su uso posterior.
Comentarios
WindowFromPoint
no recupera una ventana oculta o deshabilitada, incluso si el punto está dentro de la ventana. Una aplicación debe usar la función miembro ChildWindowFromPoint
para una búsqueda no restrictiva.
CWnd::WindowProc
Proporciona un procedimiento de Windows (WindowProc
) para un objeto CWnd
.
virtual LRESULT WindowProc(
UINT message,
WPARAM wParam,
LPARAM lParam);
Parámetros
message
Especifica el mensaje de Windows que se va a procesar.
wParam
Proporciona información adicional que se usa para procesar el mensaje. El valor de este parámetro depende del mensaje.
lParam
Proporciona información adicional que se usa para procesar el mensaje. El valor de este parámetro depende del mensaje.
Valor devuelto
El valor devuelto depende del mensaje.
Comentarios
Distribuye mensajes a través del mapa de mensajes de la ventana.
CWnd::WinHelp
Se llama para iniciar la aplicación WinHelp.
virtual void WinHelp(
DWORD_PTR dwData,
UINT nCmd = HELP_CONTEXT);
Parámetros
dwData
Especifica datos adicionales. El valor usado depende del valor del parámetro nCmd
.
nCmd
Especifica el tipo de ayuda solicitado. Para obtener una lista de valores posibles y cómo afectan al parámetro dwData
, consulte la función de Windows WinHelp
en Windows SDK.
Comentarios
Vea CWinApp::WinHelp
para obtener más información.
CWnd::RegisterTouchWindow
Registra o anula el registro de la compatibilidad táctil de Windows.
BOOL RegisterTouchWindow(
BOOL bRegister = TRUE,
ULONG ulFlags = 0);
Parámetros
bRegister
TRUE
indica el registro de compatibilidad táctil de Windows; FALSE
, lo contrario.
ulFlags
Un conjunto de marcas de bits que especifican modificaciones opcionales. Este campo puede contener 0 o uno de los siguientes valores: TWF_FINETOUCH
o TWF_WANTPALM
.
Valor devuelto
TRUE
si es correcto; de lo contrario, FALSE
.
Comentarios
CWnd::ResizeDynamicLayout
El marco llama a este método cuando el tamaño de la ventana cambia para ajustar el diseño de las ventanas secundarias, si el diseño dinámico está habilitado en esa ventana.
virtual void ResizeDynamicLayout();
Comentarios
Consulte también
CCmdTarget
(clase)
Gráfico de jerarquías
CFrameWnd
(clase)
CView
(clase)