2013-08-24 35 views
1

到目前爲止,我只複製/粘貼了微軟有here的示例(但我刪除了#include)。如何使用Window的C++圖形(GDI +)庫移動對象?

我想弄清楚如何不斷地調用OnPaint(至於有移動對象),但它似乎不會被調用多次。

如何使用標準Windows C++圖形庫(即GDI +或其他標準Windows API)創建移動對象?我必須自己打電話給OnPaint嗎?還是有一個簡單的修復,使其不斷被稱爲?或者它是不可能的?

+0

爲什麼downvote? – Cisplatin

+0

每當窗口處理一個WM_PAINT消息時調用它。 – chris

+0

你能否再詳述一下?這就是我正在尋找的,我無法在網上找到它。 – Cisplatin

回答

1

只有當Windows認爲您的窗口需要重新繪製時,OnPaint()方法纔會運行。這通常只在您的窗口首次創建時發生一次。或者當你最小化和恢復窗口。

要強制它運行多次並設置動畫,必須告訴它需要重新繪製。最好的方法是使用計時器,它會給你一個動畫時鐘。將時間間隔設置爲小於15.625毫秒倍數的數字。 45毫秒是一個體面的價值,它會讓你每秒更新21次。假設你可以畫得夠快。在WM_TIMER消息處理程序中調用InvalidateRect()。或者如果使用Winforms,則使Invalidate()失效。