【问题标题】:Use combobox into Listview Items in C++ win32 api在 C++ win32 api 中使用组合框进入 Listview 项目
【发布时间】:2016-01-20 10:10:00
【问题描述】:

如何在 C++ win32 api 中将列表视图的项目设置为组合框?

我的列表视图

hWndListView = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    WC_LISTVIEW,
    L"",
    WS_VISIBLE | WS_CHILD | LVS_REPORT | LVS_EDITLABELS,
    10,
    100,
    430,
    400,
    hWndx,
    (HMENU)IDC_LIST,
    NULL,
    NULL);

我的组合框

HWND hComboBox2 = CreateWindow(
    WC_COMBOBOX,
    CMBX_CLASS_NAME,
    CBS_DROPDOWN | CBS_HASSTRINGS | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE,
    10,
    50,
    300,
    300,
    hWndListView,
    NULL,
    NULL,
    NULL);

有可能吗? 谢谢!

【问题讨论】:

  • 为什么要这样做?也许您只是想要一个包含一组组合框控件的可滚动区域?也许您也只是想要一个弹出菜单?
  • 我会研究第三方网格控件,根据您的要求,它几乎肯定会比试图威胁 listview commctrl 做您想做的事情更容易,压力也更小。
  • 感谢您的好心cmets。我想使用组合框设置 ListView 项目以轻松选择具有限制的值。用户可以使用组合框选择他们的项目值。我认为这真的很舒服。
  • 如果我理解正确的话,我想我过去做过类似的事情。也许this approach 可以提供帮助?只需将隐藏的编辑控件更改为组合框...
  • 有人有完整的例子吗?我找到了这个但仍然没有代码social.msdn.microsoft.com/Forums/en-US/…

标签: c++ listview winapi combobox


【解决方案1】:

标准的 ListView 通用控件无法实现。您可以实现自己的控件,通过继承标准控件并让它执行绘画以及所有其他功能来执行您想要的操作。然后,您的自定义将包括响应点击、命中测试以确定点击发生的位置(使用 LVM_HITTEST)、创建和显示组合框,以及使用组合框中的新选择更新项目/子项目。

【讨论】:

    猜你喜欢
    • 2013-03-17
    • 2019-06-10
    • 2011-11-01
    • 2010-09-26
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多