C ++ Создание и добавление элементов в список - PullRequest
0 голосов
/ 28 апреля 2020

Извините за этот вопрос noob, но я новичок в 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 голосов
/ 28 апреля 2020

SendMessage() требуется HWND для отправки сообщения. HANDLE - это тип, а не HWND переменная. Вам нужно фактическое HWND ListBox во время выполнения. Используйте GetDlgItem(), чтобы получить это, например:

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

Где hwndDlg - это HWND окна, дочерний элемент которого ListBox является дочерним.

...