windows程序设计(第五版)第22章的drum.c中的这段,没弄明白作者的想法,
“ if (x >= 0 && x < 32 && y >= 0 && y < NUM_PERC)
{
if (message == WM_LBUTTONDOWN)
drum.dwSeqPerc[y] ^= (1 << x) ;//这里不明白,作者为什么这样写
else
drum.dwSeqPian[y] ^= (1 << x) ;//这里不明白,作者为什么这样写
DrawRectangle (hdc, x, y, drum.dwSeqPerc, drum.dwSeqPian) ;
bNeedSave = TRUE ;
}”
在这里是这样的
“void DrawRectangle (HDC hdc, int x, int y, DWORD * dwSeqPerc, DWORD * dwSeqPian)
{
int iBrush ;
if (dwSeqPerc [y] & dwSeqPian [y] & (1L << x));//在这里是这样响应的
iBrush = BLACK_BRUSH ;
else if (dwSeqPerc [y] & (1L << x)) //在这里是这样响应的
iBrush = DKGRAY_BRUSH ;
else if (dwSeqPian [y] & (1L << x)) //在这里是这样响应的
iBrush = LTGRAY_BRUSH ;
else
iBrush = WHITE_BRUSH ;
SelectObject (hdc, GetStockObject (iBrush)) ;
Rectangle (hdc, (x + 40) * cxChar , (2 * y + 4) * cyChar / 4,
(x + 41) * cxChar + 1, (2 * y + 6) * cyChar / 4 + 1) ;
}”
作者的思路是什么呢?请教大神来给解释一下啊!