作者yu00928 (難道我只是新八嗎)
看板C_and_CPP
標題[語法] win 32 API
時間Fri Feb 6 22:44:56 2009
各位大大好
小弟又來問問題啦
小弟現在研究到了滑鼠的部份
有一些地方我看不太懂
以下是原程式碼
http://rafb.net/p/wNg1US35.html
其中的這一段
case WM_LBUTTONDOWN :
x = LOWORD (lParam) / cxBlock ;
y = HIWORD (lParam) / cyBlock ;
if (x < DIVISIONS && y < DIVISIONS)
{
fState [x][y] ^= 1 ;
rect.left = x * cxBlock ;
rect.top = y * cyBlock ;
rect.right = (x + 1) * cxBlock ;
rect.bottom = (y + 1) * cyBlock ;
InvalidateRect (hwnd, &rect, FALSE) ;
}
else
MessageBeep (0) ;
return 0 ;
我的問題有2個
1.rect這個東西到底是作什麼用的
看msdn跟書上好像是說要建什麼長方形 看不太懂XD
2. ^=這個符號是什麼意思
又要麻煩各位大大解答 真不好意思Orz
PS 前面幾篇大大回答的文 都讓我學到很多東西 感謝~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.191.71
※ 編輯: yu00928 來自: 220.133.191.71 (02/06 22:45)
1F:推 Bencrie:rect就是用來描述一個長方形,並把他當成參數傳給 02/06 23:04
2F:→ Bencrie:InvalidateRect做區域重繪 02/06 23:04
3F:→ Bencrie:x^=y; 就是 x=x^y; ^ 是bitwise的XOR運算子 02/06 23:05
5F:→ james732:RECT 是一個 struct, 用左上角的點與長寬來描述長方形 02/06 23:07
6F:→ james732:我講錯了 是用左上角與右下角兩個點來描述長方形 orz 02/06 23:10
7F:→ yu00928:可是在這種地方描述長方形的用意是什麼? 還是不太懂 02/06 23:14
8F:→ james732:你可以查查看InvalidateRect的用途 還有這個長方形是什麼 02/06 23:17
剛剛查了一下InvalidateRect 後面的參數是FALSE 所以他不會清除背景
只會清除RECT限定的範圍 所以RECT的作用就是 建立一個獨立的範圍 讓他跟背景不同
這樣對嗎?
※ 編輯: yu00928 來自: 220.133.191.71 (02/06 23:25)
9F:推 plover:InvalidateRect(NULL)對client rectangle下WM_PAINT 02/06 23:46
10F:→ plover:如有指定rectangle,那就是對指定的rectangle下WM_PAINT 02/06 23:47
11F:→ plover:WM_PAINT要做什麼,就看你怎麼寫這段codes.. 02/06 23:48
12F:→ WPC001:InvalidateRect就是通知某區域已經無效, 需要重繪 02/06 23:57
13F:→ tsaiminghan:invalidaterect會告知rect範圍內的區域需要重繪 02/07 00:16
14F:→ tsaiminghan:然後費發出wm_paint更新該範圍 02/07 00:17
15F:→ tsaiminghan:至於如何更新該區域, 必須要在wm_paint內自行coding 02/07 00:18
這個部份我大致瞭解了 感謝各位大大解答Orz
※ 編輯: yu00928 來自: 220.133.191.71 (02/07 23:05)