C/Visual C - Utilizar ComboBox ¡Urgente!!!

 
Vista:

Utilizar ComboBox ¡Urgente!!!

Publicado por juanma (4 intervenciones) el 20/01/2007 22:34:09
Tengo una caja de dialogo en el que he puesto un ComboBox, pero no soy capaz de coger ningun valor de la lista. Los valores de la lista los inicializo desde la caja de dialogo de "properties" del ComboBox. Lo he intentado con el siguiente código pero a la variable tipo CString umb no se le asigna ningun valor.

void CCuadroDialog::OnOK()
{
// TODO: Add extra validation here

CString umb;
m_umbral.GetWindowText( umb );
AfxMessageBox( umb );

CDialog::OnOK();
}

El problema es que necesito sacar ese valor fuera de la clase de dialogo CCuadroDialog para trabajar con ella desde el documento y no lo consigo.

Ah, con respecto a la anterior duda de las ventanas, que creo que no está bien explicado, lo único que busco es saber como al abrir un nuevo archivo (imagen en mi caso) o pulsar un botón de la barra de herramientas se cree una nueva ventana donde mostrar los resultados.

Un saludo y a ver si me podeis echar una mano, lo necesito urgentemente.
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

RE:Utilizar ComboBox ¡Urgente!!!

Publicado por Nelek (816 intervenciones) el 22/01/2007 08:28:07
Hola de nuevo,

yo tambien tenia ese problema en los Dialog.

En mi caso lo hice asi:

Variables miembro --> para los controles
Variables privadas --> para los datos que interesan

Al dar al "Ok" del dialogo, se guarda los datos de los controles en las variables miembro con UpdateData () lo primero, luego las pasas a las privadas. Y los datos los recoges desde fuera con metodos publicos "GetXX" del Dialog

Por ejemplo:
//
//Todo esto dentro del Dialog
//
CString p_Name; //Privada para grabar el nombre
CString p_Unit; // Privada para grabar la unidad
double p_IntMin, p_IntMax; //Privada para los limites del intervalo

CString GetName ()
{
return p_Name;
}
UINT SetName (CString name)
{
p_Name = name;
if (p_Name == name)
return 1;
else
return 0
}
// Y asi sucesivamente con cada parametro importante.

CDialog::OnOK ()
{
UpdateData (false);

//Aqui si quieres puedes hacer las comprobaciones de validez de los datos antes de guardarlos

p_Name = m_Name;
p_Unit = m_Unit;
//...
}

//
//
// Ahora desde la vista...
//
//
void CView::OnLButtonDblClk(UINT nFlags, CPoint point) //Por ejemplo
{
if (CRect.PtInRect (point)) //si el click es en un dereminado sitio
{
CNewDlg newDlg;
//Aqui podrias mandar datos al dialogo en caso de ser necesario
//UINT nError = 0;
//nError = newDlg.SetName (nombre);
//...

int dlgControl = newRegDlg.DoModal();

//Y aqui te traes los datos
CString szTempName = newDlg.GetName();
int nTempUnit = newDlg.GetUnit();
//etc...
//y desde aqui ya mandas al documento lo que te de la gana
}



La cosa es que haciendolo asi tambien tienes la ventaja de poder poner datos en las variables del dialogo en caso de querer pasarle datos fuera de los inciales especificados en el constructor. Y luego los pasas a los controles al inciarlo.
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