wxYield()返回什么?这与为什么我的语言没有更新有关吗

what wxYield() returns? Is it related to why my guauge is not updated?

本文关键字:我的 语言 更新 为什么 返回 什么 wxYield      更新时间:2023-10-16

我正在使用wxwidgets,我有一个这样的代码:

    gaugeProgressFolders->SetRange(folderList.size());
    for(int i=0;i<folderList.size();i++)
    {
        ProcessOneSet(folderList[i]);
        gaugeProgressFolders->SetValue(i+1);          
        wxYield();
    }

wxYeild没有更新语言。我想知道为什么它不起作用?

查看wxYield,我注意到它返回了一个bool,但没有关于它返回内容的文档。

为什么我的guauge没有更新,我如何修复它?

wxYield返回多少?

你没有说什么是gaugeProgressFolders。也许是wxGauge?

无论如何,你为什么期望wxYield神奇地更新显示?

您必须编写代码才能更新显示。

假设你的代码有各种各样的东西,你可以写这样的东西:

gaugeProgressFolders->SetRange(folderList.size());
for(int i=0;i<folderList.size();i++)
{
    ProcessOneSet(folderList[i]);
    gaugeProgressFolders->SetValue(i+1);          
    // wxYield();  Don't call this, it does nothing
    // force the window to be repainted RIGHT NOW.
    Refresh();
    Update();
}

为了效率和减少闪烁,您也可以尝试以下操作

   // force the gauge to be repainted.
    gaugeProgressFolders->Refresh();
    gaugeProgressFolders->Update();

也许现在响应有点晚,但我认为wxYield()不是更新度量的正确调用。也许试试:

gaugeProgressFolders->SetRange(folderList.size());
    for (int i = 0; i < folderList.size(); i++)
    {
        ProcessOneSet(folderList[i]);
        gaugeProgressFolders->SetValue(i+1);          
        this->Layout(); //this being your window/dialog/frame
    }

Layout()强制重新绘制布局。它过去对我很有效。