C/Visual C - CBitmapButton en un parent Dialog

 
Vista:

CBitmapButton en un parent Dialog

Publicado por Esteban (16 intervenciones) el 26/03/2003 11:53:12
Hola. Les cuento que sigo trabajando en mi proyecto Basado en Diálogos.

Esta vez quiero saber cómo puedo usar mi CBitmapButton en un parent Dialog que no tiene la función OnInitDialog().

Es decir, en el archivo MiProyectoDlg.h declaré el objeto "CBitmapButton m_button1;". Después en la función OnInitDialog() cargué mi botón haciendo "VERIFY(m_button1.AutoLoad(IDC_BUTTON1, this));".

Funciona de maravillas en este diálogo, pero si yo quiero usarlo en otro diálogo derivado de éste (parent Dialog) no puedo hacerlo... cómo puedo solucionar esto?

Gracias de antemano!!
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

Uso de CBitmapButton en un diálogo derivado sin OnInitDialog()

Publicado por Alejandro (1153 intervenciones) el 13/05/2025 17:51:20
Para utilizar un `CBitmapButton` en un diálogo que no tiene la función `OnInitDialog()`, como en el caso de un diálogo derivado de otro, puedes seguir estos pasos:

1. Crear un constructor para el diálogo derivado:


Asegúrate de que tu diálogo derivado tenga un constructor donde puedas inicializar el botón. Aunque no tengas `OnInitDialog()`, puedes realizar la inicialización en el constructor.

2. Inicializar el CBitmapButton en el constructor:


En el constructor de tu diálogo derivado, puedes cargar el botón utilizando `AutoLoad`. Aquí tienes un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// MiDialogoDerivado.h
class CMiDialogoDerivado : public CDialogEx
{
public:
    CMiDialogoDerivado(CWnd* pParent = nullptr); // Constructor
 
protected:
    CBitmapButton m_button1; // Declaración del botón
 
    // Otras declaraciones...
};
 
// MiDialogoDerivado.cpp
CMiDialogoDerivado::CMiDialogoDerivado(CWnd* pParent /*=nullptr*/)
    : CDialogEx(IDD_MIDIAGLOGODERIVADO, pParent)
{
    // Inicializar el botón aquí
    VERIFY(m_button1.AutoLoad(IDC_BUTTON1, this));
}

3. Asegurarte de que el control se crea correctamente:


Si el botón no se está creando correctamente, asegúrate de que el ID del botón (`IDC_BUTTON1`) esté definido en el recurso del diálogo y que el botón esté presente en el diseño del diálogo.

4. Manejo de mensajes:


Si necesitas manejar eventos del botón, asegúrate de que hayas agregado el mapeo de mensajes correspondiente en tu clase de diálogo derivado:

1
2
3
4
5
6
7
8
BEGIN_MESSAGE_MAP(CMiDialogoDerivado, CDialogEx)
    ON_BN_CLICKED(IDC_BUTTON1, &CMiDialogoDerivado::OnBnClickedButton1)
END_MESSAGE_MAP()
 
void CMiDialogoDerivado::OnBnClickedButton1()
{
    // Manejo del clic en el botón
}

5. Verificar la carga de recursos:


Si el botón no se muestra o no funciona, verifica que los recursos (imágenes) que estás utilizando para el `CBitmapButton` estén correctamente cargados y disponibles.

Conclusión:


Siguiendo estos pasos, deberías poder utilizar `CBitmapButton` en un diálogo derivado sin necesidad de `OnInitDialog()`. ¡Buena suerte con tu proyecto, Esteban!
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