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

📄 chap09.html

📁 利用软件开发
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<FONT SIZE=1><P ALIGN="JUSTIFY">HPALETTE</FONT></TD>
<TD WIDTH="61%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">用作应用程序和色彩输出设备</FONT><FONT SIZE=1>(</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=1>如显示器</FONT><FONT SIZE=1>)</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=1>之间的接口</FONT></TD>
</TR>
</TABLE>
</CENTER></P>

<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> </P>
</FONT><FONT FACE="Arial"><P>9.1.1 </FONT><FONT FACE="黑体" LANG="ZH-CN">几个与图形绘制有关的简单数据类型</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">在讲述设备上下文和图形对象之前,我们来介绍几个常用的数据结构类。</P><DIR>

</FONT><FONT FACE="Arial" SIZE=3><P>(1) CPoint</FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=3>类</P></DIR>

</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">CPoint</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类封装了一个点的坐标。它事实上是从</FONT><FONT SIZE=3>POINT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构派生而来的。结构</FONT><FONT SIZE=3>POINT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>在</FONT><FONT SIZE=3>Win32 SDK</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中定义。因此,</FONT><FONT SIZE=3>CPoint</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>也继承了</FONT><FONT SIZE=3>POINT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构的数据成员</FONT><FONT SIZE=3>x</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>y</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</FONT><FONT SIZE=3>CPoint</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对象可以用在任何使用</FONT><FONT SIZE=3>POINT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构的场合。</FONT><FONT SIZE=3>CPoint</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对象还可以和另一种简单数据类型</FONT><FONT SIZE=3>CSize</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>或</FONT><FONT SIZE=3>SIZE</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构相互进行转换。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">CPoint</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类具有多种形式的构造函数:</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P>CPoint( );</P>
<P>CPoint( int initX, int initY );</P>
<P>CPoint( POINT initPt );</P>
<P>CPoint( SIZE initSize );</P>
<P>CPoint( DWORD dwPoint );</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">当使用</FONT><FONT SIZE=3>DWORD</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类型的值来构造</FONT><FONT SIZE=3>CPoint</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对象时,其低位字将被赋值给</FONT><FONT SIZE=3>CPoint</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对象的成员</FONT><FONT SIZE=3>x</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,高位字将被赋值给成员</FONT><FONT SIZE=3>y</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">CPoint</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的成员函数</FONT><FONT SIZE=3>Offset</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>可以设置点的偏移量,同时,在类中定义的一些运算符,如</FONT><FONT FACE="Symbol" SIZE=3>?</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT FACE="Symbol" SIZE=3>?</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT FACE="Symbol" SIZE=3>??</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT FACE="Symbol" SIZE=3>??</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>等大大的简化了对点坐标的各种运算和比较。</P><DIR>

</FONT><FONT FACE="Arial" SIZE=3><P>(2) CSize</FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=3>类</P></DIR>

</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">如果要表示距离以及相对位置,可以使用</FONT><FONT SIZE=3>CSize</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对象。</FONT><FONT SIZE=3>MFC</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类</FONT><FONT SIZE=3>CSize</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>事实上是从</FONT><FONT SIZE=3>SIZE</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>派生而来的,因此,</FONT><FONT SIZE=3>CSize</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>继承了</FONT><FONT SIZE=3>SIZE</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构的数据成员</FONT><FONT SIZE=3>cx</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>cy</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。构造一个</FONT><FONT SIZE=3>CSize</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对象与用对应的方法构造</FONT><FONT SIZE=3>CPoint</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对象非常相似,因此我们不需讲述。同样,我们可以使用一个</FONT><FONT SIZE=3>DWORD</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>值来构造</FONT><FONT SIZE=3>CSize</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对象,这时,其低位字被赋值给</FONT><FONT SIZE=3>CSize</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对象的成员</FONT><FONT SIZE=3>cx </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,高位字被赋值给成员</FONT><FONT SIZE=3>cy</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。在类</FONT><FONT SIZE=3>Size</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中定义了六个运算符:</FONT><FONT FACE="Symbol" SIZE=3>?</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT FACE="Symbol" SIZE=3>?</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT FACE="Symbol" SIZE=3>??</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT FACE="Symbol" SIZE=3>??</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT FACE="Symbol" SIZE=3>??</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT FACE="Symbol" SIZE=3>??</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P><DIR>

</FONT><FONT FACE="Arial" SIZE=3><P>(3) CRect</FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=3>类</P></DIR>

</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">CRect</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类是编程时经常使用的几个简单数据结构之一,它从</FONT><FONT SIZE=3>RECT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构派生,因此,</FONT><FONT SIZE=3>CRect</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类继承了</FONT><FONT SIZE=3>RECT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构的数据成员</FONT><FONT SIZE=3>left</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>top</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>right</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>bottom</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。它们是</FONT><FONT SIZE=3>CRect</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的公有成员。</P>
<P ALIGN="JUSTIFY">一个</FONT><FONT SIZE=3>CRect</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对象可以传递给任何以</FONT><FONT SIZE=3>RECT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构或</FONT><FONT SIZE=3>LPCRECT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>LPRECTW</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>指针为参数的函数。</P>

<UL>
</FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"><LI>注意:</LI></P>
</FONT><FONT FACE="楷体_GB2312" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"><LI>在指定一个</FONT><FONT SIZE=3>CRect</FONT><FONT FACE="楷体_GB2312" LANG="ZH-CN" SIZE=3>对象时,一般情况下我们需要使它的左边界的坐标小于右边界的坐标和上边界的坐标小于下边界的坐标。我们称满足该条件的矩形为常态矩形。很多函数要求传递给它的</FONT><FONT SIZE=3>CRect</FONT><FONT FACE="楷体_GB2312" LANG="ZH-CN" SIZE=3>对象表示一个常态矩形,否则这些函数将有可能返回一个错误的结果。我们可以通过调用成员函数</FONT><FONT SIZE=3>NormalizeRect</FONT><FONT FACE="楷体_GB2312" LANG="ZH-CN" SIZE=3>来将一个非常态矩形转换为一个常态矩形。在程序中出现非常态矩形并不一定的程序员的疏忽大意。这里举一个例子,如果当前显示上下文的映射模式为</FONT><FONT SIZE=3>MM_LOENGLISH</FONT><FONT FACE="楷体_GB2312" LANG="ZH-CN" SIZE=3>,将一个表示常态矩形的</FONT><FONT SIZE=3>CRect</FONT><FONT FACE="楷体_GB2312" LANG="ZH-CN" SIZE=3>对象传递给成员函数</FONT><FONT SIZE=3>CDC::DPtoLP</FONT><FONT FACE="楷体_GB2312" LANG="ZH-CN" SIZE=3>,将得到一个非常态矩形,该矩形的高度将成为一个负值。这是因为在</FONT><FONT SIZE=3>MM_LOENGLISH</FONT><FONT FACE="楷体_GB2312" LANG="ZH-CN" SIZE=3>映射模式中,纵坐标的方向是向上的。</LI></P></UL>

</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">相比我们在前面所讲述的</FONT><FONT SIZE=3>CPoint</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类和</FONT><FONT SIZE=3>CSize</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类来说,类</FONT><FONT SIZE=3>CRect</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>要庞大得多。表列出了在类</FONT><FONT SIZE=3>CRect</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中定义的成员函数。</P>
</FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=1><P ALIGN="CENTER">表</FONT><FONT FACE="Arial" SIZE=1>9. 3 </FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=1>类</FONT><FONT FACE="Arial" SIZE=1>CRect</FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=1>的成员函数</P></FONT>
<P ALIGN="CENTER"><CENTER><TABLE BORDER CELLSPACING=2 BORDERCOLOR="#808080" CELLPADDING=7 WIDTH=469>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">成员函数</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">描述</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">Width</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">计算矩形的宽度</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">Height</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">计算矩形的高度</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">Size</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">计算矩形的大小</FONT></TD>
</TR>
</TABLE>
</CENTER></P>

<FONT FACE="黑体" LANG="ZH-CN" SIZE=1><P ALIGN="RIGHT">续表</FONT><FONT FACE="Arial" SIZE=1>9.3</P></FONT>
<P ALIGN="CENTER"><CENTER><TABLE BORDER CELLSPACING=2 BORDERCOLOR="#808080" CELLPADDING=7 WIDTH=469>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">成员函数</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">描述</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">TopLeft</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">返回矩形的左上角</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">BottomRight</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">返回矩形的右下角</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">CenterPoint</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">返回矩形的中点</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">IsRectEmpty</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">判断矩形是否为空。空的矩形的宽和高都为</FONT><FONT SIZE=1>0</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">IsRectNull</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">判断矩形的</FONT><FONT SIZE=1>top</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=1>、</FONT><FONT SIZE=1>bottom</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=1>、</FONT><FONT SIZE=1>left</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=1>和</FONT><FONT SIZE=1>right</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=1>成员变量是否全都为</FONT><FONT SIZE=1>0</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">PtInRect</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">判断指定点是否的矩形内</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">SetRect</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">设置矩形的大小</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">SetRectEmpty</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">将矩形设置为空</FONT><FONT SIZE=1>(</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=1>所有坐标均为</FONT><FONT SIZE=1>0)</FONT></TD>
</TR>
<TR><TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="JUSTIFY">CopyRect</FONT></TD>
<TD WIDTH="79%" VALIGN="TOP">
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="JUSTIFY">从源矩形中拷贝维度到矩形中</FONT></TD>

⌨️ 快捷键说明

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