我正在构建一个Windows应用程序,我有这个组合框拒绝干净。我希望在一个按钮单击另一个按钮之间删除组合框项目。我试过了:
SendDlgItemMessage(hWnd, IDC_LIST_COMMANDS, CB_RESETCONTENT, 0, 0);
还有:
SendMessage(CommandsListBox, CB_RESETCONTENT, 0, 0);
但它们都不起作用。在上述一个电话之后我拨打LB_GETCOUNT时,我得不到0。
case SOME_EVENT:
ProfileHandler.IdentityIndex = (int)SendMessage(ProfilesCombo,
CB_GETCURSEL, 0, 0);
SendMessage(ProfilesCombo, CB_GETLBTEXT,
(WPARAM)ProfileHandler.stringIndex, (LPARAM)ProfileHandler.string);
if (ProfileHandler.IdentityIndex == -1) {
MessageBox(hWnd, "Invalid !", "Error !", MB_OK);
break;
}
StringsSet.clear();
if (fuc.GetStrings(string(ProfileHandler.string), &StringsSet)
== SERVER_ERROR) {
MessageBox(hWnd, "Error Loading strings", "Error !", MB_OK);
break;
}
SendMessage(CommandsListBox, CB_RESETCONTENT, 0, 0); // reset
content before writing strings
it = StringsSet.begin();
for (; it != StringsSet.end(); ++it)
{
(int)SendMessage(CommandsListBox, LB_ADDSTRING, 0,
(LPARAM)(*it).c_str());
}
break;
所以,我在点击收到的每个SOME_EVENT之间,我想清除组合框,然后重新加载字符串。 现在发生的事情是每次我点击按钮,收到SOME_EVENT事件时,我只是重新加载命令,导致重复。 任何想法如何解决这个??
答案 0 :(得分:0)
尝试SendMessage(hChildWindows[1], CB_DELETESTRING, (WPARAM)0, (LPARAM)0);
此消息将仅清除组合框(项目或字符串)中的一行