我正在尝试使用以下方法使列表框在底部滚动:
message_list_box->Append(*message);
message_list_box->SetSelection(message_list_box->GetCount()-1);
message_list_box->Refresh();
SetSelection
导致它冻结,只有在鼠标点击它后才起作用,有没有办法更新它? (向下滚动)
不,
SetSelection()
不会导致它冻结,这就是:
此代码在 int Window::main_frame::main_loop() { while (!window->IsBeingDeleted()) { } }
内调用
在 GUI 应用程序中不能有任何这样的循环,并且期望它不会冻结,因为在这样的循环中它无法处理任何事件——而这正是导致“冻结”的原因。要修复它,您必须重构代码以删除此循环。
当寻求帮助时,你应该真正提供一个简短、独立、正确(可编译)的示例,而不是说程序做什么并不重要(因为,100 次中有 99 次,它非常重要) ).