2010-01-28 649 views

Respuesta

12

Realmente depende de qué controles desea crear, especialmente si desea saber qué banderas debe establecer. En general, esto se reduce a esto:

Normalmente, se crea un control derivado de CWnd utilizando Create o CreateEx. Para una CButton, por ejemplo:

CButton button; 
button.Create("Button text", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON | DT_CENTER, CRect(5, 5, 55, 19), this, nID); 

donde el CRect especifica la posición del botón, this es un puntero a la ventana padre, y nID es el ID de control.

Si el control no sale como se esperaba, es probable que se deba a que faltan algunos indicadores. Le sugiero que dibuje un control de muestra en modo de diseño, revise el código para ese control en el archivo RC y copie los indicadores en el llamador Create.

En cuanto a los mapas de mensajes, normalmente se enrutan a la ventana principal. El valor nID que utilizó en Create es importante aquí, porque será el número que identifique el control en el mapa de mensajes. Si tiene un número fijo de controles, puede codificar los números nID para sus controles (comenzando en 10000, por ejemplo); de lo contrario, deberá proporcionar una forma para que la ventana principal los identifique. Luego, solo agrega las entradas del mapa de mensajes.

ON_BN_CLICKED(10000, OnBnClicked) 
ON_CONTROL_RANGE(BN_CLICKED, 10010, 10020, OnBtnsClicked) 

Usted puede utilizar el mapa ON_CONTROL_RANGE mensaje para asignar un intervalo de identificadores para la misma función.

Cuestiones relacionadas