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

📄 surface.htm

📁 这是用C++实现语音识别的一个插件。大家一起分享一下!
💻 HTM
📖 第 1 页 / 共 5 页
字号:
  <b><p></font><a name="创建页面"><font FACE="黑体" color="#FF8000" size="4">创建页面</font></a></b><font
  FACE="宋体" SIZE="3"></p>
  <font SIZE="3"><p align="right"></font><a href="#目录">返回目录</a></p>
</blockquote>
</font>

<blockquote>
  <font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">DirectDrawSurface</font><font FACE="宋体"
  SIZE="3">对象代表了一个页面,调用</font><font FACE="Arial" SIZE="3">IDirectDraw2::CreateSurface</font><font
  FACE="宋体" SIZE="3">函数可以创建一个</font><font FACE="Arial" SIZE="3">DirectDrawSurface</font><font
  FACE="宋体" SIZE="3">对象,也可以同时创建由若干个页面组成的复杂页面结构,最典型的就是换页链。调用该函数时,需要提供要创建的页面的描述,如页面的尺寸、是单个页面还是复杂页面、所采用的像素格式(如果页面将不使用索引调色板)等等。所有这些描述信息存储在一个</font><font
  FACE="Arial" SIZE="3">DDSURFACEDESC</font><font FACE="宋体" SIZE="3">结构中,在调用</font><font
  FACE="Arial" SIZE="3">CreateSurface</font><font FACE="宋体" SIZE="3">函数时必须提供。如果硬件不支持所请求的页面特性,或是要创建的页面已经存在,则该函数返回一个错误。</p>
  <p ALIGN="JUSTIFY">要创建单个的页面或若干个页面其实是一项并不复杂的工作,只需要少许的几行代码即可。主要有以下四种类型的页面可以被创建:</p>
  <ol>
    <li>创建主页面</li>
    <li>创建离屏页面</li>
    <li>创建复杂页面和换页链</li>
    <li>创建超宽页面</li>
  </ol>
  <p ALIGN="JUSTIFY">在缺省的情况下,</font><font FACE="Arial" SIZE="3">DirectDraw</font><font
  FACE="宋体" SIZE="3">试图在本地的视频</font><font FACE="Arial" SIZE="3">RAM</font><font
  FACE="宋体" SIZE="3">中创建页面。如果恰好没有足够的本地(</font><font
  FACE="Arial" SIZE="3">local</font><font FACE="宋体" SIZE="3">)视频</font><font
  FACE="Arial" SIZE="3">RAM</font><font FACE="宋体" SIZE="3">来容纳要创建的页面的话,</font><font
  FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">将试图使用非本地(</font><font
  FACE="Arial" SIZE="3">non-local</font><font FACE="宋体" SIZE="3">)的视频</font><font
  FACE="Arial" SIZE="3">RAM</font><font FACE="宋体" SIZE="3">(在某些装备了</font><font
  FACE="Arial" SIZE="3">AGP</font><font FACE="宋体" SIZE="3">设备的系统上),如果仍旧无法实现,那么</font><font
  FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">将只能将其创建于系统</font><font
  FACE="Arial" SIZE="3">RAM</font><font FACE="宋体" SIZE="3">中。当然,在调用</font><font
  FACE="Arial" SIZE="3">CreateSurface</font><font FACE="宋体" SIZE="3">函数时,你也可以在相关的</font><font
  FACE="Arial" SIZE="3">DDSCAPS</font><font FACE="宋体" SIZE="3">结构中指定适当的标志符向</font><font
  FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">明确的表明你想将页面置于哪种类型的内存中。</p>
  </font><hr>
</blockquote>

<blockquote>
  <blockquote>
    <font FACE="黑体" SIZE="3"><b><p><a name="创建主页面">创建主页面</a></p>
    </b></font>
  </blockquote>
  <font FACE="宋体" SIZE="3"><font SIZE="3"><p align="right"></font><a href="#目录">返回目录</a></p>
  </font><blockquote>
    <font FACE="宋体" SIZE="3"><p ALIGN="JUSTIFY">主页面(<font FACE="Arial" SIZE="3">primary 
    surface</font>)代表的是在显示器的当前可见屏幕,它在页面描述中具有<font
    FACE="Arial" SIZE="3">PRIMARYSURFACE</font>标志符。对于每一个<font FACE="Arial"
    SIZE="3">DirectDraw</font>对象来说,你只可能拥有一个主页面。</p>
    <p ALIGN="JUSTIFY">主页面对用户来说是可见的。当你创建一个主页面时,实际上,你创建的这个<font
    FACE="Arial" SIZE="3">DirectDrawSurface</font>对象,访问的是由<font FACE="Arial"
    SIZE="3">GDI</font>正在使用的已经可见的页面(即显示屏幕),主页面的大小以及像素格式暗中符合当前显示器的显示模式。因此,尽管创建所有其它类型的页面要求填充<font
    FACE="Arial" SIZE="3">DDSURFACEDESC</font>结构的<font FACE="Arial" SIZE="3">dwHeight </font>和<font
    SIZE="3"> </font><font FACE="Arial" SIZE="3">dwWidth</font>值以及像素格式,而创建主页面时一定不能自己指定它们,甚至你知道它们与当前屏幕是同样大小,否则,<font
    FACE="Arial" SIZE="3">CreateSurface</font>函数将调用失败,并且返回<font
    FACE="Arial" SIZE="3">DDERR_INVALIDPARAMS</font>。</p>
    <p ALIGN="JUSTIFY">要创建一个主页面,<font FACE="Arial" SIZE="3">DDSURFACEDESC </font>结构(以下为<font
    FACE="Arial" SIZE="3">ddsd )</font>的成员是如下填充的。</p>
    <font FACE="宋体" SIZE="1"><p
    style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    color="#FFFFFF">DDSURFACEDESC ddsd; </font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">ddsd.dwSize = sizeof(ddsd); </font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">//告诉DirectDraw哪些成员是可用的。 </font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">ddsd.dwFlags = DDSD_CAPS; </font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">//请求一个主页面</font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; </font></p>
    </font><font FACE="宋体" size="4"><p ALIGN="JUSTIFY"></font><font FACE="宋体" SIZE="3"><br>
    然后,就可以调用<font FACE="Arial" SIZE="3">CreateSurface</font>函数并且提供了这个页面描述,如果函数调用成功,可以返回一个指向主页面的指针。如果你想要得到关于这个主页面的尺寸和像素格式信息,应该调用<font
    FACE="Arial" SIZE="3">IDirectDrawSurface3::GetSurfaceDesc</font>函数。相关信息,请参阅“显示模式”。</p>
    <hr>
    <font FACE="黑体" SIZE="3"><b><p><a name="创建离屏页面">创建离屏页面</a></p>
    </b></font><font SIZE="3"><p align="right"></font><a href="#目录">返回目录</a></p>
    <p ALIGN="JUSTIFY">离屏页面(<font FACE="Arial" SIZE="3">off-screen surface</font>),通常被用来存储位图,用于后来的将位图图象<font
    FACE="Arial" SIZE="3">Blit</font>到主页面或后台缓存上。因为离屏页面是一个相互独立的页面,不与任何对象产生隶属关系,所以你必须指定你所要创建的离屏页面的大小,这是通过在<font
    FACE="Arial" SIZE="3">DDSURFACEDESC</font>结构中包含进<font FACE="Arial" SIZE="3">DDSC_WIDTH</font>和<font
    FACE="Arial" SIZE="3">DDSD_HEIGHT</font>标志符,并且给<font FACE="Arial" SIZE="3">dwWidth</font>和<font
    FACE="Arial" SIZE="3">dwHeight</font>成员填充正确的参数完成的。除此之外,你还必须包含进<font
    FACE="Arial" SIZE="3">DDSCAPS_OFFSCREENPLAIN</font>标志符以表明创建的是一离屏页面。</p>
    <p ALIGN="JUSTIFY">在缺省的情况下,<font FACE="Arial" SIZE="3">DirectDraw</font>将会在视频<font
    FACE="Arial" SIZE="3">RAM</font>中创建离屏页面,除非视频<font FACE="Arial"
    SIZE="3">RAM</font>容量不够,那么,<font FACE="Arial" SIZE="3">DirectDraw</font>将会把离屏页面置于系统<font
    FACE="Arial" SIZE="3">RAM</font>中。你可以在<font FACE="Arial" SIZE="3">DDSURFACEDESC</font>结构的<font
    FACE="Arial" SIZE="3">dwCaps</font>成员中包含进<font FACE="Arial" SIZE="3">DDSCAPS_SYSTEMMEMORY</font>或<font
    FACE="Arial" SIZE="3">DDSCAPS_VIDEOMEMORY</font>标志符,以明确的表明你希望将页面置于何处。如果<font
    FACE="Arial" SIZE="3">DirectDraw</font>不能满足你所提供的要求,<font
    FACE="Arial" SIZE="3">CreateSurface</font>函数将调用失败,并且返回错误。</p>
    <p ALIGN="JUSTIFY">下面面的例程展示了要创建一个离屏页面,<font
    FACE="Arial" SIZE="3">DDSURFACEDESC </font>结构(以下为<font FACE="Arial" SIZE="3">ddsd 
    )</font>的成员是如何填充的。</p>
    <font FACE="宋体" SIZE="1"><p
    style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    color="#FFFFFF">DDSURFACEDESC ddsd; </font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">ddsd.dwSize = sizeof(ddsd); </font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">//告诉DirectDraw哪些成员是可用的</font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH; </font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">//请求一个离屏页面,大小为100x100</font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">//(这假定了要创建的离屏页面的像素格式将符合主页面的像素格式)</font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; </font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">dwHeight = 100; </font></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"><font
    color="#FFFFFF">dwWidth = 100; </font></p>
    </font><font FACE="宋体" size="4"><p ALIGN="JUSTIFY"></font><font FACE="宋体" SIZE="3"><br>
    除此之外,你也可以创建一个页面的像素格式与主页面不同的离屏页面。然而,在这种情况下,有一个缺点棗该离屏页面将只能被限制于系统<font
    FACE="Arial" SIZE="3">RAM</font>中。下面的例程片段展示了如何准备<font
    FACE="Arial" SIZE="3">DDSURFACEDESC</font>结构的各成员,以用于创建一个<font
    FACE="Arial" SIZE="3">8</font>位的调色板式页面(假定当前的显示模式不是<font
    FACE="Arial" SIZE="3">8</font>位格式)。</p>
    <font FACE="宋体" SIZE="1"><p
    style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font></font><font
    FACE="宋体" color="#FFFFFF" size="3">ZeroMemory(&amp;ddsd, sizeof(ddsd));</font><font
    FACE="宋体" SIZE="3"></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    FACE="宋体" color="#FFFFFF" size="3">ddsd.dwSize = sizeof(ddsd);</font><font
    FACE="宋体" SIZE="3"></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    FACE="宋体" color="#FFFFFF" size="3">ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH 
    | DDSD_PIXELFORMAT;</font><font FACE="宋体" SIZE="3"></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    FACE="宋体" color="#FFFFFF" size="3">ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | 
    DDSCAPS_SYSTEMMEMORY;</font><font FACE="宋体" SIZE="3"></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    FACE="宋体" color="#FFFFFF" size="3">ddsd.dwHeight = 100;</font><font FACE="宋体"
    SIZE="3"></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    FACE="宋体" color="#FFFFFF" size="3">ddsd.dwWidth = 100;</font><font FACE="宋体"
    SIZE="3"></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    FACE="宋体" color="#FFFFFF" size="3">ddsd.ddpfPixelFormat.dwSize = 
    sizeof(DDPIXELFORMAT);</font><font FACE="宋体" SIZE="3"></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    FACE="宋体" color="#FFFFFF" size="3">ddsd.ddpfPixelFormat.dwFlags = DDPF_RGB | 
    DDPF_PALETTEINDEXED8;</font><font FACE="宋体" SIZE="3"></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    FACE="宋体" color="#FFFFFF" size="3">// 设置页面的位深度为8,但是绝对不要设置任何RGB 
    mask值,</font><font FACE="宋体" SIZE="3"></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    FACE="宋体" color="#FFFFFF" size="3">// 
    因为对调色板式页面来说,该值一定是0。</font><font FACE="宋体" SIZE="3"></p>
    <p style="background-color: rgb(0,0,128); margin-top: 0; margin-bottom: 0; padding-top: 2"></font><font
    FACE="宋体" color="#FFFFFF" size="3">ddsd.ddpfPixelFormat.dwRGBBitCount = 8;</font><font

⌨️ 快捷键说明

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