C/Visual C - Mensajes CWnd

 
Vista:

Mensajes CWnd

Publicado por fernando.gomez (61 intervenciones) el 13/12/2002 19:47:53
Un saludo de antemano.

Me gustaria, de ser posible, me proporcionaran el macro del mensaje que Windows envia cuando creas una ventana (es decir, cuando se visualiza tu clase derivada de CWnd, asi como al hacer click con el boton izquierdo se recibe el mensaje WM_LBUTTONDOWN, o al redibujar la ventana se envia el mensaje WM_PAINT, etc.

Gracias anticipadas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Mensajes clave de Windows en la creación y manejo de ventanas en MFC

Publicado por Alejandro (940 intervenciones) el 23/04/2025 18:08:07
¡Un saludo, Fernando! En el contexto de la programación con MFC (Microsoft Foundation Classes) en C++, cuando creas una ventana, se envían varios mensajes a la ventana, y uno de los más importantes es el mensaje `WM_CREATE`. Este mensaje se envía cuando se está creando la ventana y se utiliza para realizar la inicialización necesaria.

Aquí tienes un resumen de algunos de los mensajes clave que se envían a una ventana en MFC:

Mensajes clave de Windows para ventanas



1. WM_CREATE:
- Se envía cuando se está creando la ventana. Este es el momento adecuado para realizar la inicialización de la ventana, como crear controles hijos.

2. WM_DESTROY:
- Se envía cuando la ventana está a punto de ser destruida. Aquí puedes realizar la limpieza de recursos.

3. WM_PAINT:
- Se envía cuando la ventana necesita ser redibujada. Este es el mensaje que manejas para realizar el dibujo en la ventana.

4. WM_LBUTTONDOWN:
- Se envía cuando se hace clic con el botón izquierdo del ratón en la ventana. Este mensaje se utiliza para manejar eventos de clic.

5. WM_SIZE:
- Se envía cuando la ventana cambia de tamaño. Puedes usar este mensaje para ajustar el diseño de los controles en la ventana.

6. WM_CLOSE:
- Se envía cuando se solicita cerrar la ventana. Aquí puedes manejar la lógica para confirmar el cierre o realizar otras acciones antes de cerrar.

Ejemplo de manejo de mensajes en MFC



Aquí tienes un ejemplo básico de cómo manejar algunos de estos mensajes en una clase derivada de `CWnd`:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class CMyWnd : public CWnd {
protected:
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    afx_msg void OnPaint();
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg void OnClose();
 
    DECLARE_MESSAGE_MAP()
};
 
BEGIN_MESSAGE_MAP(CMyWnd, CWnd)
    ON_WM_CREATE()
    ON_WM_PAINT()
    ON_WM_LBUTTONDOWN()
    ON_WM_SIZE()
    ON_WM_CLOSE()
END_MESSAGE_MAP()
 
int CMyWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) {
    // Inicialización de la ventana
    return 0; // Devuelve 0 para continuar con la creación
}
 
void CMyWnd::OnPaint() {
    // Manejo del redibujo de la ventana
    CPaintDC dc(this); // Dispositivo de contexto para pintar
    // Dibuja aquí
}
 
void CMyWnd::OnLButtonDown(UINT nFlags, CPoint point) {
    // Manejo del clic del botón izquierdo
}
 
void CMyWnd::OnSize(UINT nType, int cx, int cy) {
    // Manejo del cambio de tamaño
}
 
void CMyWnd::OnClose() {
    // Manejo del cierre de la ventana
    CWnd::OnClose(); // Llama a la implementación base
}

Conclusión



Estos mensajes son fundamentales para la interacción con la ventana en aplicaciones de Windows. Puedes encontrar más información sobre estos y otros mensajes en la documentación de Microsoft (https://learn.microsoft.com/en-us/windows/win32/winmsg/about-messages-and-message-queues).

¡Espero que esto te sea útil!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar