untitled-25.txt

来自「mfc 教程」· 文本 代码 · 共 32 行

TXT
32
字号
告诉onMouseMove和onLButtonUp是否已画了橡皮筋线。如果。bCaptureEnabled是真,则
OnLButtonDown的唯一的操作就是捕获鼠标:
      if(In--bCaptureEnabled)
          SetCaature();
    m—bCaptureEnabled由CMainwindow的构造函数初始化为TRUE。它由窗口的onNcLBut-
tonDown处理程序切换,以便可以打开和关闭鼠标捕获来查看鼠标捕获对程序操作的影响。
(待会儿详细讨论。)
    onMouseMove的工作就是无论何时移动了鼠标,都要移动橡皮筋线并用新的光标位置
更新LptTo。语句
      InvertL。ne(&dc,。ntFrom,m-ptTo);
清除以前画的橡皮筋线,而语句
      InvertLine(&dc,。ptFrom,point);
画一条新的线。Invertline是CMainwindow的一个成员。它画线不是通过将每个像素设置为
某种颜色,而是通过转换现有的像素颜色。这就能确保线条无论在什么背景上都可以被看
见,并且只要恢复原有的屏幕颜色就可以清除已有的线。转换是用下列语句将设备描述表
的绘图方式设置为RZ.NOT完成的:
      nit noldriode= pDC-> SetROPZ(RZNOT);
可以参阅第2章中有关RZ.NOT以及其他绘图模式的介绍。
    在鼠标左键释放时,调用  CMainwindow:: onLButtonUp。在  m—bTraking被设置为  FAInE
并释放鼠标以后,它将清除橡皮筋线,最后调用  onMouseMove:
      CClientDC dc(this);
      InvertLine(&dC, In--ptFrom, m-ptTo);
onLButtonUp然后创建一个16像素宽原色为红色的笔,将它选人设备描述表,并绘制粗的红
色线条:
      Cnen nen(PS_SOLID, 16, RGB(255, 0, 0》;
      dc.Selectobject(&pen);
      dc.MoveTo(。ptFro。);
      dc.LineTo(po。nt);
处理结束后, onLButtonUp返回,绘图操作完成。图  3-4显示了  MouseCap窗口含有几条绘制
好的线和新的橡皮筋线的样子。
    在熟悉了程序以后,可以单击标题栏激活OnNcLButtonDown处理程序,将。bCaptureEn一

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?