我在Windows上使用wxProgressDialog。每当我更改对话框中的文本时,对话框会重新调整大小以最好地适应文本,这会导致经常重新调整对话框的大小,这看起来很糟糕。如何停止wxProgressDialog重新调整大小?
我试过SetMinSize和SetSizeHints,但这些似乎没有效果。 SetSize也似乎不起作用。
(有关信息,该对话框显示文件传输的进度。当每个文件传输,显示其完整路径。这些变化在很大程度上导致了持续的调整大小。)
我的代码是基于该代码从样品:
static const int max = 100;
wxProgressDialog dialog("Progress dialog example",
// "Reserve" enough space for the multiline
// messages below, we'll change it anyhow
// immediately in the loop below
wxString(' ', 100) + "\n\n\n\n",
max, // range
this, // parent
wxPD_CAN_ABORT |
wxPD_CAN_SKIP |
wxPD_APP_MODAL |
//wxPD_AUTO_HIDE | // -- try this as well
wxPD_ELAPSED_TIME |
wxPD_ESTIMATED_TIME |
wxPD_REMAINING_TIME |
wxPD_SMOOTH // - makes indeterminate mode bar on WinXP very small
);
bool cont = true;
for (int i = 0; i <= max; i++)
{
wxString msg;
// test both modes of wxProgressDialog behaviour: start in
// indeterminate mode but switch to the determinate one later
const bool determinate = i > max/2;
if (i == max)
{
msg = "That's all, folks!\n"
"\n"
"Nothing to see here any more.";
}
else if (!determinate)
{
msg = "Testing indeterminate mode\n"
"\n"
"This mode allows you to show to the user\n"
"that something is going on even if you don't know\n"
"when exactly will you finish.";
}
else if (determinate)
{
msg = "Now in standard determinate mode\n"
"\n"
"This is the standard usage mode in which you\n"
"update the dialog after performing each new step of work.\n"
"It requires knowing the total number of steps in advance.";
}
// will be set to true if "Skip" button was pressed
bool skip = false;
if (determinate)
{
cont = dialog.Update(i, msg, &skip);
}
else
{
cont = dialog.Pulse(msg, &skip);
}
// each skip will move progress about quarter forward
if (skip)
{
i += max/4;
if (i >= 100)
i = 99;
}
if (!cont)
{
if (wxMessageBox(wxT("Do you really want to cancel?"),
wxT("Progress dialog question"), // caption
wxYES_NO | wxICON_QUESTION) == wxYES)
break;
cont = true;
dialog.Resume();
}
wxMilliSleep(200);
}
if (!cont)
{
wxLogStatus(wxT("Progress dialog aborted!"));
}
else
{
wxLogStatus(wxT("Countdown from %d finished"), max);
}
}
没有看到您的代码,我们的魔法玻璃球不能正常工作。你在哪里打电话Fit()?我只希望在wxProgressDialog ctor。 – Ripi2