Estoy codificando una aplicación en MSVS 2008, que tiene un control ComboBox que inicializo con el código siguiente:Combo-Box Control MFC no muestra la lista completa de elementos cuando hago clic en el menú desplegable
static char* OptionString[4] = {"Opt1",
"Opt2",
"Opt3",
"Opt4"};
BOOL CMyAppDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 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
// TODO: Add extra initialization here
m_Option.AddString(OptionString[0]);
m_Option.AddString(OptionString[1]);
m_Option.AddString(OptionString[2]);
m_Option.AddString(OptionString[3]);
m_Option.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
}
En el código anterior, m_Option
es la variable de control para ComboBox Control.
Ahora, cuando construyo la aplicación y hago clic en la flecha hacia abajo, el cuadro desplegable muestra SOLAMENTE la primera opción (ya que he seleccionado eso a través de mi código). Pero, si presiono la tecla de flecha hacia abajo en el teclado, este se desplaza por las opciones en el orden que inserté, pero nunca muestra más de 1 opción en el cuadro. Entonces, en caso de que un usuario quiera seleccionar la opción 3, ¡tiene que pasar por las opciones 1 y 2! Aunque una vez que selecciono cualquier opción usando el teclado, los controladores de eventos apropiados son despedidos, me molesta este comportamiento, como es comprensible.
estoy enumerando las propiedades del control de cuadro combinado, así - sólo las propiedades que son verdaderas (resto se establece en false):
- Tipo - desplegable
- vertical Barra de desplazamiento
- Tabstop visible
Esto me ha molestado durante semanas. ¿Alguien puede iluminarme?
MFC apesta !! Esto debería ser una propiedad ... ¿cómo más podría saberlo alguien? De todas formas, para PPL (como yo) pegadas con MFC, aquí hay un buen enlace: http://www.eggheadcafe.com/software/aspnet/29801328/how-to-increase-the-ccomb.aspx – TCSGrad
En la equidad, eso no es algo de MFC, es algo de diseño de diálogo de código nativo, anterior a MFC. Y esos controles comunes son anteriores a la idea de "controles" a medida que pensamos en ellos, con propiedades, etc. Y también por lo que vale, ¡MFC era mucho mejor que la programación directa de API en C! Pero tienes razón, si no conoces este modismo para establecer el alto del menú desplegable de un combobox, es probable que nunca lo encuentres por tu cuenta. – jwismar
Guau, para aquellos de nosotros que venimos de C# y VS2008-10, que nunca han usado nada anterior a C#, esto parece extremadamente poco intuitivo. Estoy bastante seguro de que nunca me hubiera dado cuenta de esto sin esta pregunta aquí. ¡Gracias! – JToland