单击下拉菜单时,MFC组合框控件未显示完整的项目列表

TCS*_*rad 12 mfc combobox visual-studio-2008 visual-c++ drop-down-menu

我在MSVS 2008中编写了一个应用程序,它有一个ComboBox控件,我通过以下代码初始化:

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
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,m_Option是ComboBox控件的Control变量.

现在,当我构建应用程序并单击向下箭头时,下拉框仅显示第一个选项(因为我通过我的代码选择了该选项).但是,如果我按下键盘上的向下箭头键,它会按照我插入的顺序循环选项,但从不在框中显示超过1个选项.因此,如果用户想要选择option3,他必须循环选项1和2 !! 虽然一旦我使用键盘选择任何选项,相应的事件处理程序就会被触发,我对此行为感到恼火,这是可以理解的.

我也列出了组合框控件的属性 - 只有属性为true(rest设置为false):

  1. 类型 - 下拉列表
  2. 垂直滚动条
  3. 可见的Tabstop

这已经困扰了我几个星期了.任何人都可以开导我吗?

jwi*_*mar 24

在对话框布局设计器中,在设计对话框时,单击组合框上的"向下箭头".然后,您可以向下拖动组合框轮廓的底部以增加其高度.

  • MFC糟透了!! 这应该是一个属性....如何有人知道!!! 无论如何,对于那些与MFC一样的人(像我一样),这里有一个很好的链接:http://www.eggheadcafe.com/software/aspnet/29801328/how-to-increase-the-ccomb.aspx (3认同)
  • 公平地说,这不是一个MFC的东西,它是一个本机代码对话设计器的东西 - 早于MFC.当我们想到它们时,那​​些常见的控件早于"控件"的概念,具有属性等.而且对于它的价值而言,MFC比C中的直接API编程要好得多!但你是对的,如果你不知道这个用来设置组合框下拉高度的习语,你就不可能自己找到它. (2认同)

Sun*_*nil 9

您需要增加设计器中组合框下拉的高度.

默认情况下,通过设计器,您可以调整ComboBox宽度.如果要调整下拉列表高度的大小,则需要单击右侧的下拉箭头,然后您将能够调整已删除的控件高度.这似乎很容易,但如果没有人告诉你这不是直觉.

希望你理解我的观点.