为什么在下面的示例中不需要 CListCtrl Update()?
Why CListCtrl Update() not necessary in the example below?
在下面的代码中,如果我在 first 之后不使用 "Update()" not 更新项目 "If" 条件,但即使在第二个 "If" 条件 之后没有调用 "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? */
}
}
如果 X
为假,你如何回答问题 Why X is true?
???
当您设置某些项目的文本时-列表控件使相应的区域无效;最终,当涉及到绘画时 - 它会重新绘制新文本。
Forces the list view control to repaint the item specified by nItem.
所以你可以立即看到结果。
Update
使更改立即显示在屏幕上。如果您不调用它,Windows 会在您的消息循环下次运行时(在您的 MyFunction
退出后)自动将更改显示在屏幕上。这就是为什么在将其更改为 "End" 之前需要调用它以查看 "Start" 的原因。当您的函数退出时,Windows 会自动将其更新为 "End"。
在下面的代码中,如果我在 first 之后不使用 "Update()" not 更新项目 "If" 条件,但即使在第二个 "If" 条件 之后没有调用 "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? */
}
}
如果 X
为假,你如何回答问题 Why X is true?
???
当您设置某些项目的文本时-列表控件使相应的区域无效;最终,当涉及到绘画时 - 它会重新绘制新文本。
Forces the list view control to repaint the item specified by nItem.
所以你可以立即看到结果。
Update
使更改立即显示在屏幕上。如果您不调用它,Windows 会在您的消息循环下次运行时(在您的 MyFunction
退出后)自动将更改显示在屏幕上。这就是为什么在将其更改为 "End" 之前需要调用它以查看 "Start" 的原因。当您的函数退出时,Windows 会自动将其更新为 "End"。