[問題] invalidateRect設定無效區域

看板C_and_CPP (C/C++)作者 (yolling)時間14年前 (2012/06/20 13:55), 編輯推噓0(0015)
留言15則, 3人參與, 最新討論串1/1
不好意思,想請問一下關於設定無效區域的問題 我用WINDOWS API在寫角色移動的過程,設定無效區域的時候總是用 InvalidateRect(hwnd,null,false) ; 來重畫整個視窗,可是這樣卻讓整個效能都降低下來 因此我想改成只重畫『角色移動的那個矩陣位置』 因此假設人物的位置x,y座標為20,20設定變數為px,py 人物的寬度跟長度為199,199 我就設了一個Rect rect(px,py,199,199); 然後無效區域的地方改成: InvalidateRect(hwnd,rect,false) ; 卻出現了: 『 error C2664: 'InvalidateRect' : 無法將參數 2 從 'Gdiplus::Rect' 轉換成 'const RECT *' 沒有可以執行此轉換的使用者定義轉換運算子或無法呼叫運算子 』 的錯誤訊息,我以為是要設成const可是改成了const也是錯誤 以下這幾兩種方法也都錯誤 Rect rect(px,py,199,199); InvalidateRect(hwnd,&rect,false) ; Rect *rect(px,py,199,199); InvalidateRect(hwnd,&rect,false) ; 想請問各位高手設定無效區域的方法該怎麼做? 是我根本用錯方法了嘛嗎?還是不是用rect來設定矩陣位置? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.32.47

06/20 14:03, , 1F
因為我google查到的都是說第二個參數可以設定無效區域
06/20 14:03, 1F

06/20 14:03, , 2F
可是都找不到範例,所以想請問一下該怎麼做,謝謝
06/20 14:03, 2F
※ 編輯: yoll522 來自: 114.34.32.47 (06/20 14:22)

06/20 22:01, , 3F
GDIplus::Rect vs. struct RECT, 很明確的錯誤訊息,不是嗎?
06/20 22:01, 3F

06/20 22:12, , 4F
可是我宣告的時候並沒有特別說要使用
06/20 22:12, 4F

06/20 22:13, , 5F
GDIplus::Rect,它怎麼會自動幫我用成這種?
06/20 22:13, 5F

06/20 22:13, , 6F
請問我該怎麼改成struct RECT@@? 我以為錯誤訊息是要我
06/20 22:13, 6F

06/20 22:13, , 7F
改成const rect
06/20 22:13, 7F

06/20 22:16, , 8F
大概是因為我程式前面加上using namespace Gdiplus;
06/20 22:16, 8F

06/20 22:16, , 9F
所以他自動幫我改成用GDIplus的方式了@@
06/20 22:16, 9F

06/20 22:16, , 10F
可是這樣我在程式內有辦法突然不要用gdi+的rect嗎
06/20 22:16, 10F

06/20 22:16, , 11F
謝謝
06/20 22:16, 11F

06/20 22:19, , 12F
你如果不想要他幫你用的,你可以自己加上去就好
06/20 22:19, 12F

06/20 22:55, , 13F
剛剛一直google跟實驗終於成功了,Rect這個是gdi+的
06/20 22:55, 13F

06/20 22:56, , 14F
得用大寫RECT宣告,且不能用指標
06/20 22:56, 14F

06/20 22:56, , 15F
感謝各位的幫忙
06/20 22:56, 15F
文章代碼(AID): #1FuMNb9f (C_and_CPP)
文章代碼(AID): #1FuMNb9f (C_and_CPP)