Win32 Api的相關問題

1.Windows api中PostMessage和SendMessage函數的區別是什麼?

答:PostMessage和SendMessage函數的區別主要在於是否等待其它程序消息處理。PostMessage只是把消息放入隊列,不管其它程序是否處理都繼續執行,而SendMessage必須等待其它程序處理消息後才繼續執行。這兩個函數的返回值也不同,PostMessage的返回值表示PostMessage函數執行是否正確,而SendMessage的返回值表示其它程序處理消息後的返回值。

2.在Windows GDI編程過程中,繪製函數常會導致屏幕閃爍,請問有哪些優化的方法?

答:如果每次繪製時都對設備DC進行了多次繪製,動畫顯示的時候會有屏幕閃爍的問題。解決的辦法就是申請一個內存DC作爲緩衝,每次先寫入內存DC,然後用BitBlt將內存DC中的內容複製到設備DC中,這樣就OK了。

       注意:內存DC創建後,並不能直接繪圖,需要再申請一個內存控件,不然什麼也畫不出來,用CreateCompabileBitmap創建一個兼容的HBITMAP對象,然後選進內存DC就可以了,另外不要忘了SelectObject、DeleteObject、DeleteDC來釋放資源,不然就要出現內存泄漏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章