2017-04-16 40 views
-1

我在一個窗口中有一個列表視圖公共控件。我有一個機制,可以在同一個窗口內更新列表(它像魅力一樣)。但是,我得到了這個要求,我必須從外部實體更新視圖,如完全對話框或其他窗口。這是問題出現的地方。Win32 ListView公共控件重繪問題

當項目爲時,列表視圖不會更新從窗口邊界外部插入。我曾嘗試在每個可能的List View NOTIFICATION消息中執行UpdateWindow()調用,但無濟於事。我希望有人能幫我解決這個問題。

另外,列表視圖DOES在整個應用程序窗口被最小化並且被拉回時被新的項目/行更新。奇怪的。

+1

請向我們展示示例代碼。 –

+1

調用'InvalidateRect()'或'ListView_RedrawItems()'來觸發重繪。 –

回答

0

哦,是的,感謝@Remy Lebeau在評論中提供了正確的解決方案。這是他給的

/* window procedure of window where list view exists as a control */ 
case WM_NOTIFY: 
    switch(((LPNMHDR) lParam)->code) { 
     case LVN_INSERTITEM: 
      ListView_RedrawItems(hMyList, 0, lastIndex); 
      UpdateWindow(hMyList); 
      UpdateWindow(hwnd); /* the parent window */ 
      ... 

希望這可以幫助別人尋找解決方案。