如何使用 SendMessage 填充列表框?

问题描述 投票:0回答:1

我试图用从文本文件中读取的数据填充列表框,但没有运气。我尝试了几种方法来做到

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] );

从文件填充列表框的最佳方法是什么?

c++ winapi listbox sendmessage
1个回答
0
投票

您需要将消息发送到

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]*/);
© www.soinside.com 2019 - 2024. All rights reserved.