問題是這樣的。我的對話框下面有一個Tab,Tab里面又欠了一個Tab,然后我在串口通訊執行緒里收到資料以后,發訊息給第二個Tab里對話框的List控制元件。
我除錯,發現可以正常在List控制元件中插入資料(通訊,訊息沒有問題),更新List的函式是在子對話框的OnPaint里實作的(開始不再這里實作,結果不能插入,我也不知道原因是什么,有大神解讀一下嗎?)。然后雖然資料可以插入,但是不顯示新資料。只有當我切換Tab頁面(其實就是引發視窗重繪),比如我點一下tab第二頁,再點回來,好了,資料重繪成新的了。如果我不點,就還是以前的資料。
我除錯發現,接到串口資料的時候,順序是發訊息 - 對話框訊息回應函式 - 對話框OnPaint函式 - List更新函式。(資料不更新顯示)。然后“切換Tab頁面再切換回來”,引起對話框重繪,順序是OnPaint-List更新函式,順序是相同的,但是這樣就可以重繪List里面的資料。
求大神指點,這是什么原因?
我嘗試了很多方法,在主對話框里用Invalid,這樣是可以,但是會閃爍(加UpdateWindow也沒用),這個程序會呼叫這個子對話框的OnPaint函式,所以資料會更新(其實原理和切換Tab一樣,都是引發重繪OnPaint,但是為什么第一次接收到資料,串口接收資料函式發訊息,回應函式呼叫OnPaint就不能重繪List?)。
還有,子對話框里,我在訊息回應函式里面使用Invalid也無效,我除錯過了,子對話框的區域并沒有無效而發生重繪。
uj5u.com熱心網友回復:
加UpdateData?uj5u.com熱心網友回復:
上代碼 才好分析uj5u.com熱心網友回復:
Updatedata(true);uj5u.com熱心網友回復:
問題解決了,是一個比較奇葩的問題,之前重來沒有遇到過,現在沒有問題了轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/99757.html
標籤:基礎類
上一篇:怎么通過mfc讀取mysql資料庫中的表格生成xml檔案
下一篇:SAFEARRAY記憶體泄漏問題
