我试图用从文本文件中读取的数据填充列表框,但没有运气。我尝试了几种方法来做到
SendMessage
(请参见下文),但得到相同的“无效的转换类型”错误。
列表框:
CreateWindow("listbox", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL|
LBS_NOTIFY, 20, 90, 200, 365,
hwnd, (HMENU)LST_LISTBOX, NULL, NULL);
我继续改变
SendMessage
:
SendMessage(LST_LISTBOX, LB_INSERTSTRING, 0, (LPARAM)10); //myline[i]);
SendMessage(LST_LISTBOX, LB_ADDSTRING, 0, (LPARAM) myline[i]);
SendMessage(GetDlgItem(hwnd, LST_LISTBOX), LB_ADDSTRING, 0, (LPARAM) myline[i] );
从文件填充列表框的最佳方法是什么?
您需要将消息发送到
HWND
创建的 CreateWindow()
。您可以从 CreateWindow()
的返回值中获取,或者在 GetDlgItem()
完成后从 CreateWindow()
中获取。
LPARAM
需要是指向以 null 结尾的 C 样式字符串的第一个字符的指针。
char myline[size];
//fill myline as needed...
HWND hwndLB = CreateWindowA(WC_LISTBOXA, ... reinterpret_cast<HMENU>(LST_LISTBOX), ...);
//HWND hwndLB = GetDlgItem(hwnd, LST_LISTBOX);
SendMessage(hwndLB, LB_ADDSTRING, 0, reinterpret_cast<LPARAM>(myline)/*&myline[0]*/);