在下面的代码中,如果我在第一次“如果”条件之后不使用“更新()”,则ListCtrl将不更新项目,但将即使在第二个“如果”条件之后没有调用“Update()”方法,也会更新。为什么是这样?我只是想知道什么时候需要Update(),什么时候不需要!
class MyDialog()
{
public:
void MyFunction();
private:
CListCtrl myListControl;
}
void MyDialog::Myfunction()
{
bool bCondition;
for (auto i = 0, i < myListControl.GetItemCount(); ++i)
{
auto n = myListControl.SetItemText(i, 1, "Start");
if (n)
myListControl.Update(i);
/*Update() is required here */
EvaluateCondition( bConditon);
if(bConditon)
myListControl.SetItemText(i, 1, "End");
/* Why is Update() ***Not*** required here? */
}
}
答案 0 :(得分:4)
Update
会立即将更改放在屏幕上。如果您不打电话,Windows会在您的消息循环下次运行时(在MyFunction
退出后)自动将更改放在屏幕上。这就是为什么在将其更改为&#34;结束&#34;之前需要调用它来查看&#34;开始&#34 ;. Windows会自动将其更新为&#34;结束&#34;当你的功能退出时。
答案 1 :(得分:0)
如果Why X is true?
为假,如何回答问题X
当您设置某个项目的文本时 - 列表控件会使相应的区域无效;最终,当谈到绘画时 - 它会重新绘制新文本。
强制列表视图控件重新绘制由nItem指定的项目。
所以你可以立即看到结果。