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

📄 subject_63248.htm

📁 vc
💻 HTM
字号:
<p>
序号:63248 发表者:小羽 发表日期:2003-12-02 15:38:03
<br>主题:使用overlay的页面的时候如何进行裁减?
<br>内容:int InitDDrawA(int nSrcWidth, int nSrcHeight, int nDstWidth,int nDstHeight)<BR>{ <BR> DDSURFACEDESC ddsd; <BR>&nbsp;&nbsp;&nbsp;&nbsp;int ret;<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if ( DirectDrawCreate( NULL, &amp;lpDD, NULL ) != DD_OK ) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(GetActiveWindow(),&#34;error&#34;,&#34;can not create DDraw&#34;,MB_OK);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if ( lpDD-&gt;SetCooperativeLevel( NULL,DDSCL_NORMAL ) != DD_OK)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1;<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(&amp;ddsd,sizeof(ddsd));<BR>&nbsp;&nbsp;&nbsp;&nbsp;ddsd.dwSize = sizeof( ddsd );<BR>&nbsp;&nbsp;&nbsp;&nbsp;ddsd.dwFlags = DDSD_CAPS;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ret=lpDD-&gt;CreateSurface( &amp;ddsd, &amp;lpDDSPrimary, NULL );<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (&nbsp;&nbsp;ret != DD_OK) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;can not create primary surface!&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;DDPIXELFORMAT ddpfOverlay={ sizeof(ddpfOverlay), DDPF_FOURCC,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAKEFOURCC('U','Y','V','Y'), 16, 0, 0, 0};<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;ddsd.dwSize = sizeof(ddsd); <BR>&nbsp;&nbsp;&nbsp;&nbsp;ddsd.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ddsd.dwHeight =&nbsp;&nbsp;&nbsp;&nbsp;nSrcHeight;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ddsd.dwWidth = nSrcWidth;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ddsd.ddpfPixelFormat = ddpfOverlay;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ddsd.ddsCaps.dwCaps = DDSCAPS_OVERLAY|DDSCAPS_VIDEOMEMORY;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ret = lpDD-&gt;CreateSurface( &amp;ddsd, &amp;lpDDSOverlay, NULL );<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (ret!= DD_OK) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;error create overlay surface&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;lpDD-&gt;CreateClipper(0, &amp;lpClipper, NULL);//创建裁减器<BR>&nbsp;&nbsp;&nbsp;&nbsp;lpClipper-&gt;SetHWnd(0, GetActiveWindow());//裁减器与窗口句柄连接<BR>&nbsp;&nbsp;&nbsp;&nbsp;lpDDSPrimary-&gt;SetClipper(lpClipper);//裁减器与主页面连接。<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>} <BR><BR>覆盖页面的裁减只有在覆盖硬件可以支持,并且目标关键色没有被激活的情况下才能使用。这个条件,我的硬件支持覆盖页面,程序里也没有涉及到关键色。可是运行结果发现裁减器并没有进行任何裁减,这是为什么呢?<BR><BR><BR>--------------------------------------------------------------------------------<BR>&nbsp;&nbsp;&nbsp;&nbsp;程序2003-12-2 15:39:59

⌨️ 快捷键说明

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