每次下拉列表中有更改时,如何获取当前下拉列表的选定值?
case WM_COMMAND:
break;
答案 0 :(得分:2)
combo box通过发送CBN_SELCHANGE消息来通知其父项有关选择的更改。您可以通过发送CB_GETCURSEL消息来获取当前选定的项目索引。可以通过发送CB_GETLBTEXT消息来获得项目文本:
case WM_COMMAND:
switch(HIWORD(wParam))
{
case CBN_SELCHANGE:
{
HWND const control{ (HWND)lParam };
int const index{ ::SendMessage(control, CB_GETCURSEL, nullptr, nullptr) };
if (index == CB_ERR)
{
// Handle error
return 0;
}
// [optional] Retrieve text of selected item
int const len{ (int)::SendMessage(control, CB_GETLBTEXTLEN, (WPARAM)index, nullptr) };
if (len == CB_ERR)
{
// Handle error
return 0;
}
std::vector<wchar_t> buffer(len + 1);
::SendMessageW(control, CB_GETLBTEXT, (WPARAM)index, (LPARAM)buffer.data());
return 0;
}
case default:
break;
}
break;