WIN32 API C 程序:组合框有一个空列表或尽管用 CB_ADDSTRING 填充但没有下拉

WIN32 API C-program : Combo Box has an empty list or not dropping down despite populating with CB_ADDSTRING

我正在使用 Visual C++ 2008 使用 WIN32 API 对话框使用宽字符执行 C 程序。到目前为止,每个控件都在工作,但我现在通过从工具箱拖放到资源对话框中添加了一个组合框。我已经完成了必要的编码(见下文),但是当我单击组合框时,当我单击组合框时,列表似乎没有下拉或为空。但是,最后一项 ("ITEM 2") 显示在组合框中。我将代码放在 WM_INITDIALOG 而不是 WM_CREATE 中,因为我的应用程序只包含一个对话框。这是我的部分代码:

LRESULT CALLBACK BasicScanProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{

    HWND hWndComboBox;

    switch(uMsg)
    {

        case WM_INITDIALOG:

            hWndComboBox = GetDlgItem(hwnd,IDC_COMBO1); //gets handle
            SendMessage(hWndComboBox, CB_ADDSTRING, 0, TEXT("ITEM 1")); //adds items
            SendMessage(hWndComboBox, CB_ADDSTRING, 0, TEXT("ITEM 2"));
            SendMessage (hWndComboBox, CB_SETCURSEL, (WPARAM) 1, (LPARAM) 0); //display first item


我尝试了以下方法,结果与上面相同:

SendMessage (hWndComboBox, (UINT) CB_ADDSTRING, (WPARAM) 0, (LPARAM) "ITEM 1");
SendMessage (hWndComboBox, (UINT) CB_ADDSTRING, (WPARAM) 0, (LPARAM) "ITEM 2");

如何在单击控件时在组合框的下拉列表中显示两个项目(项目 1 和项目 2)?

是的,这个问题已经解决了。问题不在于编码中的任何地方,而是在于使用鼠标或箭头键手动调整组合框控件在 VISUAL C++ 的资源编辑器中的高度,以便在下拉列表区域下降时(即当它被点击)加上组合框在正常非下拉模式下的正常高度。因此当您将 Combo Box 控件放置在资源编辑器上时,其大小(高度)应大于 Combo Box 控件的默认高度,因为其下拉列表区域尚未展开。

更改组合框控件的高度有点棘手。当您第一次单击组合框 select 时,您的鼠标光标不会在第一次单击时变为调整大小的 up/down 箭头。您必须再次单击组合框右端的向下箭头(是的,第二次)。只有这样,您才能获得调整大小的 up/down 箭头。非常感谢@JonathanPotter 提供的信息!