首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WIN32 API C-program :尽管填充了CB_ADDSTRING,但组合框有一个空列表或没有下拉列表

WIN32 API C-program :尽管填充了CB_ADDSTRING,但组合框有一个空列表或没有下拉列表
EN

Stack Overflow用户
提问于 2020-03-04 11:30:22
回答 1查看 642关注 0票数 2

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

代码语言:javascript
运行
复制
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

我已经尝试了下面的方法,结果和上面的一样:

代码语言:javascript
运行
复制
SendMessage (hWndComboBox, (UINT) CB_ADDSTRING, (WPARAM) 0, (LPARAM) "ITEM 1");
SendMessage (hWndComboBox, (UINT) CB_ADDSTRING, (WPARAM) 0, (LPARAM) "ITEM 2");

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-05 15:03:02

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60518654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档