2016-05-04 32 views
2

アップデート項目は私がconditon「場合」最初後に「更新を()」を使用していないではないだろう場合は呼ばない「アップデート()」メソッドが存在しない場合でも、が更新されます2番目の「If」の後に条件があります。どうしてこれなの?私は、Update()が必要なときとそうでないときを知りたいだけです!以下の例でCListCtrl Update()が必要ないのはなぜですか? ListCtrl以下のコードで

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

Xがfalseの場合、質問Why X is true?にはどのように答えることができますか?

一部の項目のテキストを設定すると、リストコントロールによって対応する領域が無効になります。最終的に、ペイントになると新しいテキストが再描画されます。 MSDN (CListCtrl::Update)によると

軍nItemで指定されたアイテムを再描画するには、リストビューコントロール。

これですぐに結果を確認できます。

+0

質問を誤解していると思います。 –

4

Updateこの変更はすぐに画面に表示されます。呼び出さないと、メッセージループが次に実行されたとき(WindowsのMyFunctionが終了した後)、Windowsは自動的に変更を画面に表示します。このため、「終了」に変更する前に、「開始」を表示するために呼び出す必要があります。 Windowsは、関数が終了すると自動的に "終了"に更新されます。

関連する問題