很抱歉这个菜鸟问题,但我是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
}
答案 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
。