我在为程序启动菜单动态创建的复选框列表中创建了“全选/取消全选”复选框。选中“全选/取消全选”复选框后,我希望列表中的所有框都显示为选中或未选中。当前,单击时仅选中“全选/取消全选”复选框。我不知道如何处理此问题,因为这些框是动态创建的,并且仅当在启动菜单中单击“确定”按钮时才读取复选框的值。
// create the structure to store the check boxes so we can populate it on the fly
CheckBoxOptionStruct* Temp = new CheckBoxOptionStruct;
Temp->OptionsListIndex = i;
m_CheckBoxList.push_back(Temp);
// create the check boxes
for(int j = 0; j < m_OptionsList[i]->Labels.size(); j++)
{
CButton* CheckBox = new CButton();
CheckBox->Create(m_OptionsList[i]->Labels[j], WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, CRect(Left + 10, *Top, Right - 10, *Top + 15), this, ControlCounter++);
CheckBox->SetFont(DialogFont);
Temp->TheControls.push_back(CheckBox);
// increment the row counter
*Top += 20;
}
// increment the next row position
*Top += 10;}
当前工作方式:
我希望它如何工作:
答案 0 :(得分:1)
您可以创建用户定义的消息及其消息处理程序。
链接:How to create user-defined messages and their message handlers?
使用SendMessage函数触发消息,然后MFC将检查消息映射并执行相关的消息处理程序。
您可以检查并选择消息处理程序中复选框的状态。
链接:How to check and uncheck and enable and disable a check Box control in MFC?
还要注意,您为每个复选框控件设置了唯一的ID。
详细信息:按下“确定”按钮时,触发消息处理程序 通过自定义消息来检查复选框的状态
更多信息:Get the notification code from Listview Control checkboxes