C ++创建项目并将其添加到列表框

时间:2020-04-28 19:00:11

标签: c++ windows list listbox controls

很抱歉这个菜鸟问题,但我是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");

另外,我得到这个: 错误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
}

1 个答案:

答案 0 :(得分:0)

SendMessage()使用HWND来发送消息。 HANDLE是类型,而不是HWND变量。您在运行时需要列表框的实际HWND。使用GetDlgItem()可以做到这一点,例如:

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

hwndDlg是列表框为其子级的窗口的HWND