⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap34.htm

📁 经典的C入门教程,想学习VC的朋友们可以看一下
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>02-03滑鼠的处理的加强</title>
<link rel="stylesheet" href="../../../include/style.css">
</head>

<body>
<font SIZE="2">

<p><small><a href="../../../index.htm">首页</a> &gt;&gt; <a href="../../program.htm">程序设计</a> 
  &gt;&gt; <a href="../cbuilder.htm">C++ Builder</a>&nbsp; &gt;&gt;&nbsp; </small><font>具体而微的绘图程式</font>&middot;02-03<font SIZE="2">滑鼠的处理的加强</font></p>

<p align="left"><!--webbot bot="ImageMap" rectangle="(40,1) (71, 23)  chap35.htm" rectangle="(4,1) (36, 23)  chap33.htm" src="../ch1/NextBack.gif" width="72" height="24" alt="NextBack.gif (743字节)" border="0" startspan --><MAP NAME="FrontPageMap"><AREA SHAPE="RECT" COORDS="40, 1, 71, 23" HREF="chap35.htm"><AREA SHAPE="RECT" COORDS="4, 1, 36, 23" HREF="chap33.htm"></MAP><a href="../../../_vti_bin/shtml.exe/program/C++/ch3/chap34.htm/map"><img ismap usemap="#FrontPageMap" border="0" height="24" alt="NextBack.gif (743字节)" src="../ch1/NextBack.gif" width="72"></a><!--webbot bot="ImageMap" endspan i-checksum="23253" --></p>
</font>

<p align="left"><font SIZE="2" color="#FF0000">&middot;02-03滑鼠的处理的加强</font></p>
<font SIZE="2">

<p>前面的程式对於滑鼠的移动处理有部份考虑的不够周详,因为它在滑鼠移动时不分青红皂白就将线画在萤慕上,造成萤幕上的线条混乱,这并不是正规的处理方法,正确的处理方法应该如下:</p>
<p>

<font SIZE="2">(1) </font>滑鼠键按下时,将记录滑鼠按下的旗标设为<font SIZE="2">True.</font>同时将该点记录下来,谓之原点。 

<ol START="2">
  <li>滑鼠移动时,判断滑鼠按下的旗标是否设为<font SIZE="2"> True</font>,若为<font SIZE="2"> True</font>,则移动至原点,并画一条由原点至目前所在点的线。同时更新原点位置至目前所在之点。</li>
  <li VALUE="3">滑鼠放开时,将记录滑鼠按下的旗标设为<font SIZE="2">False</font>。</li>
</ol>

<p>以下就是关於叁个滑鼠事件的处理程式码。</p>
<p>

<font SIZE="2">// </font>滑鼠按下的事件处理函式</p>
<p>

<font SIZE="2">// 1. </font>将旗标设为<font SIZE="2">True</font></p><p>

<font SIZE="2">// 2. </font>记录原点位置</p>
<font SIZE="2">

<p>void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,</p>
</font>

<p><font SIZE="2">TShiftState Shift, int X, int Y)</font></p>


<p>{</p>

<p>&nbsp;&nbsp;&nbsp; m_bDraw = TRUE;</p>

<p>&nbsp;&nbsp;&nbsp; m_nOrgX=X;</p>

<p>&nbsp;&nbsp;&nbsp; m_nOrgY=Y;</p>

<p>}</p>
<p>

<font SIZE="2">// </font>滑鼠移动的事件处理函式</p>
<p>

<font SIZE="2">// 1. </font>判断旗标是否为<font SIZE="2">True</font>。若是则进行以下动作。</p>
<p>

<font SIZE="2">// 2. </font>移动至原点。</p>
<p>

<font SIZE="2">// 3. </font>画一条由原点至目前所在点的线条。</p>
<p>

<font SIZE="2">// 4. </font>更改原点位置。</p>
<font SIZE="2">

<p>void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,</p>
</font>

<p><font SIZE="2">int X, int Y)</font></p>


<p>{</p>

<p>&nbsp;&nbsp;&nbsp; if (m_bDraw)</p>

<p>&nbsp;&nbsp;&nbsp; {</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Canvas-&gt;MoveTo(m_nOrgX,m_nOrgY);</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Canvas-&gt;LineTo(X,Y);</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_nOrgX = X;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_nOrgY = Y;</p>

<p>&nbsp;&nbsp;&nbsp; }</p>

<p>}</p>
<p>

<font SIZE="2">// </font>滑鼠放开的事件处理函式</p>
<p>

<font SIZE="2">// 1. </font>判断旗标是否为<font SIZE="2">True</font>。若是则进行以下动作。</p>
<p>

<font SIZE="2">// 1. </font>将旗标设为<font SIZE="2"> False</font>。</p>
<p>

<font SIZE="2">// 2. </font>画线并记录原点位置(非必要)。</p>
<font SIZE="2">

<p>void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,</p>
</font>

<p><font SIZE="2">TShiftState Shift, int X, int Y)</font></p>


<p>{</p>

<p>&nbsp;&nbsp;&nbsp; if (m_bDraw)</p>

<p>&nbsp;&nbsp;&nbsp; {</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_bDraw=FALSE;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Canvas-&gt;MoveTo(m_nOrgX,m_nOrgY);</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Canvas-&gt;LineTo(X,Y);</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_nOrgX = X;</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_nOrgY = Y;</p>

<p>&nbsp;&nbsp;&nbsp; }</p>

<p>}</p>

<p>将滑鼠事件处理函式做以上的修改之後,我们就完成了一个基本的涂鸦程式的雏形了。我将此表格的背景设为黑色,笔的状态设为<font SIZE="2">2</font>单位宽度的红色笔,就得到以下的输出结果:</p>

<p><img SRC="Image10.gif" WIDTH="463" HEIGHT="356"></p>

<p align="right"><font SIZE="2"><!--webbot bot="ImageMap" rectangle="(40,1) (71, 23)  chap35.htm" rectangle="(4,1) (36, 23)  chap33.htm" src="../ch1/NextBack.gif" width="72" height="24" alt="NextBack.gif (743字节)" border="0" startspan --><MAP NAME="FrontPageMap1"><AREA SHAPE="RECT" COORDS="40, 1, 71, 23" HREF="chap35.htm"><AREA SHAPE="RECT" COORDS="4, 1, 36, 23" HREF="chap33.htm"></MAP><a href="../../../_vti_bin/shtml.exe/program/C++/ch3/chap34.htm/map1"><img ismap usemap="#FrontPageMap1" border="0" height="24" alt="NextBack.gif (743字节)" src="../ch1/NextBack.gif" width="72"></a><!--webbot bot="ImageMap" endspan i-checksum="41707" --></font></p>
<p> <font SIZE="2"><small><a href="../../../index.htm">首页</a> &gt;&gt; <a href="../../program.htm">程序设计</a> 
  &gt;&gt; <a href="../cbuilder.htm">C++ Builder</a>&nbsp; &gt;&gt;&nbsp; </small><font>具体而微的绘图程式</font></font>&middot;02-03<font SIZE="2">滑鼠的处理的加强</font></p>
</font>
</body>
</html>

⌨️ 快捷键说明

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