【问题标题】:C++ Create and Add items to listboxC++ 创建和添加项目到列表框
【发布时间】:2020-08-12 17:19:14
【问题描述】:

很抱歉这个菜鸟问题,但我是 C++ 新手(来自 C#)。我有一个数组中的项目列表,我想在列表框中显示(只显示 - 仅此而已)。在 c++ 中添加控件比我想象的要困难得多。

这是我到目前为止所拥有的:我不确定如何从这里开始以及如何让它发挥作用。提前致谢。

// .rh file
#define IDC_LISTDIR                 106

//in the .rc file
CONTROL "ListBox", IDC_LISTDIR, "listbox", WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_AUTOHSCROLL | WS_GROUP, 8, 80, 200, 60

//main
SendMessage(HANDLE, LB_ADDSTRING, 0, (LPARAM)L"Add This Text to listbox");

另外,我得到了这个: error C2275: 'HANDLE' : 非法将此类型用作表达式

IDD_MAINWINDOW DIALOG 36, 54, 421, 252
EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE
CAPTION "Listbox Test"
FONT 9, "MS Sans Serif"
{   
    CONTROL "&OK", IDOK, "button", WS_CHILD | WS_VISIBLE | WS_TABSTOP, 100, 5, 40, 14
    CONTROL "&Cancel", IDCANCEL, "button", WS_CHILD | WS_VISIBLE | WS_TABSTOP, 100, 30, 30, 14
    CONTROL "CheckBox", IDC_YESNO, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_GROUP, 9, 55, 77, 22
    CONTROL "ListBox", IDC_LISTDIR, "listbox", WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_AUTOHSCROLL | WS_GROUP, 8, 80, 200, 60
}

【问题讨论】:

    标签: c++ windows list listbox controls


    【解决方案1】:

    SendMessage() 接受HWND 将消息发送到。 HANDLE 是一种类型,而不是 HWND 变量。您在运行时需要 ListBox 的实际 HWND。使用GetDlgItem() 得到它,例如:

    HWND hwndLB = GetDlgItem(hwndDlg, IDC_LISTDIR);
    SendMessage(hwndLB, LB_ADDSTRING, 0, (LPARAM)L"Add This Text to listbox");
    

    其中hwndDlg 是ListBox 子窗口的HWND。

    【讨论】:

    • 嗨。感谢您的回复。我想我很难理解的是“hwnDlg”。我编辑了帖子以显示 ListBox 是其子级的 Window。我如何为此创建 HWND?谢谢!
    • 您展示的只是定义主窗口的资源,但您没有展示您实际创建和使用该窗口的方式。但是,您应该可以从对话过程中访问该窗口的HWND,我假设您从一开始就调用SendMessage()?没有minimal reproducible example,很难回答您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多