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

📄 chap11_4.htm

📁 着重介绍基于C++的web编程技术
💻 HTM
📖 第 1 页 / 共 4 页
字号:
        lpszFileName);<br>
        </font><font SIZE="3">该函数从文件中载入</font><font FACE="Times New Roman" SIZE="3">DIB</font><font SIZE="3">,参数</font><font FACE="Times New Roman" SIZE="3">lpszFileName</font><font SIZE="3">说明了文件名。若成功载入则函数返回</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">,否则返回</font><font FACE="Times New Roman" SIZE="3">FALSE</font><font SIZE="3">。</p>
        </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">BOOL LoadFromResource(UINT 
        nID);<br>
        </font><font SIZE="3">该函数从资源中载入位图,参数</font><font FACE="Times New Roman" SIZE="3">nID</font><font SIZE="3">是资源位图的</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">。若成功载入则函数返回</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">,否则返回</font><font FACE="Times New Roman" SIZE="3">FALSE</font><font SIZE="3">。</p>
        </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">CPalette* GetPalette()<br>
        </font><font SIZE="3">返回</font><font FACE="Times New Roman" SIZE="3">DIB</font><font SIZE="3">的逻辑调色板。</p>
        </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">BOOL Draw(CDC *pDC, int x, 
        int y, int cx=0, int cy=0);<br>
        </font><font SIZE="3">该函数在指定的矩形区域内显示</font><font FACE="Times New Roman" SIZE="3">DIB</font><font SIZE="3">,它具有缩放位图的功能。参数</font><font FACE="Times New Roman" SIZE="3">pDC</font><font SIZE="3">指向用于绘图的设备上下文,参数</font><font FACE="Times New Roman" SIZE="3">x</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">y</font><font SIZE="3">说明了目的矩形的左上角坐标,</font><font FACE="Times New Roman" SIZE="3">cx</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">cy</font><font SIZE="3">说明了目的矩形的尺寸,</font><font FACE="Times New Roman" SIZE="3">cx</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">cy</font><font SIZE="3">若有一个为</font><font FACE="Times New Roman" SIZE="3">0</font><font SIZE="3">则该函数按</font><font FACE="Times New Roman" SIZE="3">DIB</font><font SIZE="3">的实际大小绘制位图,</font><font FACE="Times New Roman" SIZE="3">cx</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">cy</font><font SIZE="3">的缺省值是</font><font FACE="Times New Roman" SIZE="3">0</font><font SIZE="3">。若成功则函数返回</font><font FACE="Times New Roman" SIZE="3">TRUE</font><font SIZE="3">,否则返回</font><font FACE="Times New Roman" SIZE="3">FALSE</font><font SIZE="3">。</p>
        </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">int Width(); //</font><font SIZE="3">以像素为单位返回</font><font FACE="Times New Roman" SIZE="3">DIB</font><font SIZE="3">的宽度</p>
        </font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">int Height(); //</font><font SIZE="3">以像素为单位返回</font><font FACE="Times New Roman" SIZE="3">DIB</font><font SIZE="3">的高度</font></p>
      </blockquote>
    </blockquote>
    <p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">CDib</font><font SIZE="3">类的源代码在清单</font><font FACE="Times New Roman" SIZE="3">11.3</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">11.4</font><font SIZE="3">列出,</font><font FACE="Times New Roman" SIZE="3">CDib</font><font SIZE="3">类的定义位于</font><font FACE="Times New Roman" SIZE="3">CDib.h</font><font SIZE="3">中,</font><font FACE="Times New Roman" SIZE="3">CDib</font><font SIZE="3">类的成员函数代码位于</font><font FACE="Times New Roman" SIZE="3">CDib.cpp</font><font SIZE="3">中。对于</font><font FACE="Times New Roman" SIZE="3">CDib</font><font SIZE="3">类的代码这里就不作具体解释了,读者只要会用就行。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><b><font SIZE="3"> </p>
    <p ALIGN="JUSTIFY">清单</font><font FACE="Times New Roman" SIZE="3">11.3 CDib.h</b></p>
    <p ALIGN="JUSTIFY">#if !defined MYDIB</p>
    <p ALIGN="JUSTIFY">#define MYDIB</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">#include &quot;dibapi.h&quot;</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">class CDib</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">public:</p>
    <p ALIGN="JUSTIFY">CDib();</p>
    <p ALIGN="JUSTIFY">~CDib();</p>
    <p ALIGN="JUSTIFY">protected:</p>
    <p ALIGN="JUSTIFY">HDIB m_hDIB;</p>
    <p ALIGN="JUSTIFY">CPalette* m_palDIB;</p>
    <p ALIGN="JUSTIFY">public:</p>
    <p ALIGN="JUSTIFY">BOOL Load(LPCTSTR lpszFileName);</p>
    <p ALIGN="JUSTIFY">BOOL LoadFromResource(UINT nID);</p>
    <p ALIGN="JUSTIFY">CPalette* GetPalette() const</p>
    <p ALIGN="JUSTIFY">{ return m_palDIB; }</p>
    <p ALIGN="JUSTIFY">BOOL Draw(CDC *pDC, int x, int y, int cx=0, int cy=0);</p>
    <p ALIGN="JUSTIFY">int Width();</p>
    <p ALIGN="JUSTIFY">int Height();</p>
    <p ALIGN="JUSTIFY">void DeleteDIB();</p>
    <p ALIGN="JUSTIFY">};</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">#endif</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><b><font SIZE="3"> </p>
    <p ALIGN="JUSTIFY">清单</font><font FACE="Times New Roman" SIZE="3">11.4 Cdib.cpp</b></p>
    <p ALIGN="JUSTIFY">#include &lt;stdafx.h&gt;</p>
    <p ALIGN="JUSTIFY">#include &quot;CDib.h&quot;</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">#ifdef _DEBUG</p>
    <p ALIGN="JUSTIFY">#undef THIS_FILE</p>
    <p ALIGN="JUSTIFY">static char BASED_CODE THIS_FILE[] = __FILE__;</p>
    <p ALIGN="JUSTIFY">#endif</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">CDib::CDib()</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">m_palDIB=NULL;</p>
    <p ALIGN="JUSTIFY">m_hDIB=NULL;</p>
    <p ALIGN="JUSTIFY">}</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">CDib::~CDib()</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">DeleteDIB();</p>
    <p ALIGN="JUSTIFY">}</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">void CDib::DeleteDIB()</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">if (m_hDIB != NULL)</p>
    <p ALIGN="JUSTIFY">::GlobalFree((HGLOBAL) m_hDIB);</p>
    <p ALIGN="JUSTIFY">if (m_palDIB != NULL)</p>
    <p ALIGN="JUSTIFY">delete m_palDIB;</p>
    <p ALIGN="JUSTIFY">}</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">//</font><font SIZE="3">从文件中载入</font><font FACE="Times New Roman" SIZE="3">DIB</p>
    <p ALIGN="JUSTIFY">BOOL CDib::Load(LPCTSTR lpszFileName)</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">HDIB hDIB;</p>
    <p ALIGN="JUSTIFY">CFile file;</p>
    <p ALIGN="JUSTIFY">CFileException fe;</p>
    <p ALIGN="JUSTIFY">if (!file.Open(lpszFileName, CFile::modeRead|CFile::shareDenyWrite, 
    &amp;fe))</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">AfxMessageBox(fe.m_cause);</p>
    <p ALIGN="JUSTIFY">return FALSE;</p>
    <p ALIGN="JUSTIFY">}</p>
    <p ALIGN="JUSTIFY">TRY</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">hDIB = ::ReadDIBFile(file);</p>
    <p ALIGN="JUSTIFY">}</p>
    <p ALIGN="JUSTIFY">CATCH (CFileException, eLoad)</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">file.Abort(); </p>
    <p ALIGN="JUSTIFY">return FALSE;</p>
    <p ALIGN="JUSTIFY">}</p>
    <p ALIGN="JUSTIFY">END_CATCH</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">DeleteDIB(); //</font><font SIZE="3">清除旧位图</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">m_hDIB=hDIB;</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">m_palDIB = new CPalette;</p>
    <p ALIGN="JUSTIFY">if (::CreateDIBPalette(m_hDIB, m_palDIB) == NULL)</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">// DIB</font><font SIZE="3">有可能没有调色板</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">delete m_palDIB;</p>
    <p ALIGN="JUSTIFY">m_palDIB = NULL;</p>
    <p ALIGN="JUSTIFY">}</p>
    <p ALIGN="JUSTIFY">return TRUE;</p>
    <p ALIGN="JUSTIFY">}</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">//</font><font SIZE="3">从资源中载入</font><font FACE="Times New Roman" SIZE="3">DIB</p>
    <p ALIGN="JUSTIFY">BOOL CDib::LoadFromResource(UINT nID)</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">HINSTANCE hResInst = AfxGetResourceHandle();</p>
    <p ALIGN="JUSTIFY">HRSRC hFindRes;</p>
    <p ALIGN="JUSTIFY">HDIB hDIB;</p>
    <p ALIGN="JUSTIFY">LPSTR pDIB;</p>

⌨️ 快捷键说明

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