删除并清除combobox win32 api中的所有项目

时间:2018-03-19 15:06:30

标签: c++ winapi combobox

我正在构建一个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事件时,我只是重新加载命令,导致重复。 任何想法如何解决这个??

1 个答案:

答案 0 :(得分:0)

尝试SendMessage(hChildWindows[1], CB_DELETESTRING, (WPARAM)0, (LPARAM)0);

此消息将仅清除组合框(项目或字符串)中的一行