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

📄 01_9_13_21.asp.html

📁 有用的VC教程,包括编程思想编程技巧程序效率等方面的指导
💻 HTML
📖 第 1 页 / 共 4 页
字号:
  }</td></tr></table><table width=100% ><tr><td class=a14>
  void FlyWin::OnDestroy()</td></tr></table><table width=100% ><tr><td class=a14>
  {</td></tr></table><table width=100% ><tr><td class=a14>
   DirectDrawWin::OnDestroy();</td></tr></table><table width=100% ><tr><td class=a14>
   // TODO: Add your message handler code here</td></tr></table><table width=100% ><tr><td class=a14>
   KillTimer(1); //取消定时器</td></tr></table><table width=100% ><tr><td class=a14>
  }</td></tr></table><table width=100% ><tr><td class=a14>
  void FlyWin::CopySurface(LPDIRECTDRAWSURFACE ts,</td></tr></table><table width=100% ><tr><td class=a14>
   LPDIRECTDRAWSURFACE ss,</td></tr></table><table width=100% ><tr><td class=a14>
   int x,int y)</td></tr></table><table width=100% ><tr><td class=a14>
  {</td></tr></table><table width=100% ><tr><td class=a14>
   if(!ts || !ss ) return;</td></tr></table><table width=100% ><tr><td class=a14>
   DDSURFACEDESC tdesc,sdesc;</td></tr></table><table width=100% ><tr><td class=a14>
   //初始化sdesc,tdesc为零</td></tr></table><table width=100% ><tr><td class=a14>
   ZeroMemory(&sdesc,sizeof(sdesc));</td></tr></table><table width=100% ><tr><td class=a14>
   ZeroMemory(&tdesc,sizeof(tdesc));</td></tr></table><table width=100% ><tr><td class=a14>
   sdesc.dwSize=sizeof(sdesc);</td></tr></table><table width=100% ><tr><td class=a14>
   tdesc.dwSize=sizeof(tdesc);</td></tr></table><table width=100% ><tr><td class=a14>
   //得到源表面ss,目标表面ts的描述信息</td></tr></table><table width=100% ><tr><td class=a14>
   HRESULT r=ss&rarr;GetSurfaceDesc(&sdesc);</td></tr></table><table width=100% ><tr><td class=a14>
   if(r!=DD_OK) return;</td></tr></table><table width=100% ><tr><td class=a14>
   r=ts&rarr;GetSurfaceDesc(&tdesc);</td></tr></table><table width=100% ><tr><td class=a14>
   if(r!=DD_OK) return;</td></tr></table><table width=100% ><tr><td class=a14>
   //定义源表面上的矩形区域,大小大等于目标表面的面积</td></tr></table><table width=100% ><tr><td class=a14>
   CRect rc(x,y,x+tdesc.dwWidth,y+tdesc.dwHeight);</td></tr></table><table width=100% ><tr><td class=a14>
   //超界处理</td></tr></table><table width=100% ><tr><td class=a14>
   if(x+tdesc.dwWidth>(int)sdesc.dwWidth) return;</td></tr></table><table width=100% ><tr><td class=a14>
   if(y+tdesc.dwHeight>(int)sdesc.dwHeight) return;</td></tr></table><table width=100% ><tr><td class=a14>
   //拷贝源表面ss到目标表面ts</td></tr></table><table width=100% ><tr><td class=a14>
   r=ts&rarr;BltFast(0,0,ss,&rc, DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);</td></tr></table><table width=100% ><tr><td class=a14>
   if(r!=DD_OK) return;</td></tr></table><table width=100% ><tr><td class=a14>
  }</td></tr></table><table width=100% ><tr><td class=a14>
  void FlyWin::SplitSurface(LPDIRECTDRAWSURFACE ts,</td></tr></table><table width=100% ><tr><td class=a14>
   LPDIRECTDRAWSURFACE ss,</td></tr></table><table width=100% ><tr><td class=a14>
   CRect& srcc,</td></tr></table><table width=100% ><tr><td class=a14>
   int x,</td></tr></table><table width=100% ><tr><td class=a14>
   int y)</td></tr></table><table width=100% ><tr><td class=a14>
  {</td></tr></table><table width=100% ><tr><td class=a14>
   if(!ts||!ss) return;</td></tr></table><table width=100% ><tr><td class=a14>
   DDSURFACEDESC tdesc,sdesc;</td></tr></table><table width=100% ><tr><td class=a14>
   ZeroMemory(&sdesc,sizeof(sdesc));</td></tr></table><table width=100% ><tr><td class=a14>
   ZeroMemory(&tdesc,sizeof(tdesc));</td></tr></table><table width=100% ><tr><td class=a14>
   sdesc.dwSize=sizeof(sdesc);</td></tr></table><table width=100% ><tr><td class=a14>
   tdesc.dwSize=sizeof(tdesc);</td></tr></table><table width=100% ><tr><td class=a14>
   HRESULT r=ts&rarr;GetSurfaceDesc(&tdesc);</td></tr></table><table width=100% ><tr><td class=a14>
   if(r!=DD_OK) return;</td></tr></table><table width=100% ><tr><td class=a14>
   r=ss&rarr;GetSurfaceDesc(&sdesc);</td></tr></table><table width=100% ><tr><td class=a14>
   if(r!=DD_OK) return;</td></tr></table><table width=100% ><tr><td class=a14>
   //超界处理</td></tr></table><table width=100% ><tr><td class=a14>
   if(x+srcc.Width()>(int)tdesc.dwWidth) return;</td></tr></table><table width=100% ><tr><td class=a14>
   if(y+srcc.Height()>(int)tdesc.dwHeight) return;</td></tr></table><table width=100% ><tr><td class=a14>
   //把源表面srcc的矩形区域拷贝到目标表面左上角坐标为(x,y)处</td></tr></table><table width=100% ><tr><td class=a14>
   r=ts&rarr;BltFast(x,y,ss,&srcc,</td></tr></table><table width=100% ><tr><td class=a14>
   DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT); </td></tr></table><table width=100% ><tr><td class=a14>
   if(r!=DD_OK) return;</td></tr></table><table width=100% ><tr><td class=a14>
  }</td></tr></table><table width=100% ><tr>
      <td class=a14> DDSURFACEDESC为表面描述结构,用以保存表面的所有信息,它的成员变量dwSize为结构的大小而且必须要被初始化;dwHeight为表面的高度;dwWidth为表面的宽度。用函数GetSurfaceDesc()可以获取上述描述信息。 
      </td>
    </tr></table><table width=100% ><tr>
      <td class=a14> DirectDraw首先调用CreateCustomSurface()函数,我们将在这个函数中创建和准备程序所用到的表面。DrawSence()函数负责更新屏幕,因此我们用它来显示背景画面。我们主要的工作都在OnTimer()函数里,首先判断当前子画面为4帧子画面中的哪一帧,然后进行页面翻转、显示子画面和复制背景区域等操作。</td>
    </tr></table><table width=100% ><tr>
      <td class=a14> BltFast()函数用于表面之间的拷贝,它的前两个参数指出blt的目标表面位置,第三个参数是指向源表面的指针,第四个参数是源表面上被拷贝的矩形区域,最后的参数是DDBLTFAST_SRCCOLORKEY和DDBLTFAST_WAIT,第一个标志用来激活源表面的色彩键码;第二个标志表示只有结束blt操作,BltFast()函数才返回。</td>
    </tr></table><table width=100% ><tr>
      <td class=a14> Flip()函数用于页面翻转操作,使backsurf表面的内容可见。它有两个参数。第一个参数是个表面指针,它在用来翻转有多个后备缓冲区的表面时才有用;第二个参数是DDFLIP_WA</td>
    </tr></table><table width=100% ><tr>
      <td class=a14> IT标志,用来指示函数只有在表面完成之后才能返回。</td>
    </tr></table><table width=100% ><tr>
      <td class=a14> 当程序运行时,一个表面所在的内存可能会被另一个应用程序所占用,这形成了&ldquo;表面丢失&rdquo;。这时DirectDraw会调用RestoreSurface()函数来恢复丢失的表面。但是,如果你的显卡不是老掉牙了,这种情况一般是不会发生的。所以这里我只对两个主要表面bksurf、flysurf进行了恢复处理,而不再管其它的表面。</td>
    </tr></table><table width=100% ><tr>
      <td class=a14> 另外,函数SelectDriver()和SelectInitialDisplayMode()是AppWizard自动创建的。SelectDriver()选择一个显示驱动程序,SelectInitialDisplayMode()选择一个初始显示模式。</td>
    </tr></table><table width=100% ><tr>
      <td class=a14> <b>三、结束语</b></td>
    </tr></table><table width=100% ><tr>
      <td class=a14> 话已至此,你对DirectDraw编程应有一个大致的了解了吧!用DirectDraw编程其实很简单,说白了其实就是一句话:&ldquo;几个表面之间拷来拷去&rdquo;。只不过这其间可是大有文章可作的哟!</td>
    </tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr>
</table><br>
<style>.a1{font-size:1}</style>
<table width=100% ><tr><td align=right>(网页编辑:<a href='mailto:liu_yang@ccw.com.cn'>风之翼</a>)</td></tr></table>
</td><td class=a1 bgcolor=#f46240>&nbsp;</td>
<td valign=top width=138 align=right><table width=98% ><tr><td>
<form action='/app/gsearch1.asp' name=pdn><table width=100% ><tr><td>应用与方案
频道全文检索</td></tr>
<tr><td><input type="text" name="textfile" size=15 value=频道内检索 onfocus="this.value=''">
	<input border=0 src="../../../../../images/jian.gif" name="I1" type="image" align=absmiddle>
</td></tr>
</table>
</form>
<form name=srch action="/search/which.asp" method=post onsubmit="JavaScript:return chk()">
<table width=100% >
  <tr><td><select size="1" name="func">
  <option selected value="2">主题检索</option>
  <option value="1">周报全文检索</option>
  <option value="3">模糊词检索</option>
</select></td></tr>
  <tr><td><input type="text" name="SrchStr" size=15 value="输入待检索的词"
  onfocus="this.value=''">
  <input src="../../../../../images/jian.gif" name="I1" type="image" align="absMiddle" border=0>
  </td></tr>
</table>
<script language="JavaScript">
function chk()
{if (!document.srch.SrchStr.value){
alert("请输入需检索的词!");	
document.srch.SrchStr.focus();
return false;
}
else{if (document.srch.SrchStr.value.length>30){
alert("检索的词请不要超过30个字符!");
document.srch.SrchStr.focus();
return false;
}
}
}
</script></form>
<table width=100% ><tr><td class=f colspan=2><b>相关文章</b></td></tr>
<tr><td valign=top><IMG SRC=../../../../../img2/jiao.gif></td><td><a href='01_9_13_20.asp.html'>在对话框中动态显示位图</a></td></tr>
<tr><td valign=top><IMG SRC=../../../../../img2/jiao.gif></td><td><a href='01_9_13_19.asp.html'>在VC中自建操作BMP位图文件的类</a></td></tr>
<tr><td valign=top><IMG SRC=../../../../../img2/jiao.gif></td><td><a href='01_9_13_18.asp.html'>深入浅出屏幕保护程序编程</a></td></tr>
<tr><td valign=top><IMG SRC=../../../../../img2/jiao.gif></td><td><a href='01_9_13_17.asp.html'>自己动手制作一款简洁实用的图片浏览器</a></td></tr>
<tr><td valign=top><IMG SRC=../../../../../img2/jiao.gif></td><td><a href='01_9_13_16.asp.html'>用VC进行屏幕截取编程</a></td></tr>
</table>
</td></tr></table></td></tr></table><br>
<table align=center width=680><tr><td align=right>
<form name=mail method=post action='/pub/subMail.asp' onsubmit='JavaScript: return chkField(this)'>
<INPUT type='hidden' name='rec' value='24113'>
您的姓名:<INPUT type="text" name=myName size=10>&nbsp;
您朋友的E-mail:<INPUT type="text" name=friendMail size=10>&nbsp;
<INPUT type="submit" value="推荐给好友">
</form>
</td></tr>
<tr><td align=right>
<b>[<a href="javascript:window.close()">关闭窗口</a>]</b>
</td></tr>
</table>
<script language="javascript">
function chkField(fmObj)
{if (!fmObj.friendMail.value){
	alert("请输入您朋友的E-mail!");
	fmObj.friendMail.focus();
	return false;
}
	return true;
}
</script>
<table align=center width=680>
<tr><td><hr size=1 width=660 color=#f46240></td></tr>
</table><br>
<p align=center>Copyright(C) ccw.com.cn,All rights reserved</p>
<p align=center><b>中国计算机世界出版服务公司版权所有</b></p>

⌨️ 快捷键说明

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