YADONG771506 2015-12-04 12:11 采纳率: 0%
浏览 1371

windows程序设计(第五版)第22章的drum.c中的问题?

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) ;

}”

作者的思路是什么呢?请教大神来给解释一下啊!

  • 写回答

1条回答 默认 最新

  • devmiao 2015-12-05 15:30
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料