最近才開始寫圖形化的程序。
不禁感慨道雖然也有很多不足,Windows作為一個操作系統是多麼的強大!當然,這也導致寫程序很麻煩,尤其是關系到unicode編碼的時候。
今天遇到的問題是關於GDI對象的,代碼如下:
hDc = BeginPaint(hDlg, & memDc = StretchBlt(hDc, , , , , memDc, , EndPaint(hDlg, & }
可以看到最初我並沒有將內存設備環境刪除,也沒有將位圖與內存設備環境的聯系斷開。
源程序運行時界面保持靜止,沒有按照我的想法會顯示動態的視頻。
經過對比,首先想到的是內存設備環境沒有刪除,這導致GDI對象的洩漏,因為每次會新建一個。
將內存設備環境刪除後程序運行正確,但考慮每次我都將位圖選入內存設備環境後再繪圖,理論上應該可以顯示動態視頻,於是想到問題的根本不在此。
經測試後發現,將位圖與內存設備環境斷開後(即重新選入舊的位圖),即使內存設備環境洩漏也可以正確顯示。因此主要的問題出在: