Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问通讯录选择器的转发人数上限在哪里修改。 #97

Open
yipyeukyi opened this issue Mar 22, 2022 · 8 comments
Open

请问通讯录选择器的转发人数上限在哪里修改。 #97

yipyeukyi opened this issue Mar 22, 2022 · 8 comments

Comments

@yipyeukyi
Copy link

yipyeukyi commented Mar 22, 2022

转发消息给千人时失败,转发消息给千人时失败,拉群时同样。表现为消息未转发通信录选择器崩溃

@yipyeukyi
Copy link
Author

请问是超出数组场长度导致的的吗 或者是其他的原因改如何修改

@nmgwddj
Copy link
Collaborator

nmgwddj commented Mar 23, 2022

没有设置上限,崩溃有源码可以尝试调试查找原因。

@yipyeukyi
Copy link
Author

没有设置上限,崩溃有源码可以尝试调试查找原因。

不是崩溃只是选择器千人后通讯录选择器按下确定,界面关闭未转发。

@nmgwddj
Copy link
Collaborator

nmgwddj commented Mar 23, 2022

没有设置上限,崩溃有源码可以尝试调试查找原因。

不是崩溃只是选择器千人后通讯录选择器按下确定,界面关闭未转发。

可以在转发代码逻辑位置下断点观察代码走向。

@yipyeukyi
Copy link
Author

没有设置上限,崩溃有源码可以尝试调试查找原因。

不是崩溃只是选择器千人后通讯录选择器按下确定,界面关闭未转发。

可以在转发代码逻辑位置下断点观察代码走向。

XD请教下转发逻辑代码在那个文件。

@nmgwddj
Copy link
Collaborator

nmgwddj commented Mar 23, 2022

bool ContactSelectForm::OnBtnConfirmClick(ui::EventArgs* param)

@nmgwddj nmgwddj closed this as completed Mar 23, 2022
@nmgwddj nmgwddj reopened this Mar 23, 2022
@yipyeukyi
Copy link
Author

实测转发上千人时候程序无响应闪退失败,原因位置,思路是多添加按钮,换成500或者300一组的,原因或许绘画list存在上限?

@yipyeukyi
Copy link
Author

//注意以下代码是存在错误的,似乎无法获取数值arraylistitem的长度,原因未知,对循环的理解是根据首字母不同分组循环联系人列表,选取其中的全部项目,试图将全部项目转移到新数值统计长度失败。或许整个思路有误。

bool ContactSelectForm::OnBtnCancelClick(ui::EventArgs* param) {
int iiname;

UTF8String* arrayid = new UTF8String[3000];

UTF8String* arrayidlove = new UTF8String[3000];

auto arraylistitem = new ContactListItemUI*[3000];

auto arraylistitemlove = new ContactListItemUI*[3000];

int ii = 0;

for (auto& it : tree_node_ver_) {
    for (int i = 0; i < it->GetCount(); i++) {
        auto listitem = (ContactListItemUI*)(it->GetItemAt(i));
        UTF8String id = listitem->GetUTF8DataID();

        // auto* arraylistitem = new ContactListItemUI*[3000];

        // UTF8String* arrayid = new UTF8String[3000];

        arraylistitem[i] = listitem;

        arrayid[i] = id;

        /*
         for (int m = 0; m <= 300; m++) {
ui::CheckBox* checkbox = (ui::CheckBox*)arraylistitem[m]->FindSubControl(L"checkbox");
if (!checkbox->IsSelected()) {
    checkbox->Selected(true, true);

    arraylistitem[m]->Selected(true, true);

    OnCheckBox(arrayid[m], arraylistitem[m]->IsTeam(), checkbox->IsSelected());
}

}
*/
}

    // int iiname = sizeof(arraylistitem) / sizeof(arraylistitem[0]);

    iiname = sizeof(arraylistitem);

    int length = sizeof(arraylistitem) / sizeof(int);

    int llove = length;

    merge(arraylistitemlove, arraylistitem, 0, 4);

    merg(arrayidlove, arrayid, 0, 4);
    int ii = ii + iiname;
}

int lovename = sizeof(arraylistitemlove);

cout << lovename << endl;

int ff = iiname - 1;

if (lovename <= 300) {
    for (int m = 0; m <= 1; m++) {
        ui::CheckBox* checkbox = (ui::CheckBox*)arraylistitemlove[m]->FindSubControl(L"checkbox");
        if (!checkbox->IsSelected()) {
            checkbox->Selected(true, true);

            arraylistitemlove[m]->Selected(true, true);

            OnCheckBox(arrayidlove[m], arraylistitemlove[m]->IsTeam(), checkbox->IsSelected());
        }
    }
}

/*
 if (lovename <= 300) {
  for (int m = 0; m <= lovename; m++) {
      ui::CheckBox* checkbox = (ui::CheckBox*)arraylistitemlove[m]->FindSubControl(L"checkbox");
      if (!checkbox->IsSelected()) {
          checkbox->Selected(true, true);

          arraylistitemlove[m]->Selected(true, true);

          OnCheckBox(arrayidlove[m], arraylistitemlove[m]->IsTeam(), checkbox->IsSelected());
      }
  }

}
*/

/*

else {
    for (int m = 0; m <= 300; m++) {
        ui::CheckBox* checkbox = (ui::CheckBox*)arraylistitem[m]->FindSubControl(L"checkbox");
        if (!checkbox->IsSelected()) {
            checkbox->Selected(true, true);

            arraylistitem[m]->Selected(true, true);

            OnCheckBox(arrayidlove[m], arraylistitem[m]->IsTeam(), checkbox->IsSelected());
        }
    }
}

*/
return true;

}

void ContactSelectForm::merge(ContactListItemUI* a[], ContactListItemUI* b[], int beg, int size) {
for (int i = 0; i < size; ++i)
a[beg + i] = b[i];
}

void ContactSelectForm::merg(UTF8String a[], UTF8String b[], int beg, int size) {
for (int i = 0; i < size; ++i)
a[beg + i] = b[i];
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants